2015-12-02 2 views
0

Lightmaps живут независимо от других текстур, не так ли?Lightmaps in 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 требуют второго набора УФ. Одним из решений является добавление второго набора UVs путем дублирования первого набора.

Для 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