[英]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.