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


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


Это задание выходит за рамки временного интервала урока, поэтому его лучше провести отдельно.

Нам потребуется более детальный чертеж для построения (вы, наверное, уже строили такой на уроках черчения) - чертеж объекта с трех сторон.

Как видим, стул состоит из параллелепипедов. Для того, чтобы построить параллелепипед, нужно масштабировать куб по осям с разными коэффициентами. Для правильного построения нужно определить размеры параллелепипеда и координаты его центра. Цвет каждого параллелепипеда зададим, как темно-коричневый (160,100,40). Для удобства будем использовать одну переменную (т.к. адреса параллелепипедов нам больше не понадобятся).



Скопируем основу из предыдущей программы, изменив ее для большей наглядности:

cam = CREATECAMERA()

POSITIONENTITY cam, 20, 30, -20

ROTATEENTITY cam, 45, 45, 0

l = CREATELIGHT()

ROTATEENTITY l, 45, 135, 45

Напишем шаблон для построения параллелепипеда:

p = CREATECUBE()

SCALEENTITY p, , ,

POSITIONENTITY p, , ,

ENTITYCOLOR p, 160, 100, 40

Далее, копируем этот шаблон, и заполняем его данными:

Ножки:

1: Размер: 1, 6, 1, координаты:(5, -8, 5)

2: Размер: 1, 6, 1, координаты:(-5, -8, 5)

3: Размер: 1, 6, 1, координаты:(5, -8, -5)

4: Размер: 1, 6, 1, координаты:(-5, -8, -5)

Сиденье:

Размер: 6, 1, 6, координаты:(0, -1, 0)

Доски спинки:

Широкая: Размер: 2, 7, 1, координаты:(0, 7, 5)

Левая узкая: Размер: 1, 7, 1, координаты:(-5, 7, 5)

Правая узкая: 1, 7, 1, координаты:(5, 7, 5)

Поперечная: Размер: 6, 1, 1, координаты:(0, 15, 5)

Программа:

GRAPHICS3D 640, 480, 32

cam = CREATECAMERA()

POSITIONENTITY cam,20, 30, -20

ROTATEENTITY cam, 45, 45, 0

l = CREATELIGHT()

ROTATEENTITY l, 45, 135, 45

p = CREATECUBE()

SCALEENTITY p, 1, 6, 1

POSITIONENTITY p, 5, -8, 5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 1, 6, 1

POSITIONENTITY p, -5, -8, 5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 1, 6, 1

POSITIONENTITY p, 5, -8, -5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 1, 6, 1

POSITIONENTITY p, -5, -8, -5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 6, 1, 6

POSITIONENTITY p, 0, -1, 0

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 2, 7, 1

POSITIONENTITY p, 0, 7, 5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 1, 7, 1

POSITIONENTITY p, -5, 7, 5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 1, 7, 1

POSITIONENTITY p, 5, 7, 5

ENTITYCOLOR p, 160, 100, 40

p = CREATECUBE()

SCALEENTITY p, 6, 1, 1

POSITIONENTITY p, 0, 15, 5

ENTITYCOLOR p, 160, 100, 40

RENDERWORLD

FLIP

WAITKEY



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