Показать сообщение отдельно
Старый 08.01.2009, 00:10   #1
Townboy
AnyKey`щик
 
Регистрация: 11.12.2007
Сообщений: 18
Написано одно полезное сообщение
(для 0 участников)
Xors3D + PhysX Проблема

Вот стандартный пример Pabeda на Xors +PhysX вроде сделал все правильно
только машина проезжает сквозь стены...

Include "xors3d.bb"

xGraphics3D 1024,768,32,0,0

;Lights
light = xCreateLight()

;Camera
camera = xCreateCamera()
xPositionEntity camera,0,40,-40
xRotateEntity camera,20,0,0

;PX
pxCreateWorldWithoutDrivers(0, "key")
PxCreateWorld(0, "key")
pxSetGravity(0,-30,0)

;level
level = xLoadMesh ("level.b3d")
xPositionMesh level, 0,-2,0
xScaleMesh level,5,5,5

Видимо сдесь проблема ну по примеру все верно..  хм  странно   

VB = xGetMeshVB(level)
VB_size = xGetMeshVBSize(level)
IB = xGetMeshIB(level)
IB_size=xGetMeshIBSize(level)
in_mesh=pxCreateTriMesh(VB, IB, VB_size, IB_size, 0)


tile = xLoadTexture("..\media\textur.bmp")
xScaleTexture tile,0.02,0.02
xEntityTexture level,tile


;---------Create car------------
car_mesh = xLoadMesh("..\media\pobeda.b3d")
xScaleMesh car_mesh,5,5,5
xRotateEntity car_mesh ,0,90,0
xPositionEntity car_mesh ,0,8,0

car_phys_mesh = xLoadMesh("..\media\pobeda_phys.b3d")
xScaleMesh car_phys_mesh,5,5,5
xRotateEntity car_phys_mesh ,0,90,0
xPositionEntity car_phys_mesh ,0,8,0
xEntityAlpha car_phys_mesh,0

VB = xGetMeshVB(car_phys_mesh)
VB_size = xGetMeshVBSize(car_phys_mesh)

car_body=pxBodyCreateHull(VB, VB_size,1000)
pxBodySetPosition (car_body, 0, 15 ,0)
pxBodySetRotation (car_body, 0, 90, 0)
pxBodySetCMassLocalPosition(car_body, 0, -4, 0)

;------- front wheel-----------
wheel_fr1_body = pxWheelAddToBody(car_body, -4, -2, 8.5)
pxWheelSetRadius(wheel_fr1_body,  2)
pxWheelSetSuspension(wheel_fr1_body,1,200,1)
wheel_fr1_mesh = xLoadMesh ("..\media\pobeda_wheel.b3d")
xRotateMesh wheel_fr1_mesh,0,180,0
xScaleEntity wheel_fr1_mesh,5,5,5

wheel_fr2_body = pxWheelAddToBody(car_body, 4, -2, 8.5)
pxWheelSetRadius(wheel_fr2_body,  2)
pxWheelSetSuspension(wheel_fr2_body,1,200,1)
wheel_fr2_mesh = xLoadMesh ("..\media\pobeda_wheel.b3d")
xScaleEntity wheel_fr2_mesh,5,5,5

;-------back wheel------------
wheel_bac1_body = pxWheelAddToBody(car_body, -4, -2, -6.5)
pxWheelSetRadius(wheel_bac1_body,  2)
pxWheelSetSuspension(wheel_bac1_body,1,200,1)
wheel_bac1_mesh = xLoadMesh ("..\media\pobeda_wheel.b3d")
xRotateMesh wheel_bac1_mesh,0,180,0
xScaleEntity wheel_bac1_mesh,5,5,5

wheel_bac2_body = pxWheelAddToBody(car_body, 4, -2, -6.5)
pxWheelSetRadius(wheel_bac2_body,  2)
pxWheelSetSuspension(Wheel_bac2_body,1,200,1)
wheel_bac2_mesh =  xLoadMesh ("..\media\pobeda_wheel.b3d")
xScaleEntity wheel_bac2_mesh,5,5,5

pxWheelSetFrictionToSide(Wheel_fr1_body, 50000)
pxWheelSetFrictionToSide(Wheel_fr2_body, 50000)
pxWheelSetFrictionToSide(Wheel_bac1_body, 50000)
pxWheelSetFrictionToSide(Wheel_bac2_body, 50000)


;Main Loop
Repeat

xPointEntity camera, car_mesh

If xKeyDown (205) ang = ang+1
If xKeyDown (203) ang = ang-1
If xKeyDown (200) motor = motor+5
If xKeyDown (208) motor = motor-5

If motor>400 motor = 400
If motor<-400 motor = -400
pxWheelSetMotorTorque(wheel_bac1_body, motor)
pxWheelSetMotorTorque(wheel_bac2_body, motor)

If ang>30 ang = 30
If ang<-30 ang = -30
    pxWheelSetSteerAngle(wheel_fr1_body,  ang)
    pxWheelSetSteerAngle(wheel_fr2_body,  ang)

    pxWheelSetBrakeTorque(wheel_bac1_body,  1)
    pxWheelSetBrakeTorque(wheel_bac2_body,  1)
    
If xKeyDown (57)
    pxWheelSetBrakeTorque(wheel_bac1_body,  500)
    pxWheelSetBrakeTorque(wheel_bac2_body,  500)
    motor=0
EndIf

pxRenderPhysic(60,0)

xUpdateWorld
xRenderWorld

xUpdatePhysxPose car_mesh

pxDX9BodySetEntity(car_mesh,car_body)


MeshSetToWheel(wheel_fr1_mesh, wheel_fr1_body)
MeshSetToWheel(wheel_fr2_mesh, wheel_fr2_body)
MeshSetToWheel(wheel_bac1_mesh, wheel_bac1_body)
MeshSetToWheel(wheel_bac2_mesh, wheel_bac2_body)


    xText 10,10, "FPS  "+xGetFPS()
    xText 10,30, "TrisRendered  "+xTrisRendered()
    xText 10,50,"angle= "+ang+ "  motor=  "+ motor
 
xFlip
Until xKeyHit(1) Or xWinMessage("WM_CLOSE")

Function MeshSetToWheel (mesh%, body%)
 
    pxWheelUpdateSpec(body,1)
    posX# = pxWheelGetPositionXSpec#(body%)
    posY# = pxWheelGetPositionYSpec#(body%)
    posZ# = pxWheelGetPositionZSpec#(body%)
    rotX# = pxWheelGetRotationPitchSpec(body%)
    rotY# = pxWheelGetRotationYawSpec(body%)
    rotZ# = pxWheelGetRotationRollSpec(body%)
    
    xPositionEntity mesh, posX,posY,posZ
    xRotateEntity mesh, rotX,rotY,rotZ
End Function

помогите если знаете...

за рание спасибо =)

Последний раз редактировалось SBJoker, 08.01.2009 в 01:02.
(Offline)
 
Ответить с цитированием