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


Программа, выводящая на экран лес из уже созданных елок (25 мин)


Эта программа наглядно демонстрирует копирование и группирование объектов

Загрузим файл с елкой "fir.bb" и создадим пустой объект (после камеры и света):

fir = CREATEPIVOT()

Добавим в каждый оператор создания объекта созданный "родительский" объект, заменим, например

c1 = CREATECONE(20, 1)

на

c1 = CREATECONE(20, 1, fir)

Затем, создадим цикл (перед командой RENDERWORLD):

FOR x = 1 TO 50

 fir2 = COPYENTITY(fir)

 POSITIONENTITY fir2, RND(-120, 120), 0, RND(-120, 120)

NEXT

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



cam = CREATECAMERA()

POSITIONENTITY cam, 0, 30, -20

ROTATEENTITY cam, 30, 0, 0

Итак, программа:

GRAPHICS3D 640,480

cam = CREATECAMERA()

POSITIONENTITY cam, 0, 30, -20

ROTATEENTITY cam, 30, 0, 0

l = CREATELIGHT()

ROTATEENTITY l, 0, 45, 45

fir = CREATEPIVOT()

c1 = CREATECONE(20, 1, fir)

SCALEENTITY c1, 5, 5, 5

ENTITYCOLOR c1, 0, 255, 0

c2 = CREATECONE(20, 1, fir)

SCALEENTITY c2, 4, 4, 4

POSITIONENTITY c2, 0, 4, 0

ENTITYCOLOR c2, 0, 255, 0

c3 = CREATECONE(20, 1, fir)

SCALEENTITY c3, 3, 3, 3

POSITIONENTITY c3, 0, 7, 0

ENTITYCOLOR c3, 0, 255, 0

c4 = CREATECONE(20, 1, fir)

SCALEENTITY c4, 2, 2, 2

POSITIONENTITY c4, 0, 10, 0

ENTITYCOLOR c4, 0, 255, 0

cyl = CREATECYLINDER(20, 1, fir)

POSITIONENTITY cyl, 0, -6, 0

SCALEENTITY cyl, 2, 2, 2

ENTITYCOLOR cyl, 170, 130, 30

FOR x = 1 TO 100

 fir2 = COPYENTITY(fir)

 POSITIONENTITY fir2, Rnd(-120, 120), 0, Rnd(1, 240)

NEXT

RENDERWORLD

FLIP

WAITKEY

Можно еще поэкспериментировать с программой - добавить модуль управления камерой из программы fir2.

Урок 6 – текстуры, плоскости, модели

На этом уроке рассматриваются дополнительные объекты трехмерной сцены



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