3D модели: вершина с разным UV

#3d #3d-modelling

#3D #3d-моделирование

Вопрос:

Я пишу скрипт на Python, который переводит файл 3D-модели из одного формата в другой и заметил проблему при сохранении вершин. Похоже, что одна и та же вершина может иметь разные UV-значения на разных гранях.

При написании скрипта я предполагал, что все вершины будут иметь уникальные UV, но теперь это кажется ложным предположением.

Существует ли общий способ хранения граней и вершин?

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

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

Ответ №1:

Если вершина принадлежит общему краю между двумя гранями, вам необходимо сохранить координаты текстуры обеих граней. Обычно я храню эту информацию на уровне треугольника, а не на уровне вершины.

Комментарии:

1. Я боялся, что это так, поскольку я заметил, что иногда вершины повторяются и имеют одинаковые UV, поэтому я не хотел хранить слишком много дубликатов. В любом случае, я изменил свою схему хранения, чтобы помещать «номера граней» в каждую сетку, а затем сохранять информацию о вершинах для каждой грани.