I am trying to set up a simple fighting program where the hand is a collisionSphere and the body is a collisionSphere and the program reports when they have contacted.
The problem is that the sphere on the hand, does not sit at the hand of my actor but moves near his feet. If I adjust the position by setting a different location when creating the collisionSphere or by use of setPos results in the collisionSphere moving opposite of the hand in motion (but at the right height)
Am I missing something? Shouldn’t parenting the collisionSphere to the hand bone result in the sphere being centered on the hand. A little help is nice as this is my first day playing with Panda.
ralphStartPos = self.environ.find("**/start_point").getPos()
self.ralph = Actor("models/robo_walk",
self.ralph.leftHand = self.ralph.exposeJoint(None,'modelRoot','Hand_L')
csL = CollisionSphere(0, 0, 0, 1)
cnodePathLH = self.ralph.leftHand.attachNewNode(CollisionNode('cnode_LeftHand'))
This works on Eve (Looking & Gripping tutorial) :
self.rightHand.attachCollisionSphere('s',0,0,0, 1, BitMask32.bit(0),BitMask32.allOff()).show()
Thank you for the fast reply. I tried that solution, but it still did not work. I tried to pack everything into a zip file to see if I could get a little help. This shows both the collisionSphere at the feet of the robot as well as the the one that is at normal height moving backwards.
How does the armature look in blender ? And why didn’t you export it with chicken ?
Ok, I tried to export the file from blender using the chicken exporter and it does not seem willing to export the animation. I watched the video tutorial and it does not act like my model. Maybe I am trying to do this wrong. I selected the armature and the mesh and tried to connect the mesh to the armature two different ways, but no dice
here is the blend file I am using
Your mesh is parented to the armature, which isn’t supported by chicken.
Once I exported it with chicken, the collision spheres are attached to both wrists, as expected.
All I did were :
- select the mesh
- unparent it from the armature, Object > Parent > Clear Track
- while it’s still selected, at Modifier tab (Editing panel / F9), click Add Modifier > Armature
- type the name of the Armature in the “Ob:” text box. If armature with the name you entered doesn’t exist, that text box would be cleared, otherwise that name stays there.
and run chicken.
I have somewhat similar problem.
first, blend is here pasteall.org/blend/3626
It contains Human mesh, armature, and one sphere which should be collision solid for left foot.
Mesh is animated, and sphere follows foot correctly, but it is not recognized as collision solid (even if it is tagged Collide:Sphere)
Oh, and i am using chicken version 91.
You already read this :
[Animated models and <Collide>)
Yeah, i am aware of that, i dont want to change shape of collision sphere, only position.
So this had to be done manually in code?
Isn’t the “-dart structured” the way to tell panda loader to process collision solids ?