Как мне нанести текстуру на кривую поверхность? - PullRequest
6 голосов
/ 17 октября 2010

Я пытаюсь создать 3d-игру, используя OpenGL.У меня очень простой мир, и сейчас я работаю над персонажем.Я хочу нанести текстуру на голову овальной формы.Как мне сделать сопоставление?Я знаю, как отобразить на плоскую поверхность.Мне интересно, можно ли использовать нормали, чтобы помочь, но я никогда не делал этого раньше, и когда я ищу в Google, мне не везет.используя Blender или Maya, если это имеет какое-либо значение.

1 Ответ

1 голос
/ 17 октября 2010

Я догадываюсь из твоего поста, что ты в порядке с геометрией?

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

В этом случае, я думаю, вероятно, ключ в том, как вы генерируете свою геометрию. Если вы делаете что-то вроде создания 8 колец из 16 точек, эффективно итерируя вокруг одного круга во внешнем цикле, а другой во внутреннем цикле, то вы можете одновременно выполнить итерации u и v, чтобы получить отображение. Вы получаете несколько многоугольников неправильного размера, и на полюсах становится проблематичным отображение, но область вокруг лица будет работать довольно хорошо.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...