forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   Обсужение учебника по PhysX Wrapper для Blitz3D (http://forum.boolean.name/showthread.php?t=7569)

3ghost 22.09.2009 07:05

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Подскажите в чем проблема: Делал заскиненую веревку и столкнулся с проблемой когда начинаю отпарент?овать кости сама веревка встает в другую позицию и плюс к этому ее всю перекручивает:4to: . Так же и с сэмплом рэгдола из учебника правда там эт прикольно выглядит особено руки аля халк:crazy:.
P.s. Эт все чудо происходит в Xors3D в блитце "веревку" не проверял, а рэгдол работает нормально, думается что где то в ксорсе заковыка,а то есть что то, где то не докрутил.

tormoz 22.09.2009 18:15

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Цитата:

Сообщение от 3ghost (Сообщение 119337)
Подскажите в чем проблема: Делал заскиненую веревку и столкнулся с проблемой когда начинаю отпарент?овать кости сама веревка встает в другую позицию и плюс к этому ее всю перекручивает:4to: . Так же и с сэмплом рэгдола из учебника правда там эт прикольно выглядит особено руки аля халк:crazy:.
P.s. Эт все чудо происходит в Xors3D в блитце "веревку" не проверял, а рэгдол работает нормально, думается что где то в ксорсе заковыка,а то есть что то, где то не докрутил.


А разве у физиксовской веревки есть кости ?
Делал веревки на ксорсе, и выяснил, что нельзя в реалтайме укорачивать, можно только удлиннять. Если нужно укоротить - приходится всю веревку пересоздавать заново.
Вообще крайне капризная вещь - тряпки веревки. Часто беспричинно вываливаются в мав, непредсказуемо дергаются и тд

3ghost 23.09.2009 01:19

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Вложений: 3
я как хотел сделать, есть меш заскиненый, кости и боди для костей. Кости отпарент?иваются и цепляются к соответствующим боди, боди цепляются джоинтами и в принципе должна получиться веревка ну или рэгдол змеи для кого как. Во общем при отпарент?овании меш сдвигается и скручивается.
на скринах все видно:
1й скрин-до,2й-после и 3й если применить xEntityparent ко всему мешу и по моему такого быть не должно.

ABTOMAT 23.09.2009 02:12

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
А что физиксовый дебаггер показывает?
По скрину - явно проблема с костями

3ghost 23.09.2009 04:30

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Вложений: 1
2ABTOMAT физ.дебагер показывает что все нормально. И да вот как выглядит твой сэмпл рэгдола(Xors3d):

ABTOMAT 24.09.2009 02:05

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Ну, это тогда к ксорсу...
Кстати я не уверен, что ты верно перевёл.

3ghost 25.09.2009 06:42

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Вполне возможно что не правильно.
Вот сам код:
Код:

Include "xors3d.bb"
xGraphics3D 800,600,32,0,0
xSetBuffer xBackBuffer()

pxCreateWorld(1,"http://forum.boolean.name/")

Log=xCreateLog(1,0,"log.html")

cam = xCreateCamera()
xPositionEntity cam,0,100,-200
xCameraClsColor cam,128,128,128
xCreateLight()

plane =xCreateCube()
xScaleEntity plane,1000,1,1000
xPositionEntity plane,0,0,0
xEntityColor plane, 0,128,128

Global Spetsnaz = xLoadAnimMesh("Spetsnaz.b3d")
Global Walk = xLoadAnimSeq(Spetsnaz, "Walk.b3d")
Global SpetsnazPX = xLoadAnimMesh("SpetsnazPX.b3d")

xHideEntity  Spetsnaz
xHideEntity SpetsnazPX

Global Kalash = xLoadSound("ak47-1.wav")

Repeat






        If xKeyHit(57) Then CreateMan(Spetsnaz, SpetsnazPX,Rand(-100,100),50,Rand(0,100))
        If xKeyHit(42) Then RagDollAllMen()
       
        If xMouseHit(1) Then Shoot(cam, xMouseX(), xMouseY())
        pxRenderPhysic(30,0)
        UpdateRagdolls()
        xUpdateWorld()
        xRenderWorld()
        xFlip
Until xKeyHit(1)
End

Type Ragdoll
        Field Mesh ; Ìîäåëüêà
        Field Joints[100] ; Õåíäëû äæîéíòîâ
        Field Bodies[100] ; Õåíäëû òåë
        Field Bones[100] ; Õåíäëû êîñòåé
End Type

Function CreateRagdoll(man, px)
        xAnimate man,0,0,1
        R.Ragdoll = New Ragdoll       
                R\Mesh = xGetChild(man,0)
                xEntityParent R\Mesh,0
                xFreeEntity man
        CreateHullsForAllChilds(R\Mesh, px, R)
        DeparentAllChilds(R\Mesh)
End Function

Function DeparentAllChilds(mesh)
        Repeat
                If xCountChildren(mesh)-1 = 0 Then Exit
                DeparentAllChilds(xGetChild(mesh,0))
        Forever
                xEntityParent mesh,0
End Function

Function UpdateRagdolls()
        For R.Ragdoll = Each Ragdoll
                For i= 0 To 100
                        If R\Bodies[i] = 0 Then Exit
                        pxBodySetEntity R\Bones[i], R\Bodies[i]
                Next
        Next
End Function

Function CreateHullsForAllChilds(mesh, pxmesh, R.Ragdoll, batya=0)
        HullMesh = xFindChild(pxmesh, xEntityName(mesh)+"px")
        If HullMesh Then
                Hull = BodyCreateHull(HullMesh, 10);pxBodyCreateSphere(1,10)
                pxBodySetPosition Hull, xEntityX(Mesh,1), xEntityY(Mesh,1), xEntityZ(Mesh,1)
                pxBodySetRotation Hull, xEntityPitch(Mesh,1), xEntityYaw(Mesh,1), xEntityRoll(Mesh,1)
               
                For i=0 To 100
                        If R\Bodies[i] = 0 Then
                                R\Bodies[i] = Hull
                                R\Bones[i] = Mesh
                                Exit
                        End If
                Next               
                If Batya Then
                        Joint = pxJointCreateSpherical (batya,Hull,pxBodyGetPositionX(Hull),pxBodyGetPositionY(Hull),pxBodyGetPositionZ(Hull),0,1,0)
                        pxJointSphericalSetLimitAngle(Joint, 30,1, 0)
                        pxJointSphericalSetLimitTwist(Joint,-10,10,10,1,0)
                        pxJointSphericalSetLimitSpring(Joint, 10, 1, 0)
                        For i=0 To 100
                        If R\Joints[i] = 0 Then
                                R\Joints[i] = Joint
                                Exit
                        End If
                Next       
                End If
        End If
        For i=1 To xCountChildren(mesh)-1
                CreateHullsForAllChilds(xGetChild(mesh,i), pxmesh, R, Hull)
        Next
End Function

Function BodyCreateHull%(mesh,mass)
VB = xGetMeshVB(mesh)
VB_size = xGetMeshVBSize(mesh)

in_mesh%=pxBodyCreateHull(VB,VB_size,mass)
xDeleteMeshVB(VB)
Return in_mesh
End Function

Type Man
        Field Mesh
        Field pxMesh
        Field PickPivot
End Type

Function CreateMan(Mesh, pxMesh, x#,y#,z#)
        M.Man = New Man
        M\Mesh = xCopyEntity(Mesh)
        xPositionEntity M\Mesh,x,y,z
        xAnimate M\Mesh,1,.5,1
        M\PXMesh = PXMesh
       
        M\PickPivot = xCreatePivot()

        xPositionEntity M\PickPivot,x,y+35,z
        xEntityPickMode M\PickPivot, 1
        xEntityRadius M\PickPivot,15,40
End Function

Function RagDollAllMen()
        For M.Man = Each Man
                CreateRagdoll(M\Mesh, M\pxMesh)
                xFreeEntity M\PickPivot
                Delete M
        Next
End Function

Function Shoot(cam, x,y)
        xPlaySound Kalash
        xCameraPick cam, x,y       
        If xPickedEntity() Then
                For M.Man = Each Man
                        If M\PickPivot = xPickedEntity() Then
                                CreateRagdoll(M\Mesh, M\pxMesh)
                                xFreeEntity M\PickPivot
                                Delete M
                                Exit
                        End If
                Next
        End If
End Function


ABTOMAT 25.09.2009 12:20

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Явно где-то какой-то чайлд неотпарентчен (по скрину)
Приду домой - буду пробовать выяснять в чём дело

В принципе у себя в РПГ я юзал способ создания регдолла посложнее - без отпарентивания костей. Дак там никаких проблем не было (при переходе на ксорс). Это единственное принципиальное различие (не считая пре-обработки) - там и буду ковырять

CRASHER 28.09.2009 20:44

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
3ghost, у меня была такая штука. Переустанови блитз и заново закинь в него хорс и физикс. Используй все самое новое!!! это важно!
ЗЫ: Возможно даже придется скачивать инстали для них снова

Slavik 03.10.2009 18:18

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Товарещи у меня такой вапрос.Установил PhysX Wrapper для Blitz3D а через время заметел проблему,что после запуска фаила,примерно через четыре-шесть минут (PhysX-физические тела завесают) тоесть камера вертится а остольные функции не действуют.Может я чето при установке напутал или ключ какой нужен?

ABTOMAT 03.10.2009 18:44

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Нужен ключ.

soneek 29.10.2009 13:17

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
А где взять то ключик?

jimon 29.10.2009 15:10

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
soneek
купить http://xors3d.com/licensing
или попросить у разработчиков и показать зачем тебе нужен ключ

Damp 29.10.2009 17:38

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Чего-то попытался перейти на
www.rubux.net
а там ничего нет.
Может сайт куда-то переехал?

Knightmare 29.10.2009 17:41

Ответ: Обсужение учебника по PhysX Wrapper для Blitz3D
 
Да, переехал на тот свет.


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

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