2015-12-02 128 views
0

光照貼圖獨立於其他紋理生活,對嗎?因此我必須設置第二組UV。Three.js中的光照貼圖

我已經導出了我的JSON對象和第二組UV,並添加了以下內容。

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); 
}); 
+0

嘗試'geometry.faceVertexUvs [1] = geometry.faceVertexUvs [0];' – WestLangley

回答

2

three.js中的光照貼圖需要第二組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)); 

three.js所r.73