RWS | Дата: Понедельник, 25 Февраля 2008, 15:05 | Сообщение # 2 |
Бывалый
Группа: Участники
Сообщений: 61
Награды: 0
Замечания: 20%
Статус: 
| BMX , гляжу умный стал Вот смотри пример с LoadMesh Code Graphics3D 640,480 SetBuffer BackBuffer() camera=CreateCamera() light=CreateLight() RotateEntity light,90,0,0 ; Загружаем модель drum=LoadMesh("media/oil-drum/oildrum.3ds") PositionEntity drum,0,0,MeshDepth(drum)*2 (устонавливаем позицию) While Not KeyDown( 1 ) RenderWorld Flip Wend End Вот пример если тебе надо загрузить анимированную моделm: Code Graphics3D 640,480 SetBuffer BackBuffer()
camera=CreateCamera() PositionEntity camera,0,20,-100 ; позиционируем камеру, чтобы видеть робота
light=CreateLight() RotateEntity light,90,0,0
; Загружаем анимированную модель robot=LoadAnimMesh("media/makbot/mak_robotic.3ds")
; Включаем анимацию 2. Она обновляется при выполнении команды UpdateWorld Animate robot,2
While Not KeyDown(1)
UpdateWorld ; Обновление анимации - без этой команды модель будет неподвижна RenderWorld ; Визуализация - просчет изображения Flip ; картинку - на экран
Wend
End Вот тебе щас список команд дам, которые тебе понадобяться в ближайщее время: Collisions-Включает столкновения между двумя различными типами объектов. Типы объектов - это номера, которые вы устанавливаете объекту при помощи комманды EntityType. Blitz использует типы объектов для проверки столкновений между всеми объектами, имеюшими данный тип. Blitz имеет много вариантов проверки столкновений, для этого используется параметр method. Однако, проверка столкновений осуществляется всегда как эллипсоид-к-чему-либо. Для того, чтобы Blitz знал, каков размер объекта, проверяемого на столкновения, Вы должны сначала установить радиус этого объекта при помощи команды EntityRadius. При установленном методе обработки столкновений эллипсоид-к-эллипсоиду (method=1), объектам, с которыми будут обрабатываться столкновения, тоже необходимо установить радиус (EntityRadius). При установленном методе обработки столкновений эллипсоид-к-паралелепипеду (method=3), объектам, с которыми будут обрабатываться столкновения, тоже необходимо установить габаритный контейнер или просто паралелепипед (EntityBox). При использовании метода эллипсоид-к-полигону (method=2) Вам не нужно определять ни радиус, ни габаритный контейнер. Blitz не только определяет столкновения, но и определяет взаимодействия между ними. Для этого используется параметр response. У Вас есть три варианта взаимодействий: 1-остановка объекта, 2-полное скольжение объекта, 3-скольжение только вверх. Проверка столкновений и взаимодействие объектов осуществляются при вызове функции UpdateWorld. И, наконец, всякий раз, когда используется комманда Collisions, информация о столкновениях добавляется в список, содержащий информацию о столкновениях, который может быть очищен в любое время с использованием команды ClearCollisions. Пример: ; Пример Collisions ; ------------------ Code Graphics3D 640,480 SetBuffer BackBuffer()
; Установка типов столкновений type_ground=1 type_character=2 type_scenery=3
camera=CreateCamera() RotateEntity camera,45,0,0 PositionEntity camera,0,15,-10
light=CreateLight() RotateEntity light,45,0,0
; Создать куб 'земля' cube=CreateCube() ScaleEntity cube,10,10,10 EntityColor cube,0,127,0 EntityType cube,type_ground PositionEntity cube,0,-5,0
; Создать сферу 'персонаж' sphere=CreateSphere( 32 ) EntityColor sphere,127,0,0 EntityRadius sphere,1 EntityType sphere,type_character PositionEntity sphere,0,7,0
; Разрешить столкновения между type_character и type_ground Collisions type_character,type_ground,2,2
; Создать цилиндр 'препятствие' cylinder=CreateCylinder( 32 ) ScaleEntity cylinder,2,2,2 EntityColor cylinder,0,0,255 EntityRadius cylinder,2 EntityBox cylinder,-2,-2,-2,4,4,4 EntityType cylinder,type_scenery PositionEntity cylinder,-4,7,-4
; Создать конус 'препятствие' cone=CreateCone( 32 ) ScaleEntity cone,2,2,2 EntityColor cone,0,0,255 EntityRadius cone,2 EntityBox cone,-2,-2,-2,4,4,4 EntityType cone,type_scenery PositionEntity cone,4,7,-4
; Создать призму 'препятствие' prism=CreateCylinder( 3 ) ScaleEntity prism,2,2,2 EntityColor prism,0,0,255 EntityRadius prism,2 EntityBox prism,-2,-2,-2,4,4,4 EntityType prism,type_scenery PositionEntity prism,-4,7,4 RotateEntity prism,0,180,0
; Создать пирамиду'препятствие' pyramid=CreateCone( 4 ) ScaleEntity pyramid,2,2,2 EntityColor pyramid,0,0,255 EntityRadius pyramid,2 EntityBox pyramid,-2,-2,-2,4,4,4 EntityType pyramid,type_scenery RotateEntity pyramid,0,45,0 PositionEntity pyramid,4,7,4
; Установка метода проверки столкновений и response method=2 response=2
method_info$="ellipsoid-to-polygon" response_info$="slide1"
While Not KeyDown( 1 )
x#=0 y#=0 z#=0
If KeyDown( 203 )=True Then x#=-0.1 If KeyDown( 205 )=True Then x#=0.1 If KeyDown( 208 )=True Then z#=-0.1 If KeyDown( 200 )=True Then z#=0.1
MoveEntity sphere,x#,y#,z# MoveEntity sphere,0,-0.02,0 ; gravity
; Выбор метода проверки столкновений If KeyHit( 50 )=True method=method+1 If method=4 Then method=1 If method=1 Then method_info$="ellipsoid-to-sphere" If method=2 Then method_info$="ellipsoid-to-polygon" If method=3 Then method_info$="ellipsoid-to-box" EndIf
; Выбор реакции на столкновение( response) If KeyHit( 19 )=True response=response+1 If response=4 Then response=1 If response=1 Then response_info$="stop" If response=2 Then response_info$="slide1" If response=3 Then response_info$="slide2" EndIf
; Разрешить столкновения между between type_character и type_scenery Collisions type_character,type_scenery,method,response
; Обработать столкновения UpdateWorld
RenderWorld
Text 0,0,"Use cursor keys to move sphere" Text 0,20,"Press M to change collision Method (currently: "+method_info$+")" Text 0,40,"Press R to change collision Response (currently: "+response_info$+")" Text 0,60,"Collisions type_character,type_scenery,"+method+","+response
Flip
Wend
End CreateCamera -Создает камеру и возвращает указатель на нее. Вы должны иметь по крайней мере одну камеру, чтобы увидеть что-нибудь в Вашем трехмерном мире. Более чем с одной камерой, Вы сможете сделать эффекты мультиэкрана или реалистичных зеркал. Камера может выводить изображение только в backbuffer. Если Вы хотите наложить 3D-изображение на рисунок или текстуру, тогда копируйте содержимое backbuffer-а в соответствующий буфер текстуры или изображения. Дополнительный родительский параметр позволяет Вам определять родительский объект для камеры так, чтобы, когда родитель будет перемещен, дочерняя камера будет двигаться вместе с ним. Однако, эта зависимость - односторонняя: применение команд движения к дочернему объекту не будет затрагивать родителя. Если родительский объект указан, камера появится в координатах 0,0,0 относительно позиции родительского объекта (локальная система координат, привязанная к родительскому объекту). ; Пример CreateCamera ; -------------------- Code Graphics3D 640,480 SetBuffer BackBuffer()
; Создаем камеру camera=CreateCamera()
light=CreateLight()
cone=CreateCone() PositionEntity cone,0,0,5
While Not KeyDown( 1 ) RenderWorld Flip Wend
End
http://blitz3d.mixbb.ru - форум по с++ и blitz3d.
|
|
| |