Разборка файлов .obj: Как делать материалы / текстуры?

StackOverflow https://stackoverflow.com/questions/3738080

Вопрос

Я новичок в 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

Мне нужно использовать vt Вершины для текстуры? То f Отчеты включают в себя индексы. Эти показания в v вершины, vt, или оба?

Это было полезно?

Решение

TL; DR: vt Записи указывают текстуру координаты и f Индекс записи (1 на основе!) на три отдельных массива (v, vt, а также vn).

Из спецификация, Раздел «Приведенные данные вершины»:

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

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

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

Другие советы

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

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

http://darksleep.com/oobjoCloader/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top