Чтобы узнать немного больше о пользовательской геометрии в three.js, я попытался адаптировать пример капсульной геометрии Пола Бурка. а>.
С моей пользовательской геометрией капсулы у меня в настоящее время есть две проблемы:
- Нормали средней грани не ориентированы должным образом.
- По бокам есть жесткий шов. (EDIT: исправлено путем преднамеренного вычисления нормалей лица. обновленный код в сути)
И, может быть, один бонусный вопрос, который не давал мне покоя:
- Какой может быть общая стратегия добавления петель вершин в этот средний сегмент?
В целом я очень доволен геометрией, но кто-нибудь может подсказать, как решить эти проблемы? Я чувствую, что нормальной проблемой в среднем сегменте должна быть ориентация лиц, и вот соответствующий фрагмент построения лица:
for(let i = 0; i <= N/2; i++){
for(let j = 0; j < N; j++){
let vec = new THREE.Vector4(
i * ( N + 1 ) + j ,
i * ( N + 1 ) + ( j + 1 ) ,
( i + 1 ) * ( N + 1 ) + ( j + 1 ) ,
( i + 1 ) * ( N + 1 ) + j
);
let face_1 = new THREE.Face3(vec.x,vec.y,vec.z);
let face_2 = new THREE.Face3(vec.x,vec.z,vec.w);
geometry.faces.push(face_1);
geometry.faces.push(face_2);
}
}