2010-07-30 2 views
3

Я закодировал 3d-рельефный двигатель с упрощенным двигателем модели на нем.Текстурирование модели

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

Однако, при текстурировании моей модели я немного застрял.

Я использую пользовательский формат модели, так как ответы использования блендер или использования 3ds не будет полезным.

Причина этого заключается в том, что я начал это хобби-проект, чтобы научить себя OpenGL программирования, и так как я имел модели, готовые от действительно старого программного рендеринга Turbo Pascal мой друг написал в 1999 году, я продолжал используя их.

Мои вопросы:

Есть ли хорошо известный алгоритм для генерации координаты текстуры для треугольников моя модель состоит из? Если нет, какую стратегию я должен придерживаться?

ответ

4

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

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

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

Аналогично легко, но часто лучше для таких вещей, как персонажи, проецировать все передние полигоны перед их координатами x и y и аналогично для обратных полигонов, за исключением того, что вы их смещаете, поэтому два набора находятся рядом друг с другом ,

Идём дальше, вы также можете попробовать цилиндрические выступы. Каждый из этих проекций будет хорошо работать для определенных видов фигур. Но, как правило, они будут намного хуже, чем надлежащие УФ-разлочки, такие как Blender и т. Д.

1

Вы также можете написать немного импортера Блендера и соответствующего экспортера. Каждый должен занимать не более 100 строк Python (ваш формат модель кажется простым), а также алгоритмы картографирования автоматического уф являются много сложнее, чем в 2 раза 100 LOC

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