UV-отображение индексов BufferGeometrys в Three.js

У меня проблемы с UV-картографированием каждой стороны куба. Куб был создан как BufferGeometry, где каждая сторона представляет собой повернутую копию одной стороны (своего рода рабочий шаблон) и соответственно повернута с помощью четверти. UV также копируются. Я пропущу все координаты вершин, которые я видел раньше, и буду полагаться на индексы.

Это оставляет мне в общей сложности 8 вершин и 12 граней. Но я думаю, что мне не хватает вершин, когда я должен установить все свои UV. Как видно на скриншоте, я «правильно» нанес на карту каждую сторону куба. Но верха и низа не хватает. Я не знаю, как установить верхнюю и нижнюю грани UV вершины.

Могу ли я каким-то образом применить несколько UV на одну и ту же вершину в зависимости от того, в какой грани она используется, или я полностью потерял сюжет?

Я мог бы решить проблему, применив 6 PlaneBufferGeometry, но тогда у меня осталось бы 4*6=24 вершины. Это намного больше, чем 8.

Я не смог понять это. Либо я совершенно неправильно понял, как это работает, либо то, что я пытаюсь сделать, невозможно с учетом моих ограничений.

введите здесь описание изображения


person Hoxer    schedule 25.02.2018    source источник
comment
Я попытался вставить изображение прямо в сообщение, чтобы избежать ненужных кликов. Я не мог понять, как или мне не разрешили. Приносим извинения за доставленные неудобства.   -  person Hoxer    schedule 26.02.2018


Ответы (1)


С BufferGeometry вершины могут быть повторно использованы только в том случае, если все атрибуты для этой вершины совпадают. Так как каждый угол куба имеет 3 перпендикуляра normals, должно быть 3 копии этой вершины.

Если у вас есть uvs, это та же проблема - вершины должны быть продублированы, если uvs разные.

Исследование BoxBufferGeometry, которое реализовано как "индексированная-BufferGeometry".

три.js р.90

person WestLangley    schedule 25.02.2018
comment
Спасибо. Насколько я понимаю, BoxBufferGeometry нужно как минимум 12 вершин. Удаление последних 4 из 12 в моем примере не поможет. Однако это все еще намного лучше, чем исходные 24, которые я начал. Кроме того, BoxGeometry.js дает хорошее представление о том, как достичь моей цели. - person Hoxer; 26.02.2018
comment
Чтобы добавить, они называются УФ-расколами, УФ-островами, жесткими краями. - person pailhead; 27.02.2018
comment
Я думаю, вы можете развернуть коробку на 14 uv, если развернете ее крестом. Тем не менее, чтобы получить правильное затенение куба, вам нужно 6 x 4 вершины, обойти это невозможно. - person pailhead; 27.02.2018