#web #three.js #3d #modeling #vertex
Вопрос:
Я использую OBJLoader для загрузки файла OBJ в свою сцену.
По какой-то причине порядок вершин, похоже, не в порядке.
Вот фотография моей модели в блендере:
А вот фотография моей модели в трех:
Я уже видел подобные эффекты раньше с моделями, и это всегда было связано с упорядочением вершин, поэтому я предполагаю, что там что-то не так.
ОТРЕДАКТИРУЙТЕ, кстати, обратите внимание на треугольники, пересекающиеся над буквами там, где в Blender их нет. Я полагаю, что где-то может быть введено смещение в количестве вершин.. может быть.
Код:
const mtlLoader = new MTLLoader();
mtlLoader.load('./test.mtl',
(materials) => {
materials.preload();
const objLoader = new OBJLoader();
objLoader.setMaterials(materials);
objLoader.load(
'./test.obj',
(object) => {
scene.add(object);
},
(xhr) => {
console.log((xhr.loaded / xhr.total * 100) '% loaded');
},
(error) => {
console.log('An error happened');
}
);
},
(xhr) => {
console.log((xhr.loaded / xhr.total * 100) '% loaded');
},
(error) => {
console.log('An error happened');
}
)
Ответ №1:
По умолчанию, Three.js отображает только лицевую сторону треугольников. Похоже, что некоторые из ваших лиц перевернуты. Убедитесь, что вы рассчитали нормали в своем 3D-редакторе так, чтобы они указывали «наружу». Таким образом, когда вы экспортируете их, движок будет знать, в какую сторону должны быть обращены треугольники.
Кроме того, Three.js не отображает n-углов, и, похоже, в ваших письмах их много. Посмотрите на букву «U», это одна плоская плоскость. Убедитесь, что вы конвертируете в треугольники перед экспортом. Или, по крайней мере, преобразовать в квадроциклы, чтобы экспортер мог легко разделить их на три.
Комментарии:
1. Правильно — убедиться, что все лица, выходящие из SketchUp, были правильно перевернуты, было решением моих проблем с рендерингом. Спасибо.