Voir une liaison entres deux nodes.
Publié : dim. 19/mars/2023 21:46
J'ai fait un module de conception d'objet ou d'avatar animé.
Le principe est de créer des joints les uns aux autres et pour chaque joint créer une animation.
Une idée simpliste avec cette image.

Si vous souhaitez faire un test ça se passe ici : viewtopic.php?t=18894
Pour concevoir un skeleton plus complexe j'aurais besoin de voir les liaisons entre chaque joint.
Actuellement j'utilise la fonction CreateLine3D() pour tracer une ligne entres les joins. Mais c'est trop fin.
J'aimerais donc pouvoir mettre un cylindre fin entre les différentes liaisons mais ça dépasse mes compétences. Si vous savez faire je suis preneur. D'avance merci.
Un code dans lequel je met en place deux nodes représentés par deux entité.
Flèches gauche et droite pour voir sur différents cotés.
Le principe est de créer des joints les uns aux autres et pour chaque joint créer une animation.
Une idée simpliste avec cette image.

Si vous souhaitez faire un test ça se passe ici : viewtopic.php?t=18894

Actuellement j'utilise la fonction CreateLine3D() pour tracer une ligne entres les joins. Mais c'est trop fin.

Un code dans lequel je met en place deux nodes représentés par deux entité.
Flèches gauche et droite pour voir sur différents cotés.
Code : Tout sélectionner
EnableExplicit
; DPI Résolution
Define drx.f, dry.f, depX.f
Declare Distance3D(Node0, Node1)
drx = DesktopResolutionX()
dry = DesktopResolutionY()
InitEngine3D(#PB_Engine3D_DebugLog) : InitSprite() : InitKeyboard() : InitMouse()
ExamineDesktops()
OpenWindow(0, 0,0, DesktopWidth(0)*0.5,DesktopHeight(0)*0.5, "Test - [Esc] quit",#PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, WindowWidth(0)*drx, WindowHeight(0)*dry, 0, 0, 0)
CreateCamera(0, 0, 0, 100, 100) : MoveCamera(0, 0,1,-4) : CameraLookAt(0, 0,1,0)
CreateLight(0,$ffffff, -10000, 10000, 0)
AmbientColor($111111*3)
CameraBackColor(0,$444488)
; Création de deux nodes
CreateNode(0, 0,0,0)
CreateNode(1, 1,1,1)
; Création de deux petits cubes pour visualiser les nodes
CreateEntity(0, MeshID(CreateCube(#PB_Any, 0.1)), #PB_Material_None)
CreateEntity(1, MeshID(CreateCube(#PB_Any, 0.1)), #PB_Material_None)
; Attacher chaque entité sur leurs Nodes respectifs
AttachNodeObject(0, EntityID(0))
AttachNodeObject(1, EntityID(1))
; Puis j'attache le node 1 sur le node 2
AttachNodeObject(0, NodeID(1))
Repeat
While WindowEvent() : Wend
ExamineKeyboard()
depx=(-Bool(KeyboardPushed(#PB_Key_Left))+Bool(KeyboardPushed(#PB_Key_Right)))*0.5
RotateNode(0, 0, depx, 0, #PB_Relative)
RenderWorld()
FlipBuffers()
Until KeyboardReleased(#PB_Key_Escape)