forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Xors3D (http://forum.boolean.name/forumdisplay.php?f=126)
-   -   Xors3D + PhysX Проблема (http://forum.boolean.name/showthread.php?t=7593)

Townboy 08.01.2009 00:10

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


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

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

NitE 08.01.2009 00:34

Re: Xors3D + PhysX Проблема
 
не используй этот глючный отстой, здоровее будешь (я про ксорс)...

tormoz 08.01.2009 04:30

Ответ: Xors3D + PhysX Проблема
 
А стены у тебя физобъекты ?

еще: устрой модели уровня в максе перед экспортом резет Хформ

Townboy 08.01.2009 09:43

Ответ: Xors3D + PhysX Проблема
 
NitE Аче Xors так уж плох ?

tormoz мона поподробней? я с максом не очень дружу :)

newman 08.01.2009 11:18

Ответ: Xors3D + PhysX Проблема
 
Цитата:

Сообщение от Townboy (Сообщение 94033)
NitE Аче Xors так уж плох ?

tormoz мона поподробней? я с максом не очень дружу :)

1)Xors не плох, просто таварищу NitE, не дали ключик от него, вот он ИМХО и злится.

2)Выдели все объекты потом справо на боковой панели выбери "Hierarchy"->"Affect Pivot Only" потом ниже "Center to Object" и потом ниже во вкладке "Adjust Transform" нажми "Transform"

Townboy 08.01.2009 11:31

Ответ: Xors3D + PhysX Проблема
 
хех не фурычит все сделал как сказал.. может выложишь че нить ну там плоскость + пару стенок... а то может я че нитак делаю

johnk 08.01.2009 12:30

Ответ: Xors3D + PhysX Проблема
 
Townboy, про X Form:
http://forum.boolean.name/showpost.p...50&postcount=4

Townboy 08.01.2009 13:11

Ответ: Xors3D + PhysX Проблема
 
Вложений: 1
с моделями все норм.. использую с проекта..

http://forum.boolean.name/showthread.php?t=3959 и
http://forum.boolean.name/showthread.php?t=4340

я эти сцены юзал с Blitz3D + PhysX..
а с Xors чета не хочет фурычить..
может в коде че не так..

Mr_F_ 08.01.2009 15:24

Ответ: Xors3D + PhysX Проблема
 
pxSetDX9Entity или щото типа того есть в коде?
с некоторых версий ксорса не рабит.
используй прямую установку мешей в коорды боди и наоборот.

Townboy 08.01.2009 15:38

Ответ: Xors3D + PhysX Проблема
 
pxDX9BodySetEntity есть а pxSetDX9Entity нету

Xors version 1.1

используй прямую установку мешей в коорды боди и наоборот...


мона поподробней ?

NitE 08.01.2009 16:50

Re: Xors3D + PhysX Проблема
 
xpostionentity carmesh,pxbodygetentityx(carphys)... и т.д.
newman, неверное имхо, как я уже кое-где писал - убрать проверку ключа дело на 20 мин... просто меня ещё раньше АВТОМАТ предупреждал что это отстой глючный, я скачал офф. примеры и он ниодин не запустил - в каждом разные ошибки - после такого даже разбиратся нехочется в чем дело... ктомуже на офф. сайте ясно написано что Beta а значит тока для мазохистов которым нравится не игру делать а чужие ошибки править...

Townboy 08.01.2009 17:18

Ответ: Xors3D + PhysX Проблема
 
Ну с чемто я согласен но всёже в Xorse есть плюсы подержка DirectX 9
конешно как выйдет финал будет лутше

но всеже чето я непонимаю в Blitz3D я юзал вот это
Код:

Function CreateTriMesh(inmesh%)
       
    outmmesh=CreateMesh()
    outsurf=CreateSurface(outmmesh)
    outvc=0
    For sc=1 To CountSurfaces(inmesh)
        insurf=GetSurface(inmesh,sc)
       
        For vc=0 To CountVertices(insurf)-1
            NewV=AddVertex(outsurf,VertexX(insurf,vc),VertexY(insurf,vc),VertexZ(insurf,vc))
        Next
   
        For tc=0 To CountTriangles(insurf)-1
            AddTriangle(outsurf,outvc+TriangleVertex(insurf,tc,0),outvc+TriangleVertex(insurf,tc,1),outvc+TriangleVertex(insurf,tc,2))
        Next
       
        outvc=outvc+CountVertices(insurf)
    Next
    UpdateNormals outmmesh

        nsurf = CountSurfaces(outmmesh )
        nvert = 0
        nface=0
        For ns = 1 To nsurf
            Local surf = GetSurface(outmmesh ,ns)
            nface = nface+CountTriangles(surf)
            nvert = nvert +CountVertices(surf)
        Next
   
        fbank = CreateBank(nface*4*3)
        nf = 0
        vbank = CreateBank(nvert*4*3)
        nv = 0
        For ns = 1 To nsurf
            surf = GetSurface(outmmesh,ns)
            nfv = CountTriangles(surf)
            For nfc = 0 To nfv -1
                PokeInt fbank,nf*12+0,TriangleVertex(surf,nfc,0)
                PokeInt fbank,nf*12+4,TriangleVertex(surf,nfc,1)
                PokeInt fbank,nf*12+8,TriangleVertex(surf,nfc,2)
                nf=nf+1
            Next
   
            nvv = CountVertices(surf)
            For nvc = 0 To nvv - 1
                PokeFloat vbank,nv*12+0,VertexX(surf,nvc)
                PokeFloat vbank,nv*12+4,VertexY(surf,nvc)
                PokeFloat vbank,nv*12+8,VertexZ(surf,nvc)
                nv = nv+1
            Next
        Next
        bbb%=pxCreateTriMesh(vbank, fbank, nvert, nface,0)
        FreeBank vbank
        FreeBank fbank
        FreeEntity outmmesh
        Return bbb%
End Function

а в Xors вот это по идее, это замена выше написано
Код:

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

вот не могу понять причем здесь сцена

ABTOMAT 08.01.2009 17:19

Ответ: Re: Xors3D + PhysX Проблема
 
Цитата:

Сообщение от NitE (Сообщение 94056)
просто меня ещё раньше АВТОМАТ предупреждал что это отстой глючный

Ну скажем так я выражался не столь грубо :-D
Моё личное мнение о нём: для автомобильной аркады с тенями и бампом вполне годится, а РПГ я писать на нём не рискнул.

Townboy 08.01.2009 17:23

Ответ: Xors3D + PhysX Проблема
 
вот я чтото типо аркады на авто и хачу чисто для себя..
я раньше не занимался такам ну всеже хочется научится хотябы первоначяльные знания :)

tormoz 08.01.2009 19:42

Ответ: Xors3D + PhysX Проблема
 
У меня с физикой никаких проблем
в том числе и на автоаркаде

проблемы есть с парентами :)


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot