Народный учебник по OpenGL


Урок 10. Загрузка и перемещение в трехмерном мире


Loading And Moving Through A 3D World



Этот урок был написан человеком по имени Lionel Brits (Betelgeuse). Урок содержит только те части кода, которые нужно добавить. Но если просто добавите строки кода, описанные ниже, программа не будет работать. Если вы хотите знать, где должна идти каждая строка кода, скачайте исходник и просмотрите его так же, как вы прочитали этот урок.

 

Добро пожаловать в непопулярный Урок 10. Сейчас у вас есть вращающийся куб или цепочка звёзд и некоторая базовая ориентация в 3D программировании. Но стойте! Не убегайте сразу же и не начинайте создание Quake IV, пока что. Просто, вращающиеся кубики не доставят вам много удовольствий в десматче J. Вместо этого вам нужен большой, сложный и динамический 3D мир со свободным взглядом во все 6 сторон и с причудливыми эффектами такими, как зеркала, порталы, искривления и, конечно же, с высокой частотой кадров в секунду. В этом уроке представлена базовая «структура» 3D мира и, конечно же, способы перемещения по нему.


Структура данных

До сих пор было легко определять среду 3D мира, используя длинные комбинации чисел, но это становится чрезвычайно нелегко, когда сложность среды начинает возрастать. По этой причине мы должны организовать данные в более мощные структуры. Прежде всего обсудим понятие сектора. Каждый 3Д мир базируется на некотором количестве секторов. Сектор может быть комнатой, кубом или любым другим замкнутым пространством.

 

typedef struct tagSECTOR         // Создаём структуру нашего сектора

{

      int numtriangles;          // Кол-во треугольников в секторе

      TRIANGLE* triangle         // Ссылка на массив треугольников

} SECTOR;                        // Обзовём структуру словом SECTOR

 

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

 

typedef struct tagTRIANGLE       // Создаём стр-ру нашего треугольника

{

      VERTEX vertex[3];          // Массив трёх вершин




Начало  Назад  Вперед



Книжный магазин