Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 01.01.2006, 14:06   #1
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
В теме "Создание игры" я выкладывал код гонки.
Физика там была не кудышная. Помогите сделать нормальную физику
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 14:19   #2
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Сообственно вот и она
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 17:09   #3
jimon
 
Сообщений: n/a
юзать ode
за конкретными вопросами обращатся ко мне в асю
 
Ответить с цитированием
Старый 01.01.2006, 17:14   #4
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Тогда можно поподробней:
1.что это такое в общем
2.Много весит
3.Действительно реальная физика?
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 17:21   #5
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Вопрос наверное глупый:
придётся изучать ode или это подключаемая библиотека работающая под blitz3d?
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 17:40   #6
jimon
 
Сообщений: n/a
ето физический движок (последняя версия весит 5 метров)
написан на c++
существует враппер под blitz3d (~250 кб)

физика - зависит от тебя
 
Ответить с цитированием
Старый 01.01.2006, 17:49   #7
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
Где можно это всё скачать?
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 18:16   #8
jimon
 
Сообщений: n/a
ode.org
а враппер в гугле по ищи
 
Ответить с цитированием
Старый 01.01.2006, 19:12   #9
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
ура там есть исходник гоночки!
отличная физика
p.s.где надыбать туториалы?
(Offline)
 
Ответить с цитированием
Старый 01.01.2006, 20:09   #10
jimon
 
Сообщений: n/a
туторов я невидел :/
 
Ответить с цитированием
Старый 01.01.2006, 20:23   #11
ZanoZa
Элита
 
Регистрация: 02.10.2005
Сообщений: 1,789
Написано 132 полезных сообщений
(для 252 пользователей)
ну в принципе и так понятно
(Offline)
 
Ответить с цитированием
Старый 04.01.2006, 23:00   #12
ZanoZa
Элита
 
Регистрация: 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
jimon
 
Сообщений: n/a
если нравится - пиши суда
 
Ответить с цитированием
Старый 06.01.2006, 12:06   #14
ZanoZa
Элита
 
Регистрация: 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
jimon
 
Сообщений: n/a
что именно разьяснить ?
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
физика NitE BlitzMax 5 23.07.2010 00:00
Физика автомобиля для игр. H@NON Физика 1 25.04.2010 16:05
Физика Petrofan 3D-программирование 9 30.01.2009 20:56
Физика автомобиля без физических движков Sashka007 3D-программирование 3 14.11.2008 13:25
Физика! pipns 3D-программирование 7 06.07.2007 22:46


Часовой пояс GMT +4, время: 14:56.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com