Вашакидзе Нателла Семеновна Зав кафедрой математики: Доманский Андрей Владимирович Южно-Сахалинск 2004г. Содержание: Введение 5 Программное обеспечение 6 урок
Вид материала | Урок |
- Елисов Андрей Владимирович. Содержание: Введение. Проблема нравственного воспитания, 1394.39kb.
- Елисов Андрей Владимирович. Содержание: Введение. Проблема нравственного воспитания, 1394.03kb.
- Генеральный план городского округа город южно-сахалинск положение о территориальном, 1601.43kb.
- Координационного Совета «Сахалинской Лососевой Инициативы», 99.75kb.
- Городского округа «Город Южно-Сахалинск», 1451.81kb.
- Ларин Андрей Владимирович, преподаватель организатор обж средней школы №39 города Кирова, 53.64kb.
- Вялкина Светлана Семеновна (г. Хабаровск) > Лясковская Наталья Станиславовна (г. Южно-Сахалинск), 284.16kb.
- Годовой отчет ОАО "Южно Сахалинский хлебокомбинат имени И. И. Кацева" за 2010 год, 156.1kb.
- Кирилина Лидия Ивановна 2008 Содержание Введение 3 История математики на урок, 220.88kb.
- Программное обеспечение ЭВМ, 209.59kb.
Группирование объектов (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