Animation blending/halfbody animation

I have a character that Im animating. He needs to be able to run, attack, jump, etc
My question is: how do I make it so that the attack animation can play while the running animation is also playing. Same thing with attacking and jumping.
Is it easier to just make separate animations of the character attacking and running?
I read this and it looks like I need “half body animation”, but I have not been able to find any info.
Thanks in advance

You might want to try multipart actors:

Using multipart actors you can let the legs run while the body attacks or so.

An even better solution would be subpart actors, which is unfortunately not documented in the manual yet, but see the generated API docs:


Thank you both of you
I have a new problem
Im trying to list the joints of a model

print Actor.listJoints(self.person)

that gives me this error

File “debtmp/usr/share/panda3d/direct/src/directnotify/”, line 122, in error
StandardError: no lod named: lodRoot

Any ideas? I dont even know what lod is unless it means Level of Detail but then Im still lost

The Actor class has a concept of multiple levels of detail. Each LOD has a unique name. When you don’t use LOD’s, it assigns a default name to the overall model, which is “lodRoot”. So normally, every Actor has either several named LOD’s, or one model called “lodRoot”.

Since your Actor doesn’t appear to have a model called “lodRoot”, you must have accidentally enabled LOD’s, maybe with one of your parameters to the Actor constructor, or to some other Actor method.


I dont think so. I made a program just for listing the joints:

class Character(DirectObject):
	def __init__(self):
		self.person = Actor('Model2.egg')
		print Actor.listJoints(self.person)
c = Character()

Same error.

Actually I just realized something. Could it be because the model Im using is not actually a character? Sorry I should have posted this before:

Actor(warning): Model2.egg is not a character!

Oh, yeah. That would certainly cause problems. Actor doesn’t work at all unless you give it a character.


I think you should use loader.loadModel(“Model2.egg”) instead of Actor(‘Model2.egg’) .