|
3D-программирование Вопросы, касающиеся программирования 3D мира |
01.01.2006, 14:06
|
#1
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
В теме "Создание игры" я выкладывал код гонки.
Физика там была не кудышная. Помогите сделать нормальную физику
|
(Offline)
|
|
01.01.2006, 14:19
|
#2
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Сообственно вот и она
|
(Offline)
|
|
01.01.2006, 17:09
|
#3
|
|
юзать ode
за конкретными вопросами обращатся ко мне в асю
|
|
|
01.01.2006, 17:14
|
#4
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Тогда можно поподробней:
1.что это такое в общем
2.Много весит
3.Действительно реальная физика?
|
(Offline)
|
|
01.01.2006, 17:21
|
#5
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Вопрос наверное глупый:
придётся изучать ode или это подключаемая библиотека работающая под blitz3d?
|
(Offline)
|
|
01.01.2006, 17:40
|
#6
|
|
ето физический движок (последняя версия весит 5 метров)
написан на c++
существует враппер под blitz3d (~250 кб)
физика - зависит от тебя
|
|
|
01.01.2006, 17:49
|
#7
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Где можно это всё скачать?
|
(Offline)
|
|
01.01.2006, 18:16
|
#8
|
|
ode.org
а враппер в гугле по ищи
|
|
|
01.01.2006, 19:12
|
#9
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
ура там есть исходник гоночки!
отличная физика
p.s.где надыбать туториалы?
|
(Offline)
|
|
01.01.2006, 20:09
|
#10
|
|
туторов я невидел :/
|
|
|
01.01.2006, 20:23
|
#11
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
ну в принципе и так понятно
|
(Offline)
|
|
04.01.2006, 23:00
|
#12
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Originally posted by jimon@Jan 1 2006, 04:09 PM
юзать ode
за конкретными вопросами обращатся ко мне в асю
|
А чем сюда писать хуже?
|
(Offline)
|
|
05.01.2006, 18:28
|
#13
|
|
если нравится - пиши суда
|
|
|
06.01.2006, 12:06
|
#14
|
Элита
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений (для 252 пользователей)
|
Разьясните код:
AppTitle "ODE Demo - Monster Truckin"
Graphics3D 800,600,32,2
SetBuffer BackBuffer()
Color 255,255,255
SeedRnd(MilliSecs())
Include "ODE Interface Functions.bb"
HidePointer()
;-------------- CONSTANTS ---------------------------
Global gameFPS = 50 ;frame limiting
Const GRAVITY# = -0.98 ;default = -0.98
;-------------- GLOBALS ---------------------------
Global DLL_VERSION = 0
Global camang# = 0.0 ;camera y-axis rotation angle
Global camzoom# = 10.0 ;camera zoom
Global ODE_tempPivot = CreatePivot( )
Global cammode = 1
Global FRICTION# = 4.0 ;global friction - default = 4.0
;-------------- FONTS ---------------------------
Global FONT_arial20 = LoadFont("Arial",20,True,False,False)
Global FONT_arial12 = LoadFont("Arial",12,False,False,False)
Collisions COLTYPE_sphere,COLTYPE_poly,2,2
;-------------- type for vehicle ----------------
Type TYPE_vehicle
;control parameters
Field power#
Field steering#
Field power_response#
Field engine_torque#
Field power_damping#
Field steering_response#
;physical parts
Field body.ODE_Object
Field wheel.ODE_Object[4]
Field joints.ODE_Joint[4]
;ODE object identifiers
Field ODE_ID_body
Field ODE_ID_wheel[4]
Field ODE_ID_joint[4]
;shadow entities
Field wheelshadow[5]
;base vehicle coords
Field startx# , starty# , startz#
;bodyshell data
Field body_sizex# , body_sizey# , body_sizez#
Field bodymass#
Field bodymesh$
Field bodytexturename$
Field bodytexture
;wheel data
Field wheel_length_spacing#[4]
Field wheel_height_spacing#[4]
Field wheel_width_spacing#[4]
Field wheel_radius#[4]
Field wheel_mass#[4]
Field wheel_mesh$[4]
;suspension data
Field suspension_erp#
Field suspension_cfm#
End Type
;----------------------------------------------------------------
; B L I T Z S E T U P
;----------------------------------------------------------------
;game camera
Global camera1=CreateCamera()
CameraViewport camera1,0,0,800,600
PositionEntity camera1,0,10,-20
CameraClsColor camera1,120,120,160
RotateEntity camera1,30,0,0
CameraRange camera1,0.01,1000
;lighting
AmbientLight 150,150,150
Global light1 = CreateLight(1)
PositionEntity light1,500,500,-500
RotateEntity light1,0,-45,0
Global light2 = CreateLight(1)
PositionEntity light2,-500,500,500
RotateEntity light2,0,135,0
LightColor light2,50,50,100
;create the floor mesh
floor1 = LoadMesh("test.3ds")
ScaleMesh floor1,0.1,.1,.1
EntityColor floor1,255,255,255
EntityType floor1,COLTYPE_poly
PositionEntity floor1,0,0,0
EntityPickMode floor1,2
;----------------------------------------------------------------
; O D E S E T U P
;----------------------------------------------------------------
ODE_CreateWorld()
ODE_SetWorldGravity(GRAVITY#)
;create the monster truck
Global MonsterTruck.TYPE_vehicle = New TYPE_vehicle
Restore DATA_MonsterTruck
SetUpData(MonsterTruck)
;create the blue monster truck
Global MonsterTruckBlue.TYPE_vehicle = New TYPE_vehicle
Restore DATA_MonsterTruckBlue
SetUpData(MonsterTruckBlue)
;create the red monster truck
Global MonsterTruckRed.TYPE_vehicle = New TYPE_vehicle
Restore DATA_MonsterTruckRed
SetUpData(MonsterTruckRed)
;create the green monster truck
Global MonsterTruckGreen.TYPE_vehicle = New TYPE_vehicle
Restore DATA_MonsterTruckGreen
SetUpData(MonsterTruckGreen)
;temp object for positioning
Global temp.ODE_Object = New ODE_Object
Global nullpivot = CreatePivot()
;----------------------------------------------------------------
; P R E - G A M E S E T U P
;----------------------------------------------------------------
framePeriod = 1000/ gameFPS
frameTime = MilliSecs () - framePeriod
MoveMouse 400,300
;----------------------------------------------------------------
; M A I N L O O P
;----------------------------------------------------------------
While Not KeyHit(1)
;frame limiting
Repeat
frameElapsed = MilliSecs () - frameTime
Until frameElapsed
frameTicks = frameElapsed / framePeriod
frameTween# = Float (frameElapsed Mod framePeriod) / Float (framePeriod)
;game logic loop
For frameLimit = 1 To frameTicks
If frameLimit = frameTicks Then CaptureWorld
frameTime = frameTime + framePeriod
;keyboard control of vehicle
ControlVehicle(MonsterTruck)
;------------------------------------------------------------------------------------------
; POLYMESH COLLISION SYSTEM - sorts all the collisions and prepares the contact data
GLOBALCOLCOUNT = 0
;cycle through all physics objects
For ent.ODE_Object = Each ODE_Object
;check whether this object is a sphere
If (ent\obtype = 2)
;it IS a sphere so handle the mesh collision
If EntityCollided(ent\mesh,COLTYPE_poly)
;how many collisions for this object?
For c=1 To CountCollisions(ent\mesh)
;update the global collision array data which will get passed to the DLL
GLOBALCOLCOUNT = GLOBALCOLCOUNT + 1
c2 = GLOBALCOLCOUNT
GLOBALCOLS(c2)\x# = CollisionX(ent\mesh , c)
GLOBALCOLS(c2)\y# = CollisionY(ent\mesh , c)
GLOBALCOLS(c2)\z# = CollisionZ(ent\mesh , c)
GLOBALCOLS(c2)\nx# = CollisionNX(ent\mesh , c)
GLOBALCOLS(c2)\ny# = CollisionNY(ent\mesh , c)
GLOBALCOLS(c2)\nz# = CollisionNZ(ent\mesh , c)
;obtain object position
ODE_Get_Object_Position(ent\ODE_ID , ent)
;work out contact penetration depth and move object back along normal
;which will move it away from the collision point and thus reduce the
;penetration depth. This makes bouncing objects stop and come to rest
;correctly - otherwise they would bounce FOREVER! Mwuuuhahahaaa.
GLOBALCOLS(c2)\ob1 = ent\ODE_ID
GLOBALCOLS(c2)\ob2 = -1
;use linepick to establish the collision point
unused = LinePick( EntityX(ent\mesh,1),EntityY(ent\mesh,1),EntityZ(ent\mesh,1),(GLOBALCOLS(c2)\nx#)*-10,(GLOBALCOLS(c2)\ny#)*-10,(GLOBALCOLS(c2)\nz#)*-10 )
GLOBALCOLS(c2)\x# = PickedX#()
GLOBALCOLS(c2)\y# = PickedY#()
GLOBALCOLS(c2)\z# = PickedZ#()
PositionEntity nullpivot,GLOBALCOLS(c2)\x#,GLOBALCOLS(c2)\y#,GLOBALCOLS(c2)\z#
;work out the penetration depth for this contact
dist# = (EntityDistance(ent\mesh,nullpivot))
GLOBALCOLS(c2)\depth# = (ent\sizex# - dist#)
;reset the position to the last safe place
ODE_PositionObject(ent\ODE_ID , ent ,ent\safex#,ent\safey#,ent\safez#)
ent\x# = ent\safex#
ent\y# = ent\safey#
ent\z# = ent\safez#
Next
EndIf
EndIf
Next
;------------------------------------------------------------------------------------------
;now call the interface routine to store all the collisions and pass them to the DLL
ODE_PrepCols(FRICTION#,0 , 0.3,0.05 , 0,0 , 0,0 , 0,0 , 16)
;call the main physics worldstep function to advance the simulation
ODE_Worldstep(0.05 , FRICTION#,0 , 0.3,0.05 , 0,0 , 0,0 , 0,0 , 16)
;update the Blitz entities
For ent.ODE_Object = Each ODE_Object
If (ent\mesh)
ODE_Get_Object_Rotation(ent\ODE_ID , ent)
ODE_Get_Object_Position(ent\ODE_ID , ent)
;no collision so update safex safey safez
ent\safex# = ent\x#
ent\safey# = ent\y#
ent\safez# = ent\z#
EndIf
Next
;update game world logic
UpdateWorld
Next
;reposition objects - for some reason this gets around the sticky-objects problem
For ent.ODE_Object = Each ODE_Object
If (ent\mesh)
PositionEntity ent\mesh,ent\x#,ent\y#,ent\z#,1
EndIf
Next
;render
FUNC_Camera(MonsterTruck)
RenderWorld frameTween
;calculate FPS
If (frameTicks>0)
FPS = gameFPS/frameTicks
Else
FPS = gameFPS
EndIf
;on-screen version number and FPS counter
Color 255,255,255
SetFont FONT_arial12 : Text 770,30,"FPS"
SetFont FONT_arial20 : Text 750,28,FPS
SetFont FONT_arial12 : Text 720,10,"DLL VERSION "+DLL_VERSION
SetFont FONT_arial20 : Text 10,10,"MOUSE"
SetFont FONT_arial12 : Text 10,25,"ROTATE CAMERA"
SetFont FONT_arial20 : Text 10,40,"R"
SetFont FONT_arial12 : Text 10,55,"APPLY RESET FORCE"
SetFont FONT_arial20 : Text 10,70,"1 , 2"
SetFont FONT_arial12 : Text 10,85,"SELECT CAMERA VIEWS"
Flip
Wend
ClearWorld()
ODE_DestroyWorld()
End
;----------------------------------------------------------------
; C A M E R A
;----------------------------------------------------------------
Function FUNC_Camera(veh.TYPE_vehicle)
;allow camera mode change
If KeyHit(2) cammode = 1
If KeyHit(3) cammode = 2
;camera zoom on mouse wheel
camzoom# = camzoom# - MouseZSpeed()/2.0
Select cammode
;MODE 1: external rotating camera
Case 1
camang# = camang# + MouseXSpeed()/10.0
PositionEntity camera1,EntityX(veh\body\mesh,1),EntityY(veh\body\mesh,1),EntityZ(veh\body\mesh,1),True
RotateEntity camera1,0,camang#,0
MoveEntity camera1,0,camzoom#/2.0,-camzoom#
MoveMouse 400,300
PointEntity camera1,veh\body\mesh
;MODE 2: internal forward facing fixed camera
Case 2
PositionEntity camera1,EntityX(veh\body\mesh,1),EntityY(veh\body\mesh,1),EntityZ(veh\body\mesh,1),True
RotateEntity camera1,EntityRoll(veh\body\mesh,1),EntityYaw(veh\body\mesh,1)+90,-EntityPitch(veh\body\mesh,1),True
MoveEntity camera1,0,0.3,-0.2
TurnEntity camera1,0,0,0
End Select
End Function
;----------------------------------------------------------------
; SETUPDATA
; read in the required data for a vehicle
;----------------------------------------------------------------
Function SetUpData(veh.TYPE_vehicle)
veh\power# = 0.0
veh\steering# = 0.0
Read veh\ODE_ID_body
Read veh\ODE_ID_wheel[1]
Read veh\ODE_ID_wheel[2]
Read veh\ODE_ID_wheel[3]
Read veh\ODE_ID_wheel[4]
Read veh\ODE_ID_joint[0]
Read veh\ODE_ID_joint[1]
Read veh\ODE_ID_joint[2]
Read veh\ODE_ID_joint[3]
Read veh\power_response#
Read veh\engine_torque#
Read veh\power_damping#
Read veh\steering_response#
Read veh\startx#
Read veh\starty#
Read veh\startz#
Read veh\body_sizex#
Read veh\body_sizey#
Read veh\body_sizez#
Read veh\bodymass#
Read veh\bodymesh$
Read veh\bodytexturename$
For a=1 To 4
Read veh\wheel_length_spacing#[a]
Read veh\wheel_height_spacing#[a]
Read veh\wheel_width_spacing#[a]
Read veh\wheel_radius#[a]
Read veh\wheel_mass#[a]
Read veh\wheel_mesh$[a]
Next
Read veh\suspension_erp#
Read veh\suspension_cfm#
CreateVehicle(veh)
End Function
;----------------------------------------------------------------
; CREATEVEHICLE
; create a vehicle physics object
;----------------------------------------------------------------
Function CreateVehicle(veh.TYPE_vehicle)
;create the body object
veh\body.ODE_Object = New ODE_Object
veh\body\obtype = 1
ODE_CreateObject(veh\body\obtype , veh\ODE_ID_body , veh\body , veh\startx#,veh\starty#,veh\startz# , veh\body_sizex#,veh\body_sizey#,veh\body_sizez# , veh\bodymass# , 0)
ODE_RotateObject(veh\ODE_ID_body , veh\body ,0,0,0)
;load the required bodymesh model
FreeEntity veh\body\mesh
veh\body\mesh = LoadMesh(veh\bodymesh$)
ScaleMesh veh\body\mesh,0.045,0.045,0.045
RotateMesh veh\body\mesh,0,-270,0
EntityColor veh\body\mesh,255,255,255
veh\bodytexture = LoadTexture(veh\bodytexturename$)
EntityTexture veh\body\mesh , veh\bodytexture
;create the wheels
For w=1 To 4
veh\wheel.ODE_Object[w] = New ODE_Object
veh\wheel[w]\obtype = 2
ODE_CreateObject(veh\wheel[w]\obtype , veh\ODE_ID_wheel[w] , veh\wheel[w] , veh\startx#+veh\wheel_length_spacing#[w],veh\starty#+veh\wheel_height_spacing#[w],veh\startz#+veh\wheel_width_spacing#[w] , veh\wheel_radius#[w],0,0 , veh\wheel_mass#[w] , 0)
ODE_RotateObject(veh\ODE_ID_wheel[w] , veh\wheel[w] ,0,0,0)
;load the required wheelmesh model
FreeEntity veh\wheel[w]\mesh
veh\wheel[w]\mesh = LoadMesh("models\car\audi\wheel.3ds")
FitMesh veh\wheel[w]\mesh,-1,-1,-1,2,2,2
RotateMesh veh\wheel[w]\mesh,0,90,0
ScaleMesh veh\wheel[w]\mesh,veh\wheel_radius#[w],veh\wheel_radius#[w],0.1
EntityColor veh\wheel[w]\mesh,255,255,255
EntityType veh\wheel[w]\mesh,COLTYPE_sphere
EntityRadius veh\wheel[w]\mesh,veh\wheel_radius#[w]
Next
;create the 4 carwheel joints
veh\joints.ODE_Joint[0] = New ODE_Joint
veh\joints.ODE_Joint[1] = New ODE_Joint
veh\joints.ODE_Joint[2] = New ODE_Joint
veh\joints.ODE_Joint[3] = New ODE_Joint
ODE_CreateCarWheelJoint( veh\ODE_ID_joint[0] , 1 , veh\joints[0] , veh\ODE_ID_body , veh\ODE_ID_wheel[1] , veh\startx#+veh\wheel_length_spacing#[1],veh\starty#+veh\wheel_height_spacing#[1],veh\startz#+veh\wheel_width_spacing#[1] , 0.0,1.0,0.0 , 0.0,0.0,1.0)
ODE_CreateCarWheelJoint( veh\ODE_ID_joint[1] , 1 , veh\joints[1] , veh\ODE_ID_body , veh\ODE_ID_wheel[2] , veh\startx#+veh\wheel_length_spacing#[2],veh\starty#+veh\wheel_height_spacing#[2],veh\startz#+veh\wheel_width_spacing#[2] , 0.0,1.0,0.0 , 0.0,0.0,1.0)
ODE_CreateCarWheelJoint( veh\ODE_ID_joint[2] , 1 , veh\joints[1] , veh\ODE_ID_body , veh\ODE_ID_wheel[3] , veh\startx#+veh\wheel_length_spacing#[3],veh\starty#+veh\wheel_height_spacing#[3],veh\startz#+veh\wheel_width_spacing#[3] , 0.0,1.0,0.0 , 0.0,0.0,1.0)
ODE_CreateCarWheelJoint( veh\ODE_ID_joint[3] , 1 , veh\joints[1] , veh\ODE_ID_body , veh\ODE_ID_wheel[4] , veh\startx#+veh\wheel_length_spacing#[4],veh\starty#+veh\wheel_height_spacing#[4],veh\startz#+veh\wheel_width_spacing#[4] , 0.0,1.0,0.0 , 0.0,0.0,1.0)
;set the joints initial parameters
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[0],0,veh\joints[0] , veh\ODE_ID_body,veh\ODE_ID_wheel[1] , 0,50 , 0,0 , 0 , 0,80, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[1],0,veh\joints[1] , veh\ODE_ID_body,veh\ODE_ID_wheel[2] , 0,50 , 0,0 , 0 , 0,80, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[2],0,veh\joints[2] , veh\ODE_ID_body,veh\ODE_ID_wheel[3] , 0,50 , 0,0 , 0 , 0,80, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[3],0,veh\joints[3] , veh\ODE_ID_body,veh\ODE_ID_wheel[4] , 0,50 , 0,0 , 0 , 0,80, veh\suspension_erp#, veh\suspension_cfm#)
;create the four wheel shadows
veh\wheelshadow[1] = LoadSprite("shadow1.bmp")
SpriteViewMode veh\wheelshadow[1],2
ScaleEntity veh\wheelshadow[1],0.65,0.65,0.65
EntityBlend veh\wheelshadow[1],2
veh\wheelshadow[2] = CopyEntity(veh\wheelshadow[1])
veh\wheelshadow[3] = CopyEntity(veh\wheelshadow[1])
veh\wheelshadow[4] = CopyEntity(veh\wheelshadow[1])
End Function
;---------------------------------------------------------------
; POSITIONSHADOWS
; position the vehicle shadow entities
;----------------------------------------------------------------
Function PositionShadows(veh.TYPE_vehicle)
For w=1 To 4
unused = LinePick( EntityX(veh\wheel[w]\mesh,1),EntityY(veh\wheel[w]\mesh,1),EntityZ(veh\wheel[w]\mesh,1),0,-20,0)
AlignToVector veh\wheelshadow[w],PickedNX(),PickedNY(),PickedNZ(),1,1
AlignToVector veh\wheelshadow[w],-PickedNX(),-PickedNY(),-PickedNZ(),3,1
PositionEntity veh\wheelshadow[w],PickedX(),PickedY()+0.01,PickedZ()
Next
End Function
;----------------------------------------------------------------
; CONTROLVEHICLE
; keyboard control of the vehicle
;----------------------------------------------------------------
Function ControlVehicle(veh.TYPE_vehicle)
;steering and throttle controls
If KeyDown(203) veh\steering# = veh\steering# - 0.25
If KeyDown(205) veh\steering# = veh\steering# + 0.25
If (veh\steering# <> 0.0) veh\steering# = veh\steering# * 0.8
steering2# = (veh\steering# / veh\steering_response#)
If KeyDown(200) veh\power# = veh\power#+ veh\power_response#
If KeyDown(208) veh\power# = veh\power# - veh\power_response#
If (veh\power# <> 0.0) veh\power# = veh\power# * veh\power_damping#
If KeyDown(57) veh\power#=veh\power#+usk
ODE_Get_Carwheel_Joint_Angle1(0 , veh\joints[0])
ODE_Get_Carwheel_Joint_Angle1(1 , veh\joints[1])
ODE_Get_Carwheel_Joint_Angle1(2 , veh\joints[2])
ODE_Get_Carwheel_Joint_Angle1(3 , veh\joints[3])
steeringvel1# = (steering2# - veh\joints[0]\hingeangle1) * 2
steeringvel2# = (-steering2# - veh\joints[1]\hingeangle1) * 2
steeringvel3# = (steering2# - veh\joints[2]\hingeangle1) * 2
steeringvel4# = (-steering2# - veh\joints[3]\hingeangle1) * 2
lo# = -Pi/6.0
hi# = Pi/6.0
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[0],0,veh\joints[0] , veh\ODE_ID_body,veh\ODE_ID_wheel[1] , steeringvel1#,550 , lo#,hi# , 0 , veh\power#,veh\engine_torque#, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[1],0,veh\joints[1] , veh\ODE_ID_body,veh\ODE_ID_wheel[2] , steeringvel2#,550 , lo#,hi# , 0 , veh\power#,veh\engine_torque#, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[2],0,veh\joints[2] , veh\ODE_ID_body,veh\ODE_ID_wheel[3] , steeringvel3#,550 , lo#,hi# , 0 , veh\power#,veh\engine_torque#, veh\suspension_erp#, veh\suspension_cfm#)
ODE_SetCarWheelJointParams( veh\ODE_ID_joint[3],0,veh\joints[3] , veh\ODE_ID_body,veh\ODE_ID_wheel[4] , steeringvel4#,550 , lo#,hi# , 0 , veh\power#,veh\engine_torque#, veh\suspension_erp#, veh\suspension_cfm#)
;r to apply resetting force to vehicle
If KeyDown(19) ODE_Add_Relative_Force_To_Object(veh\ODE_ID_body , 0,(veh\bodymass# * 4),0 , -2,0,0 , 2 )
End Function
;-------------------------------------------------------------------------------------------------
; DATA FOR BLACK MONSTER TRUCK
;-------------------------------------------------------------------------------------------------
.DATA_MonsterTruck
Data 0,1,2,3,4 ;body ID , wheel IDs x 4
Data 0,1,2,3 ;joint IDs x 4
Data 0.2, 1.0 , 0.99 , 2.0 ;control params -
; steering_response#
Data 161.0 , 6.5 , -26.5 ;start pos x,y,z
Data 2.4 , 0.4 , 1.4 ;body object size x,y,z
Data 9.0 ;body mass
Data "models\car\audi\body.3ds" ;body mesh name
Data "truckBLK.bmp" ;texture name
Data -1.5 , -0.4 , 0.7 , 0.35 , 12.0 , "models\car\audi\wheel.3ds" ;wheel 1 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.4 , 0.7 , 0.35 , 12.0 , "models\car\audi\wheel.3ds" ;wheel 2 - x,y,z offset , rad , mass, mesh
Data -1.5 , -0.4 , -0.7 , 0.35 , 12.0 ,"models\car\audi\wheel.3ds";wheel 3 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.4 , -0.7 , 0.35 , 12.0 , "models\car\audi\wheel.3ds" ;wheel 4 - x,y,z offset , rad , mass, mesh
Data 0.75 , 0.6 ;suspension erp , cfm
;-------------------------------------------------------------------------------------------------
; DATA FOR BLUE MONSTER TRUCK
;-------------------------------------------------------------------------------------------------
.DATA_MonsterTruckBlue
Data 10,11,12,13,14 ;body ID , wheel IDs x 4
Data 5,6,7,8 ;joint IDs x 4
Data 0.2 , 1.0 , 0.99 , 2.0 ;control params -
; power_damping#
; steering_response#
Data 161.0 , 6.4 , -21.5 ;start pos x,y,z
Data 2.4 , 0.4 , 1.4 ;body object size x,y,z
Data 8.0 ;body mass
Data "truckBLK.3ds" ;body mesh name
Data "truckBLUE.bmp" ;texture name
Data -0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 1 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 2 - x,y,z offset , rad , mass, mesh
Data -0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 3 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 4 - x,y,z offset , rad , mass, mesh
Data 0.75 , 0.6 ;suspension erp , cfm
;-------------------------------------------------------------------------------------------------
; DATA FOR RED MONSTER TRUCK
;-------------------------------------------------------------------------------------------------
.DATA_MonsterTruckRed
Data 20,21,22,23,24 ;body ID , wheel IDs x 4
Data 9,10,11,12 ;joint IDs x 4
Data 0.2 , 1.0 , 0.99 , 2.0 ;control params -
; power_response#
; power_damping#
; steering_response#
Data 166.0 , 6.6 , -26.5 ;start pos x,y,z
Data 2.4 , 0.4 , 1.4 ;body object size x,y,z
Data 2.0 ;body mass
Data "truckBLK.3ds" ;body mesh name
Data "truckRED.bmp" ;texture name
Data -0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 1 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 2 - x,y,z offset , rad , mass, mesh
Data -0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 3 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 4 - x,y,z offset , rad , mass, mesh
Data 0.75 , 0.6 ;suspension erp , cfm
;-------------------------------------------------------------------------------------------------
; DATA FOR GREEN MONSTER TRUCK
;-------------------------------------------------------------------------------------------------
.DATA_MonsterTruckGreen
Data 30,31,32,33,34 ;body ID , wheel IDs x 4
Data 13,14,15,16 ;joint IDs x 4
Data 0.2 , 1.0 , 0.99 , 2.0 ;control params -
; power_response#
; engine_torque#
; power_damping#
; steering_response#
Data 166.0 , 6.75 , -21.5 ;start pos x,y,z
Data 2.4 , 0.4 , 1.4 ;body object size x,y,z
Data 2.0 ;body mass
Data "truckBLK.3ds" ;body mesh name
Data "truckGREEN.bmp" ;texture name
Data -0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 1 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , 0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 2 - x,y,z offset , rad , mass, mesh
Data -0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 3 - x,y,z offset , rad , mass, mesh
Data 0.9 , -0.6 , -0.7 , 0.35 , 12.0 , "wheelmesh.3ds" ;wheel 4 - x,y,z offset , rad , mass, mesh
Data 0.75 , 0.6 ;suspension erp , cfm
;------------------------------------------------------------------------
;Open Dynamics Engine
;Copyright (c) 2001,2002, Russell L. Smith.
;All rights reserved.
;
;Redistribution And use in source And binary forms, with Or without
;modification, are permitted provided that the following conditions
;are met:
;
;Redistributions of source code must retain the above copyright notice,
;this list of conditions And the following disclaimer.
;
;Redistributions in binary form must reproduce the above copyright notice,
;this list of conditions And the following disclaimer in the documentation
;And/Or other materials provided with the distribution.
;
;Neither the names of ODE's copyright owner nor the names of its
;contributors may be used To endorse Or promote products derived from
;this software without specific prior written permission.
;
;THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS And CONTRIBUTORS
;"AS IS" And ANY EXPRESS Or IMPLIED WARRANTIES, INCLUDING, BUT Not
;LIMITED To, THE IMPLIED WARRANTIES OF MERCHANTABILITY And FITNESS
;For A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
;OWNER Or CONTRIBUTORS BE LIABLE For ANY DIRECT, INDIRECT, INCIDENTAL,
;SPECIAL, EXEMPLARY, Or CONSEQUENTIAL DAMAGES (INCLUDING, BUT Not LIMITED
;To, PROCUREMENT OF SUBSTITUTE GOODS Or SERVICES; LOSS OF USE, DATA, OR
;PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
;LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, Or TORT (INCLUDING
;NEGLIGENCE Or OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
;SOFTWARE, EVEN If ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
;------------------------------------------------------------------------
|
(Offline)
|
|
06.01.2006, 13:26
|
#15
|
|
что именно разьяснить ?
|
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 11:11.
|