Вашакидзе Нателла Семеновна Зав кафедрой математики: Доманский Андрей Владимирович Южно-Сахалинск 2004г. Содержание: Введение 5 Программное обеспечение 6 урок

Вид материалаУрок
Группирование объектов (10 мин)
Программа, выводящая на экран лес из уже созданных елок (25 мин)
Graphics3d 640,480
Можно еще поэкспериментировать с программой - добавить модуль управления камерой из программы fir2.
Плоскости и текстуры (10 мин)
Определение текстуры довольно сложно воспринимается на слух, практическое закрепление будет более результативным.
Программа "Лес на траве" (10 мин)
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   13

Группирование объектов (10 мин)


Настало время поговорить о дополнительном параметре "род". Этот параметр задает "родительский" объект для данного. Когда "родительский" объект трансформируется (поворачивается, перемещается, масштабируется), с ним также трансформируются и все его "дети". Для группировки объектов, удобно сначала создать "пустой" объект с помощью следующей команды:

piv = CREATEPIVOT()


Этот объект не отображается на экране, но имеет все параметры трехмерного объекта (координаты, углы поворота, масштаб). Затем, "привяжем" все части объекта к пустому, указав при их создании параметр "род" = piv.

Этот прием, в сущности, позволяет оперировать объектами, которые являются частями более масштабного объекта, как одним целым, используя один адрес. Манипулирование всеми этими объектами по отдельности было бы крайне затруднительно и объем программы заметно увеличился бы.

Есть еще одна полезная команда, копирующая объект:

новый_объект = COPYENTITY(копируемый_объект)


А эта команда позволяет создать массу объектов, идентичных созданному. Причем, при изменении исходного объекта, меняются и все его копии.

Программа, выводящая на экран лес из уже созданных елок (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


R
ENDERWORLD

FLIP

WAITKEY

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

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

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

Плоскости и текстуры (10 мин)


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

a = CREATEPLANE()


Эту плоскость можно поворачивать и перемещать, как обычный объект. Но простая плоскость выглядит достаточно неэффектно, поэтому разберемся с таким полезным понятием, как текстура. Текстура - это растровый (то есть точечный) рисунок, который можно наложить на плоскость и на любой другой трехмерный объект. Это похоже на то, как подарок завертывают в бумагу с орнаментом. Итак, для начала нам нужно загрузить текстуру в память:

a = LOADTEXTURE(файл)


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

Файл - это растровый рисунок с расширением bmp, png или jpg. bmp-рисунок можно создать в редакторе Paint, который можно запустить, нажав кнопку "Пуск", затем выбрав в меню Программы->Стандартные->Paint. Рисунки желательно копировать в директорию, где находится программа либо указывать полный путь к ним. Мы будем использовать рисунки из директории C:\media.

После того, как мы загрузили текстуру, ее нужно "привязать" к объекту с помощью команды ENTITYTEXTURE:

ENTITYTEXTURE объект, текстура


Также, текстуру можно масштабировать командой:

SCALETEXTURE текстура, SX, SY

Программа "Лес на траве" (10 мин)


Воспользуемся старой программой и добавим строки создания плоскости перед командой CREATEPIVOT):

Cоздаем плоскость:

ground = CREATEPLANE()


Опускаем плоскость вниз на 8 единиц:

POSITIONENTITY ground, 0, -8, 0


Загружаем текстуру:

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


Увеличиваем текстуру в 50 раз:

SCALETEXTURE grass, 50, 50


П
ривязываем текстуру к плоскости:

ENTITYTEXTURE ground, grass