LoadTerrain ( file$[,parent] )

Параметры

file$ - имя файла рисунка, который будет использован в качестве карты высоты
parent (не обязательно) - родительский объект для привязки ландшафта

Описание

Загружает ландшафт из файла рисунка и возвращает указатель на него.

Красный канал изображения используется, чтобы определить высоту. Первоначально созданный ландшафт имеет такие же размеры, как и рисунок, и высоту в 1 единицу.

Подсказки для генерации хорошего ландшафта:

* Сглаживайте или размывайте карту высоты
* Уменьшите высоту ландшафта по оси y
* Увеличьте размеры по осям x и z
* Уменьшите "дальность зрения" камеры

При текстурировании объекта текстура с масштабом 1,1,1 (значение по умолчанию) будет такого же размера, как одна из ячеек(полигонов) сетки ландшафта. Текстура, которая масштабируется к тому же самому размеру, как размер исходного рисунка, использованного в качестве карты высоты, будет такого же размера, как ландшафт.

Дополнительный родительский параметр позволяет Вам определять родительский объект для ландшафта так, чтобы, когда родитель будет перемещаться, дочерний ландшафт будет двигаться вместе с ним. Однако, эта зависимость - односторонняя: применение команд движения к дочернему объекту не будет затрагивать родителя.

Если родительский объект указан, ландшафт появится в координатах 0,0,0 относительно позиции родительского объекта (локальная система координат, привязанная к родительскому объекту).

Размеры карты высоты (ширина и высота) должны быть степенью числа 2, т.е. 32, 64, 128, 256, 512, 1024.

Смотрите также: CreateTerrain.

Пример

Пример LoadTerrain
-------------------

Graphics3D 640,480
SetBuffer BackBuffer()

camera=CreateCamera()
PositionEntity camera,1,1,1

light=CreateLight()
RotateEntity light,90,0,0

; Загружаем ландшафт
terrain=LoadTerrain( "media/height_map.bmp" )

; Ставим детализацию, разрешаем изменение вершин
TerrainDetail terrain,4000,True

; Масштабируем
ScaleEntity terrain,1,50,1

; Накладываем текстуру
grass_tex=LoadTexture( "media/mossyground.bmp" )
EntityTexture terrain,grass_tex,0,1

While Not KeyDown( 1 )

If KeyDown( 205 )=True Then TurnEntity camera,0,-1,0
If KeyDown( 203 )=True Then TurnEntity camera,0,1,0
If KeyDown( 208 )=True Then MoveEntity camera,0,0,-0.1
If KeyDown( 200 )=True Then MoveEntity camera,0,0,0.1

x#=EntityX(camera)
y#=EntityY(camera)
z#=EntityZ(camera)

terra_y#=TerrainY(terrain,x#,y#,z#)+5

PositionEntity camera,x#,terra_y#,z#

RenderWorld

Text 0,0,"Use cursor keys to move about the terrain"

Flip

Wend

End

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в интернете