- •Лекция 1 Основные понятия OpenGl
- •1.2 Однородные координаты и матрицы
- •1.3 Поворот точки вокруг прямой заданной точкой а(a,b,c) и направляющим вектором e(l,m,n), , на угол φ.
- •1.4 Система координат
- •1.5 Вершины
- •Лекция 2 Освещение объектов
- •2.1Основные понятия
- •2.2 Задание цвета объекта
- •2.3.1 Свойства диффузного отражения
- •2.3.2 Свойства зеркального отражения
- •Лекция 3
- •3.1 Контекст воспроизведения
- •2.3 Освещение объектов
- •3.2 Стандартные функции библиотеки OpenGl
- •3.3 Функции библиотеки glu
- •3.4 Рекомендации по созданию графических приложений
- •Лекция 4
- •Свойства материалов
- •Установка источников света
- •Модель освещения
- •Смешение цветов
- •4.5 Задание теста глубины
- •Лекция 5 Наложение текстуры на объект
- •Задание параметров текстуры
- •Задание параметров текстуры
- •Взаимодействие текстуры с объектом
- •Привязка координат текстуры к объекту
- •Подготовка текстуры из bmp файла, для случая, когда размеры файла известны
- •Пример инициализации двухмерной текстуры
- •Лекция 6. Буфер трафарета
- •6.1 Тест трафарета
- •6.2 Логические операции с графическими объектами
- •6.2.1 Описание метода вычитания графических объектов
- •Лекция 7. Сплайновые поверхности
- •7.1 Кривые Безье
- •7.2 Отображение кривых Безье в OpenGl
- •7.3 Отображение поверхностей Безье в OpenGl
- •Лекция 8. Выбор графических объектов на экране
- •8.1 Идея метода
- •Лекция 9. Экспорт трехмерных изображений из 3d Studio max
- •9.1 Формат файла gms
- •9.2 Импортирование изображений объектов в программу
- •9.3 Загрузка файла формата gms в Delphi
- •Лекция 10 Вспомогательные функции
- •10.1.Работа с таймером
- •10.2 Обработка нажатия клавиши
- •10.3 Вывод текста на экран
- •Литература
Лекция 9. Экспорт трехмерных изображений из 3d Studio max
Для экспорта изображений из 3D Studio MAX используется утилита MEGA.ms. Она расположена в папке Utility. Это не исполняемый, а текстовый файл с набором команд для 3D Studio Max написанных на языке Max Script.
Экспортируемый объект необходимо выбрать, для этого достаточно щелкнуть на нем правой кнопкой мыши, в открывшемся контекстном меню необходимо выбрать строку Convert to Editable Mesh (Преобразовать в Редактируемую Сетку). Объект, непременно, должен быть Редактируемой Сеткой, если в выходном файле мы хотим получить список вершин и граней, иначе мы получим имя объекта и его свойства, такие как, радиус, количество сегментов - для сферы, высоту, ширину и глубину - для параллелепипеда и т.д.
После преобразования, следует перейти на командную панель (она расположена справа) и выберите вкладку с изображением молотка. Это вкладка утилит. Нажать кнопку MAXScript, внизу панели развернется свиток MAXScript'a. Нажать кнопку «Выполнить», появится диалоговое окно открытия файла. В подкаталоге script/Utilites следует запустить файл MEGA.ms. Внизу командной панели в списке утилит должна появится надпись MEGA, но это еще не означает, что утилита уже запущена. Чтобы ее запустить, необходимо выделить строку MEGA и нажать Enter. Внизу панели должен раскрыться свиток MEGA.
В этом свитке следует ввести в поле From зачение 1, в поле To - 100, в поле Step – 100 и нажать кнопку Save As... и в диалоговое окно ввести имя файла, в который экспортируется объект. Файл будет создан с расширением GMS.
Утилита работает следующим образом: При экспорте файла, берется значение из поля From и ползунок счетчика кадров расположенный внизу экрана премещается на позицию, соответствующую этому значению. Затем в выходной файл экспортируется объект в том виде, в каком он пребывает на данный момент на экране. После чего снова передвигается ползунок кадров на величину, введенную в поле Step. Снова записывается модель соответствующая этому кадру. И так до тех пор, пока ползунок не переместится на позицию соответствующую значению, введенному в поле To. Поскольку в данном примере мы не создавали анимацию, то нам нужен был только один кадр. Утилита экспортировала кадр №1, затем добавила к нему значение 100. Номер кадра стал равен 101. Поскольку это значение больше значения введенного в поле To, процесс экспорта на этом остановился. Если бы в поле From было введено значение 0, то было бы экспортировано 2 кадра с номерами 0 и 100 соответственно. Если пометить галочкой опцию Selected Only, то экспортироваться будут только выделенные объекты, это иногда бывает очень нужно, в противном случае будут экспортированы все объекты сцены. Теперь рекомендую рассмотреть формат файла GMS.
9.1 Формат файла gms
Файл GMS это текстовый файл открытого типа. Структура этого файла имеет вид:
New object // Указывает на начало нового объекта, следующая строка указывает тип объекта
TriMesh() // Объект - сетка
numverts numfaces // Указывает, что следующая строка содержит количество вершин и граней для данного объекта
Mesh vertices:
// Здесь располагается блок вершин объекта в виде координат X Y Z
end vertices
Mesh faces:
// Здесь располагается блок граней объекта в виде индексов 1 2 3,
где каждый индекс - индекс в массиве вершин, указывает на вершину грани
end faces
Faset normals:
// Здесь располагается блок фасетных нормалей в виде координат X Y Z.
Их количество равно количеству граней
end faset normals
Smooth normals:
// Здесь располагается блок сглаживающих нормалей в виде координат X Y Z.
Их количество равно количеству вершин.
end smooth normals
end mesh // Конец описания объекта Tri Mesh
end of file // Конец файла
Примерно так выглядит файл, когда мы экспортируем сетчатый объект. Если объект не сетчатый, то файл будет выглядеть следующим образом:
New object // Указывает на начало нового объекта, следующая строка указывает тип объекта
<Тип объекта>, например: Box
// Здесь идут параметры, зависящие от типа объекта (Поверхности Безье и NURBS -
поверхности не поддерживаются)
end <Тип объекта> // Конец описания объекта
end of file // Конец файла
Примерно так выглядит файл, когда мы экспортируем сетчатый объект. Если объект не сетчатый, то файл будет выглядеть следующим образом:
New object // Указывает на начало нового объекта, следующая строка указывает тип объекта
<Тип объекта>, например: Box
// Здесь идут параметры, зависящие от типа объекта (Поверхности Безье и NURBS -
поверхности не поддерживаются)
end <Тип объекта> // Конец описания объекта
end of file // Конец файла
