Hi all
Would it be possible to bake out the agent animation, generated by the crowd solver, back to bones? Or even fbx-joints?
Plot crowd agent animation back to bones
1756 2 2- mackerBaehr
- Member
- 81 posts
- Joined: Feb. 2014
- Offline
- cwhite
- Staff
- 727 posts
- Joined: Oct. 2012
- Offline
There's an open RFE to have an easy way to bring an agent's joint transforms into CHOPs (such as a new mode on the Agent CHOP), but it could probably also be done with the new wrangle CHOP and the agentlocaltransform() VEX function.
You'd have to be careful about the rotation order (bones use ZYX) and the presence of any pretransforms on the objects.
If you're not trying to transfer it back onto the original rig, the following snippet may be a useful starting point - it builds a joint hierarchy and sets their transforms to match the agent's current pose.
You'd have to be careful about the rotation order (bones use ZYX) and the presence of any pretransforms on the objects.
If you're not trying to transfer it back onto the original rig, the following snippet may be a useful starting point - it builds a joint hierarchy and sets their transforms to match the agent's current pose.
# 'agent' is a hou.Agent instance, such as geo.iterPrims()[0] root = hou.node("/obj") subnet = root.createNode("subnet", "import_from_agent") rig = agent.definition().rig() # Create joints. joints = [] for xform_idx in range(0, rig.transformCount()): xform_name = rig.transformName(xform_idx) joint = subnet.createNode("null", xform_name) joint.setParmTransform(agent.localTransform(xform_idx)) joints.append(joint) # Wire up the nodes. for xform_idx, joint in enumerate(joints): parent_idx = rig.parentIndex(xform_idx) if parent_idx >= 0: joint.setNextInput(joints[parent_idx]) subnet.layoutChildren()
- patar
- Member
- 280 posts
- Joined:
- Offline
-
- Quick Links