Содержание
-
Теоретические основы трехмерной графики
Теория построения трехмерных изображений и рендеринга.
-
3D Graphics
- Трехмерная графика (3D Graphics) – визуальное отображение трехмерной сцены или объекта. Для представления трехмерной графики на двумерном устройстве (дисплее) применяют рендеринг.
-
rendering
- Рендеринг (rendering) – процесс создания реалистичных изображений на экране, использующий математические модели и формулы для добавления цвета, тени и т. д.
-
Трехмерная модель
-
Из 3D в 2D
- Для отображения трехмерной модели на двухмерном экране монитора требуется произвести специальные математические преобразования трехмерных координат всех точек в двухмерные.
-
Камера
-
Аффинные преобразования
- При смене позиции наблюдателя требуется произвести преобразования координат, связанные с поворотом объекта, его масштабированием и учетом перспективы.
- Такие преобразования называются аффинными преобразованиями.
-
Пример преобразования
- Аффинные преобразования применяются при повороте и трансформации объекта (масштабирование, скос).
- Допустим, что при повороте ординаты точек (у-координаты) не меняются. Значит, поворот происходит относительно оси y.
-
Освещение
- Модель начинает выглядеть трехмерной только после моделирования освещения, а это напрямую связано с положением плоскостей (полигонов) модели, точнее, с направлением перпендикуляров к плоскостям – нормалей.
- Степень освещенности точки зависит от угла падения лучей света. Чем меньше угол между нормалью и лучом света, тем больше освещенность точки поверхности.
-
Нормали
- Если взять ровную поверхность, то нормали в каждой ее точке будут одинаковыми и освещенность также будет одинаковой.
- А если поверхность неровная, то нормали в каждой точке будут разными - и освещенность тоже.
-
Модель освещенности Фонга
- Вклад в это значение от каждого источника света зависит от расстояния между источником света и точкой на поверхности.
-
-
Модель Фонга-Блинна
-
Дальнейшее развитие
- В дальнейшем, исследователи придумывали иные способы вычисления этой составляющей, более сложные (Blinn, Cook-Torrance, Ward), учитывающие распределение энергии света, его поглощение материалами и рассеивания в виде диффузной составляющей.
-
Игра света и тени
- С целью расчета теней и полутеней (диффузных теней) применяются различные алгоритмы – Ray tracing (трассировка лучей), Radiosity (излучение).
- На рисунке представлены результаты просчета теней и диффузной засветки при помощи Radiosity.
-
Первые уроки 3D программирование
Первые уроки 3D программирование
-
-
Graphics3D 640,480,16,1
Устанавливает 3D Графический способ. Синтакс такой: Graphics3D ширина, высота, глубина цвета, режим Ширина, высота – размер создаваемого экрана. Глубина – глубина цвета – 16, 24 или 32 бита на пиксель.
Режим: 0 – оконный во время разработки (если возможно), полноэкранный в .exe формате; 1 –полноэкранный 2 –оконный 3 –оконный, с возможностью изменения размеров окна.
-
SetBuffer BackBuffer() – установить поток, буфер.
cam=CreateCamera() – это самая основная команда в 3D программах. Если не будет даже одной камеры то 3D программа работать не будет, камера-это тоже самое, что и наши глаза, через неё мы видим окружающий 3D мир. Lit=CreateLight() – Это команда создает источник света. Можно изменять тип света, в скобки вписываем следующие значения: 1:направленный 2:точка 3: пятно
-
cub=CreateCube() – Это мы создаем 3D объект куб.
Геометрические объекты:
- CreateSphere () - сфера
- CreateCylinder () - цилиндр
- CreateCone() – конус
- PositionEntity cub,0,0,5 – Эта команда помещает объект в позиции и в 3D месте.
- ScaleEntity cub,1,0.3,1 – Изменяет размер объекта RotateEntity cub,0,40,0 – Вращает объект так, чтобы это было при абсолютной ориентации.
-
TurnEntity cub,0.6,0.2,0.3 – вращение
- TurnEntity entity,pitch#, yaw#, roll#, [,global]
- Tpitch# - X угол и эквивалентна наклону вперед / назад.
- Yaw# - Y угол и эквивалентен вращению налево / вправо.
- Roll# - Z угол и эквивалентен наклону налево / вправо.
- UpdateWorld () – UpdateWorld [anim_speed#]
- anim_speed# (необязательный) – скорость для мультипликации.
Установлен по умолчанию в 1.
-
Repeat
…………………………….
- Until KeyHit(1) – Между этими двумя командами будет происходить основной цикл игры. При нажатии кнопки ESC начинает читать следующую команду.
-
End – Завершает программу.
-
Интерфейс программы
Интерфейс программы
Так выглядит окно Blitz3d:
Синее текстовое поле является основным – в нём пишут программный код.
-
-
Запуск и отладка программы: Для запуска программы нажмите F5.
Для запуска предыдущей программы нажмите F6 Для проверки ошибок нажмите F7 Для создания .exe файла нажмите: меню Program -> Create Executable Для включения\отключения отладочного окна: меню Program -> Debug Enabled В правой части окна находится панель с тремя вкладками: Funcs – отображает все функции, которые используются в проекте. Types – отображает все типы, которые используются в проекте. Label – отображает все метки.
-
-
-
Поставим сферу
Поставим сферу
-
Graphics3D 800,600,32,2SetBuffer BackBuffer()camera=CreateCamera()PositionEntity camera,0,2,-9light=CreateLight()cub=CreateCube()sph=CreateSphere(32)ScaleEntity sph,1,1,1ScaleEntity cub,1,1,1EntityAlpha cub,0.5RotateEntity cub,45,45,45RotateEntity light, 90,45,45While Not KeyHit(1)=1RenderWorld()Flip()WendEnd
-
ДОМА:
Поставить цилиндр на куб.
Используем:
- CreateCylinder () - цилиндрCreateCube() - куб
- PositionEntity cub,0,0,5 – Эта команда помещает объект в позиции и в 3D месте
- ScaleEntity cub,1,0.3,1 – Изменяет размер объекта
-
Поставим объект
-
Практическая работа
- Изменить параметры света.
- Изменить размер объекта.
- Переместить объект вверх.
- Переместить объект вправо.
- Изменить скорость вращения.
Дома:
1. Установить программу2. Создать сферу и цилиндр
-
Дома:
1. Установить программу2. Создать полупрозрачную сферу и внутри цилиндр.
Нет комментариев для данной презентации
Помогите другим пользователям — будьте первым, кто поделится своим мнением об этой презентации.