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


Создание холмистой поверхности (25 мин)


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

GRAPHICS3D 640, 480

cam = CREATECAMERA()

POSITIONENTITY cam, 64, 64, -16

ROTATEENTITY cam, 45, 0, 0

l = CREATELIGHT()

ROTATEENTITY l, 0, 45, 45

t = CREATETERRAIN(64)

TERRAINSHADING t, 1

grass = LOADTEXTURE( "C:\media\grass.jpg" )

SCALETEXTURE grass, 32, 32

ENTITYTEXTURE t, grass

SCALEENTITY t, 2, 60, 2



Делаем цикл из 10 шагов:

FOR n = 1 TO 10

Циклы по всем точкам поверхности:

 FOR x = 0 TO 64

  FOR z = 0 TO 64

На первом этапе- задаем высоты точек случайным образом:

   IF n=1 THEN

    MODIFYTERRAIN t, x, z, RND(0, 1)

   Else

На следующих этапах устанавливаем для каждой точки значение высоты, равное среднему арифметическому между значениями высоты ее и соседних:

    MODIFYTERRAIN t, x, z, (TERRAINHEIGHT(t, x - 1, z) + TERRAINHEIGHT(t, x, z - 1) + TERRAINHEIGHT(t, x, z) + TERRAINHEIGHT(t, x + 1, z) + TERRAINHEIGHT(t, x, z + 1)) / 5

   END IF

  NEXT

 NEXT

Визуализируем сцену, ждем нажатия клавиши и закрываем цикл:

 RENDERWORLD

 FLIP

 WAITKEY

NEXT

Урок 8 – Чтение данных, построение моделей



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