Текстурирование модели - PullRequest
3 голосов
/ 30 июля 2010

Я кодировал трехмерный движок местности с упрощенным модельным движком поверх него.

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

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

Я использую нестандартный формат модели, поэтому ответы типа use blender или use 3ds не помогут.

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

Мои вопросы:

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

Ответы [ 2 ]

4 голосов
/ 30 июля 2010

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

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

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

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

1 голос
/ 30 июля 2010

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

.

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

...