2016-04-01 2 views
1

У меня есть простая CricleGeometry в сцене, и я дублирую ее вершины и создавая новые лица, чтобы имитировать экструзию. После создания новых лиц я запускаю «computeFaceNormals()», но ориентация их чередуется. Как я могу обойти все лица наружу?Вычисление нормалей лица на вновь созданных лицах

Вот скриншот: enter image description here

Вот основная часть кода:

//geometry 
geometry = new THREE.CircleGeometry(100, 12); 

geometry.mergeVertices(); 

material = new THREE.MeshPhongMaterial({ color: 0xffa800 }); 


/////////////////////////////////////////////////////////////// 

//CREATE NEW FACES 

/////////////////////////////////////////////////////////////// 


var sideGeo = new THREE.Geometry(); 

//duplicate vertices 
for (var v = 0; v < geometry.vertices.length; v++) { 

    sideGeo.vertices.push(geometry.vertices[ v ].clone()); 
    sideGeo.vertices.push(geometry.vertices[ v ].clone()); 

} 

//translate every second vertex on Z by 10 
for (var v = 0; v < sideGeo.vertices.length; v += 2) { 

    sideGeo.vertices[ v ].z += 100; 

} 

//add them to faces 
for (var v = 0; v < sideGeo.vertices.length -2; v++) { 

    //vertices IDs 
    var a = v; 
    var b = v + 1; 
    var c = v + 2; 

    //add them to a face 
    var f = new THREE.Face3(a, b, c); 
    sideGeo.faces.push(f); 


} 

//merge with original geo and compute face normals 
geometry.merge(sideGeo); 

geometry.computeFaceNormals(); 


//mesh 
mesh = new THREE.Mesh(geometry, material); 

scene.add(mesh); 

ответ

2

При вызове Geometry.computeFaceNormals(), ориентация нормалей определяется обмоткой порядка вершин лица.

В three.js вам нужно указать свои вершины в порядке против часовой стрелки, если смотреть на лицевую сторону лица. В этом случае лицевая норма, рассчитанная computeFaceNormals(), укажет на вас.

three.js r.75

+0

Что означает «three.js r.75»? – Soren

+0

«r.75» - текущий [выпуск] (https://github.com/mrdoob/three.js/releases). – WestLangley

+0

@WestLangley Ты имеешь в виду, когда я добавляю их к лицу, не так ли? – leota

Смежные вопросы