Главная » Программирование игр под Android » Формат Wavefront OBJ – РАЗРАБОТКА ИГР ДЛЯ ОС ANDROID

0

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

Индексы относительны позициям вершин, координатам текстуры и нормалям вершины, определенным ранее в предыдущих форматах. Индексы vt и vn могут быть опущены, что говорит о том, что для вершины треугольника не определены координаты текстуры или нормаль.

Мы будем игнорировать любые строки, не начинающиеся с v, vn, vt или f; мы также будем выводить сообщение об ошибке, если разрешенные строки будут отформатированы отличным от нашего способом. Элементы одной строки разделяются пустым пространством, которое может состоять из пробелов, табуляций и т. д.

ПРИМЕЧАНИЕ

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

Рассмотрим очень простой пример, текстурный треугольник, имеющий нормали, представленный в формате OBJ:

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

Индексы, заданные в строке f, имеют в качестве базы единицу, а не ноль (как это было в Java). Некоторые программы иногда предоставляют даже отрицательные индексы. Это разрешается спецификацией формата OBJ, но является серьезной помехой. Нам следует отслеживать, сколько позиций вершин, координат текстуры или нормалей вершин мы уже загрузили, а затем добавлять эти отрицательные индексы к соответствующим номерам позиций, координат вершин или нормалей в зависимости от атрибута, на который указывает индекс.

Источник: Mario Zechner / Марио Цехнер, «Программирование игр под Android», пер. Егор Сидорович, Евгений Зазноба, Издательство «Питер»

По теме:

  • Комментарии