not by me, by rdb, no credit required (like he said)
from pandac.PandaModules import *
loadPrcFileData("", "interpolate-frames #t")
import direct.directbase.DirectStart
from direct.actor.Actor import Actor
from random import random
actor = Actor("panda", {"walk" : "panda-walk.egg"})
actor.reparentTo(render)
actor.setBin('background', 1)
def walkJointHierarchy(actor, part, parentNode = None, indent = ""):
if isinstance(part, CharacterJoint):
np = actor.exposeJoint(None, 'modelRoot', part.getName())
if parentNode and parentNode.getName() != "root":
lines = LineSegs()
lines.setThickness(3.0)
lines.setColor(random(), random(), random())
lines.moveTo(0, 0, 0)
lines.drawTo(np.getPos(parentNode))
lnp = parentNode.attachNewNode(lines.create())
lnp.setBin("fixed", 40)
lnp.setDepthWrite(False)
lnp.setDepthTest(False)
parentNode = np
for child in part.getChildren():
walkJointHierarchy(actor, child, parentNode, indent + " ")
walkJointHierarchy(actor, actor.getPartBundle('modelRoot'), None)
actor.loop("walk")
base.cam.setY(-50)
run()
This is particulary useful for debugging and for editors. I use this for debugging procedurally generated actor codeā¦