Основы трехмерной графики в среде Blitz3D


создать трехмерный объект – елку (25 мин)


Это задание, как и следующее, включает в себя определение свойств объекта, построение чертежа, работу с ним, разбивку объекта на примитивы, определение их параметров, а также построение шаблона. Так как сама по себе система составления объекта поначалу покажется учащимся сложной, рекомендуется в первом задании использовать наводящие вопросы, построить с помощью учащихся чертеж и помочь в написании программы. Второе задание во многом схоже с первым, поэтому можно ограничиться построением чертежа.

Построим чертеж: видно, что части елки (трехмерные примитивы) лежат на оси OY, так что они будут иметь координаты 0, y, 0:

Далее - копируем все строки предыдущей программы, которые задают экранное разрешение, создают камеру, свет и выводят трехмерный объект на экран (зададим новую позицию камеры). Теперь сделаем нижний конус (c1): его размеры - 10 х 10 х 10 (т. к. созданный конус первоначально имеет размеры 2 х 2 х 2, то необходимо увеличить его в 5 раз с помощью команды SCALEENTITY). Он изначально находится в точке 0, 0, 0, поэтому перемещать его не нужно. Зададим для него зеленый цвет (0, 255, 0) командой ENTITYCOLOR. Итак, нижний конус готов, добавляем остальные (копируем команды и заменяем значения). Добавим еще команду для перемещения объектов - POSITIONENTITY:

конус с2: размер - 4 х 4 х 4, положение - (0, 4, 0), цвет - зеленый (0, 255, 0)

конус с3: размер - 3х3х3, положение - (0, 7, 0), цвет - зеленый (0, 255, 0)

конус с4: размер - 2х2х2, положение - (0, 10, 0), цвет - зеленый (0, 255, 0)

Создадим ствол дерева - добавим цилиндр (cyl) с помощью команды CREATECYLINDER:

размер - 2х2х2, положение - (0, -6, 0), цвет - коричневый (170, 130, 30)

Программа:

GRAPHICS3D 640, 480

cam = CREATECAMERA()

POSITIONENTITY cam, 0, 0, -20

l = CREATELIGHT()



ROTATEENTITY l, 0, 45, 45

c1 = CREATECONE(20, 1)

SCALEENTITY c1, 5, 5, 5

ENTITYCOLOR c1, 0, 255, 0

c2 = CREATECONE(20, 1)

SCALEENTITY c2, 4, 4, 4

POSITIONENTITY c2, 0, 4, 0

ENTITYCOLOR c2, 0, 255, 0

c3 = CREATECONE(20, 1)

SCALEENTITY c3, 3, 3, 3

POSITIONENTITY c3, 0, 7, 0

ENTITYCOLOR c3, 0, 255, 0

c4 = CREATECONE(20, 1)

SCALEENTITY c4, 2, 2, 2

POSITIONENTITY c4, 0, 10, 0

ENTITYCOLOR c4, 0, 255, 0

cyl = CREATECYLINDER(20, 1)

POSITIONENTITY cyl, 0, -6, 0

SCALEENTITY cyl, 2, 2, 2

ENTITYCOLOR cyl, 170, 130, 30

RENDERWORLD

FLIP

WAITKEY

Запишем созданную программу под именем “fir.bb”.



Содержание раздела