繁体   English   中英

在Three.js中获取彩色平面而不是纹理

[英]Getting colored plane surface instead of texture in Three.js

我正在尝试在对象上应用纹理。 但是我没有应用纹理,而是仅在对象上着色的平面表示如果我应用的木材纹理图像,则它只是采用棕色之类的纹理颜色而不是实际纹理。

基本代码如下:

var loader = new THREE.STLLoader();
var newMaterial = new THREE.MeshPhongMaterial( { color: colorValue, specular: 0xffffff, shininess: 100  } );

loader.load( './models/stl/binary/'+top, function ( newGeometry ) {

newMesh = new THREE.Mesh( newGeometry, newMaterial );

newMesh.position.set(  0,0.6, 0  );
newMesh.rotation.set(0,0.8,0);
newMesh.scale.set( 0.04, 0.04, 0.04 );

scene.add( newMesh );

我尝试以下应用纹理:

var newMaterial = new THREE.MeshPhongMaterial( { color: 0xffffff, specular: 0xffffff, shininess: 100, map: THREE.ImageUtils.loadTexture( "textures/table/lighttexture.jpg" ),
    side: THREE.DoubleSide } );
    newMaterial.map.minFilter = THREE.LinearFilter;

以上代码的结果相同,只是应用了纹理的颜色。

var texture = new THREE.TextureLoader().load( "textures/water.jpg" );
texture.wrapS = THREE.RepeatWrapping;
texture.wrapT = THREE.RepeatWrapping;
texture.repeat.set( 4, 4 );
                var newMaterial = new THREE.MeshPhongMaterial( { color: 0xffffff, specular: 0xffffff, shininess: 100, map: texture } );

在上面的代码上出现错误:

Uncaught TypeError: Cannot set property 'wrapS' of undefined

谁能告诉我,我该如何获得物体的原始纹理?

编辑

如下面的代码所示,纹理对于球形几何体正常工作。

            var sphereGeometry = new THREE.SphereGeometry(1, 10, 10);
            var mat = new THREE.MeshPhongMaterial();
            mat.map = new THREE.ImageUtils.loadTexture(
            "textures/table/lighttexture.jpg");
            mat.transparent = true;
            mat.side = THREE.DoubleSide;
            mat.depthWrite = false;
            mat.color = new THREE.Color(0xff0000);
            var sphere = new THREE.Mesh(sphereGeometry, mat);
            scene.add(sphere);

我怀疑您的几何图形没有正确的uvs,首先尝试纹理由三个生成的几何图形

geometry = new THREE.PlaneGeometry(100,100);

如果纹理显示正确,则表示您从stl加载的几何没有设置uvs或值不正确(如全零)

进入uvs使用

geometry.faceVertexUvs

用于几何

geometry.getAttribute("uv")

如果你有一个BufferGeometry

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM