13.1 Загрузка трехмерных объектов в OpenGL. Введение.

Библиотека GLUT позволяет создавать большое количество 3D-объектов. Также мы можем строить объекты вручную или с помощью различных техник и методов. Тем не менее, для создания сложных графических сцен используются трехмерные объекты, созданные в крупных пакетах трехмерного моделирования, например, 3D Studio Max. Экспортируя трехмерный объект из пакета трехмерного моделирования, мы получаем файл, который хранит геометрические данные, текстурные координаты, источники света и т.д. в зависимости от настроек экспорта и самого формата файла.

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


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

Принцип хранения геометрии 3D-объекта сводится к тому, что объект состоит из N узлов, каждый из которых является составляющей общей сцены. Узел (или подобъект) представляет собой набор координат в трехмерном пространстве. По сути, представление такого объекта можно разделить на два больших массива. Ведь соседние полигоны, как правило, используют минимум одну общую вершину.

Исходя из этого, хранить координаты отдельно для каждого полигона - абсолютно не выгодно. Отсюда и появляются два геометрических массива. Первый содержит описание всех вершин. Второй массив содержит описание полигонов – каждый полигон описывается 3 индексами координат, которые мы должны взять из первого массива.

Загрузку трехмерной модели мы рассмотрим на примере формата ASE. В данный формат можно легко сохранить трехмерную модель, используя пакет трехмерного моделирования 3D Studio Max. Формат является текстовым, и вы можете самостоятельно изучить то, как описывается экспортируемая геометрия.

Так как мы реализуем загрузку трехмерной модели для обучения, мы не будем использовать многие параметры, хранящиеся в данном файле. Нормали мы посчитаем самостоятельно. Также мы загрузим текстурные координаты для загрузки текстуры, наложенной на объект.

Экспорт данных из 3D Studio Max


Итак, для примера создадим в 3D Studio Max модель чайника (ее тоже можно отрисовать, используя библиотеки OpenGL, но в данном случае мы выбираем данную 3D модель, чтобы не делать сильный акцент на создание самой 3D модели для демонстрации алгоритма загрузки 3D модели).


Создайте новую модель чайника и куб. С помощью редактора материалов назначьте данным объектам текстуры.
Уроки OpenGL + C#: Трехмерная сцена для экспорта Рисунок 1. Трехмерная сцена для экспорта.
Теперь воспользуйтесь меню File -> Export. В качестве формата установите формат ASE (рис. 3). При настройках экспорта необходимо указать, что мы экспортируем исключительно геометрию.
Уроки OpenGL + C#: Экспортирование сцены Рисунок 2. Экспортирование сцены.
Уроки OpenGL + C#: Настройки экспорта трехмерной модели Рисунок 3. Настройки экспорта трехмерной модели.
Теперь можно перейти к созданию класса для загрузки 3D-модели, после чего мы подключим его к оболочке, разрабатываемой в главе 11.

Прикрепленные файлы для скачивания:
Добавить комментарий
Расширенный режим добавления комментариев доступен на форуме: загрузка изображений, цитирование, форматирование текста, и т.д.
Ваше имя:
Текст сообщения:
^