У меня есть простая CricleGeometry в сцене, и я дублирую ее вершины и создавая новые лица, чтобы имитировать экструзию. После создания новых лиц я запускаю «computeFaceNormals()», но ориентация их чередуется. Как я могу обойти все лица наружу?Вычисление нормалей лица на вновь созданных лицах
Вот основная часть кода:
//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);
Что означает «three.js r.75»? – Soren
«r.75» - текущий [выпуск] (https://github.com/mrdoob/three.js/releases). – WestLangley
@WestLangley Ты имеешь в виду, когда я добавляю их к лицу, не так ли? – leota