Разбор файлов .obj: Как сделать материалы / текстуры? - PullRequest
2 голосов
/ 17 сентября 2010

Я новичок в OpenGL.Я играю с этим с помощью JOGL.Я использую эту модель .

Я успешно отрисовываю ее в окне.Тем не менее, я хотел бы применить текстуры / материалы.Я не совсем уверен, как это сделать.

Из файла .obj:

f 6307/4525/3 6303/4524/3 6327/4523/3 6315/4526/3
usemtl kahki_light_pave_W.png
f 6445/3470/305 6437/4623/305 6593/4624/305 6597/4625/305
f 6594/4626/306 6438/4627/306 6446/4628/306 6598/4629/306
f 6595/4630/307 6439/4631/307 6447/4632/307 6599/4633/307
f 6448/3482/308 6440/4634/308 6596/4635/308 6600/4636/308

Википедия говорит мне, что все после оператора usemtl и до следующего usemtlоператор должен использовать khaki_light_pave_W.png.Однако я не уверен, как это сделать в OpenGL.

В верхней части файла определено несколько вершин:

v 19.886690 3.093822 -21.149584
v 23.886690 3.093822 -21.149584
vt 0.918121 0.920883
vt 0.918121 0.959193
vt -0.537323 1.541370
vt -0.537323 1.503060
vt 0.462677 0.503060

Нужно ли использовать * 1018?* вершины для текстуры?Заявления f включают индексы.Являются ли эти признаки в v вершинах, vt или в обеих?

Ответы [ 2 ]

2 голосов
/ 18 сентября 2010

tl; dr: записи vt задают координаты текстуры и индекс записей f (на основе 1!) Для трех отдельных массивов (v, vt и vn).

Из spec , раздел «Ссылки на данные вершин»:

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

Каждый из этих типов вершин пронумерован отдельно, начиная с 1. Это означает, что первая геометрическая вершина в файле равна 1, вторая - 2, и так далее.Первая вершина текстуры в файле - 1, вторая - 2 и т. Д.Нумерация продолжается последовательно по всему файлу.Часто файлы имеют несколько списков данных вершин.Эта последовательность нумерации продолжается, даже если данные вершин разделены другими данными.

Помимо подсчета вершин вниз от вершины первого списка в файле, вы также можете подсчитывать вершины вверх по списку с позиции элементав файле.Когда вы подсчитываете список из элемента, ссылочные номера являются отрицательными.Ссылочный номер -1 указывает вершину непосредственно над элементом.Ссылочный номер -2 указывает на две ссылки выше и т. Д.

0 голосов
/ 19 декабря 2011

Я написал загрузчик файлов OBJ вместе с примером программы просмотра моделей для отображения модели с использованием LWJGL, которая похожа на JOGL, но не совсем та же. (Я использовал как JOGL, так и LWJGL - фактически я недавно переключился с JOGL на LWJGL.)

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

http://darksleep.com/oObjLoader/

...