Модели В Формате Ase

Загрузка, текстурирование и визуализация 3. D моделей в Open.

Необходимые знания: Вам могут понадобится следующие статьи: 13.2 Загрузка, текстурирование и визуализация 3D моделей в OpenGL. Формат ASE.

Загрузка, текстурирование, визуализация 3D моделей. Для создания программы загрузки 3D-моделей из формата ASE мы .

GL. Для создания программы загрузки 3. D- моделей из формата ASE мы воспользуемся наработками оболочки программы, которые появились у нас после выполнения отрисовки моделей с помощью стандартных функция библиотеки GLUT (рис.

3d модели в этом формате будут особенно полезны Mac OS пользователям. При экспорте в формат ASE во флеше все гуд. Далее в этом тексте речь пойдёт об изпользовании моделей сделанных именно в 3DStudio MAX. ASE (один из форматов экспорта в 3DStudio MAX).

Рисунок 1. Окно программы. Обратите внимание на то, что мы должны создать в данном окне меню для отображения окна выбора файла, который в дальнейшем будет загружен (рис. Рисунок 2. Меню загрузки файла 3. D модели. В остальном код оболочки программы остался неизменным за некоторыми исключениями, которые мы рассмотрим после того, как рассмотрим реализацию класса для загрузки 3. D- модели. Добавьте к проекту файл an. Model. Loader. cs.

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

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

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

Стоит отметить вопрос визуализации данной 3. Драйвера Для Huawei M150-2. D- модели. После загрузки модели геометрия будет загружена в массив объектов limb, каждый из элементов которого будет отвечать за один из логических элементов сцены. После этого нам достаточно будет вызывать данный дисплейный список для отрисовки геометрии, что сильно сократит нагрузку на графический адаптер.

Объектно- ориентированное программирование позволит нам удобно загружать любое количество 3. D- моделей, а также легко управлять перемещением данных 3. D- моделей в сцене и их отрисовкой. Класс LIMB: /*http: //esate. Anvi*/. // класс LIMB отвечает за логические единицы 3. D объектов в загружаемой сцене.

Теперь мы должны немного изменить реализацию таким образом, чтобы завернуть ее в класс, который позволит быстро загружать и использовать текстуру прямо при чтении файла с геометрией сцены./*http: //esate. Anvi*/. // класс для работы с текстурами.

Textures. For. Objects. Небольшой отрывок файла в формате ASE (формат является текстовым, благодаря чему вы можете без труда изучить его внутреннее устройство)./*http: //esate. Anvi*/. *3. DSMAX. Ключевые слова, указывающие на новую управляющую конструкцию, отмечены знаком «*» в начале слова. Алгоритм чтения файла и организация файла модели в памяти программы будут выглядеть следующим образом: 1. Начинается построчное чтение файла (вся необходимая информация для любой управляющей конструкции будет находиться в рамках одной строки, поэтому построчное чтение нам подходит)2.

Отсечение первого слова в строке. Проверка первого символа в полученном первом слове – если оно равно «*», то мы имеем управляющее слово. На основе управляющего слова мы проверяем, что это за управляющее слово, и если оно относится к тем, которые необходимы нам (описывают геометрию, текстурные координаты), то мы обрабатываем данную строку, отрезая первые слова и затем переводя их из строкового представления к числовому.

Как видите, все довольно просто. Теперь немного опишем те управляющие слова, которые нас интересуют: *MATERIAL. Среди параметров ambient, diffuse, specular, которые отражают свойства материала (и обработку которых мы не рассматривали в рамках данной программы) в блоке описания материала будет также указана информация о текстуре.*MATERIAL – начало блока описания материала. Далее следует указание номера материала. Пример блока описания материала: /*http: //esate.

Anvi*/. *MATERIAL. Этот блок также описывает довольно большое количество информации – имя объекта, его начальные координаты, ориентация и т. MESH. Мы будем использовать это значение (и значение, описывающие количество полигонов) для выделения памяти при создании экземпляра, описывающего геометрию подобъекта.*MESH. Самые часто встречаемые ключевые слова. За данными ключевыми словами следует ряд параметров. В случае вершин - это номер вершины и три ее координаты.

В случае описания полигонов – это номер полигона (после которого стоит знак «: », который необходимо отрезать) и далее номера вершин, координаты которых должны быть использованы для построения полигона. Обратите внимание на то, что часть информации из данной строки мы не используем. Первым делом, объявляются необходимые для дальнейшей работы переменные, массивы для объектов и т. Anvi*/. // класс, выполняющий загрузку 3. D модели. public class an. Model. Loader. . Мы сгенерировали его номер, затем начали создание дисплейного списка и вызвали функцию Create.

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