Сетка загрузчика объектов Threejs, по-видимому, имеет неправильный порядок вершин

#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, были правильно перевернуты, было решением моих проблем с рендерингом. Спасибо.