光照贴图独立于其他纹理,对吧?
所以我必须设置第二组 UV。
我已使用第二组 UV 导出 JSON 对象并添加以下内容。
geometry.faceVertexUvs[0] = geometry.faceVertexUvs[1];
我没有得到任何工作结果。我缺少什么?也许有人可以告诉我一个方向。 Three.js r.73
loader.load("model.js", function(geometry){
geometry.faceVertexUvs[0] = geometry.faceVertexUvs[1];
var mesh = new THREE.Mesh( geometry, new THREE.MeshPhongMaterial( {
color: 0x777777,
lightMap: THREE.ImageUtils.loadTexture( "lightmap.png" ),
normalMap: THREE.ImageUtils.loadTexture( "normalmap.png" ),
specularMap: THREE.ImageUtils.loadTexture( "specularmap.png" )
}));
scene.add(mesh );
});
最佳答案
Three.js 中的光照贴图需要第二组 UV。一种解决方案是通过复制第一组 UV 来添加第二组 UV。
对于 THREE.Geometry
你可以这样做:
geometry.faceVertexUvs[ 1 ] = geometry.faceVertexUvs[ 0 ];
对于THREE.BufferGeometry
,使用此模式;
var uvs = geometry.attributes.uv.array;
geometry.addAttribute( 'uv2', new THREE.BufferAttribute( uvs, 2 ) );
三.js r.73
关于javascript - Three.js 中的光照贴图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34054388/