проблемы с текстурной координатой в формате Obj - PullRequest
4 голосов
/ 16 октября 2011

насколько я знаю, координаты текстуры должны быть в диапазоне [0,1] но в этом файле obj как показано ниже, координаты текстуры кажутся в диапазоне [0,2]

vt 2.0000 2.0000 0.0000
vt 1.7500 2.0000 0.0000
vt 1.7500 1.9750 0.0000
vt 2.0000 1.9750 0.0000
vt 1.7500 1.9500 0.0000
vt 2.0000 1.9500 0.0000
vt 1.7500 1.9250 0.0000
vt 2.0000 1.9250 0.0000
vt 1.7500 1.9000 0.0000
vt 2.0000 1.9000 0.0000
vt 1.5000 2.0000 0.0000
vt 1.5000 1.9750 0.0000
vt 1.5000 1.9500 0.0000
vt 1.5000 1.9250 0.0000
vt 1.5000 1.9000 0.0000
vt 1.2500 2.0000 0.0000
vt 1.2500 1.9750 0.0000
vt 1.2500 1.9500 0.0000
vt 1.2500 1.9250 0.0000
vt 1.2500 1.9000 0.0000
vt 1.0000 2.0000 0.0000
vt 1.0000 1.9750 0.0000
vt 1.0000 1.9500 0.0000
vt 1.0000 1.9250 0.0000

Почему ординаты текстуры здесь могут быть больше 1? Кто-нибудь может мне это объяснить? Спасибо!

Вы видите, что текстура кажется странной enter image description here

1 Ответ

5 голосов
/ 16 октября 2011

Значения текстуры UV вне [0,1] должны быть мозаичными.

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

Вот соответствующая цитата из OpenGL redbook:

Вы можете назначить координаты текстуры вне диапазона [0,1] и сделать так, чтобы они либо зажимались, либо повторялись на карте текстуры.Например, с повторяющимися текстурами, если у вас есть большая плоскость с координатами текстуры, идущими от 0,0 до 10,0 в обоих направлениях, например, вы получите 100 копий текстуры, выложенных черепицей вместе на экране.Во время повторения целочисленная часть координат текстуры игнорируется, а копии карты текстуры располагаются на поверхности.Для большинства приложений, где текстура должна повторяться, тексели в верхней части текстуры должны совпадать с текселями в нижней части, а также для левого и правого краев.

...