Создание холмистой поверхности (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 – Чтение данных, построение моделей