
Библиотека GLUT позволяет создавать большое количество 3D объектов. Так же мы можем строить объекты вручную или с помощью различных техник и методов.
Тем не менее, для создания сложных графических сцен используются трехмерные объекты, созданные в крупных пакетах трехмерного моделирования – например 3d studio max. Экспортируя трехмерный объект из пакета трехмерного моделирования, мы получаем файл, который хранит геометрические данные, текстурные координаты, источники света и т.д. в зависимости от настроек экспорта и самого формата файла.
То, как эти данные будут хранится, как правило описывается спецификацией, для данного формата.
Метод хранения геометрии в сторонних файлах – безусловно очень удобен. Имея класс загрузки трехмерных объектов мы можем на ходу менять геометрию сцены, меняя файл с описанием трехмерного объекта.
Принцип хранения геометрии 3d объекта сводится к тому, что объект, который составит из N узлов, каждый из которых является составляющей общей сцены.
Узел (или подобъект), представляет собой набор координат в трехмерном пространстве. Посути представление такого объекта можно разделить на 2 больших массива. Ведь соседние полигоны, как правило использует как минимум одну общую вершину. Исходя из этого, хранить координаты отдельно для каждого полигона абсолютно не выгодно – отсюда и появляются два геометрических массива. Первый содержит описание всех вершин. Второй массив содержит описание полигонов – каждый полигон описывается 3 индексами координат, которые мы должны взять из первого массива.
Загрузку трехмерной модели мы рассмотрим на примере формата ASE. В данный формат можно легко сохранить трехмерную модель, используя пакет трехмерного моделирования 3d studio max.
Формат является текстовым, и вы можете самостоятельно изучить то, как описывается экспортируемая геометрия.
Так как мы реализуем загрузку трехмерной модели для обучения, мы не будем использовать многие параметры, хранящиеся в данном файле. Нормали мы почитаем самостоятельно. Так же мы загрузим текстурные координаты, для загрузки текстуры, наложенной на объект.
Итак, для примера создадим в 3d studio max модель чайника (ее кстати тоже можно отрисовать используя библиотеки openGL, но в данном случае мы выбираем данную 3D модель, чтобы не делать сильный акцент на создание самой 3D модели для демонстрации алгоритма загрузки 3d модели).
Итак.
Создайте новую модель чайника и куб. С помощью редактора материалов назначьте данным объектам текстуры.

Рисунок 1.
Теперь воспользуйтесь меню File -> Export. В качестве формата установите формат ASE. (рисунок 3)
При настройках экспорта необходимо указать, что мы экспортируем исключительно геометрию.

Рисунок 2.

Рисунок 3.
Теперь можно перейти к созданию класса для загрузки 3d модели , после чего мы подключим его к оболочке, разрабатываемой в главе 11.
Загрузить: модель чайника, формат ASE.
Обсуждение данного урока: Загрузка трехмерных объектов в OpenGL. Введение.
Далее: 13.2 Загрузка и визуализация 3D модели.