/
Marching Queue
Marching Queue
from maya import cmds import AtomsMath import AtomsCore import Atoms import AtomsUtils from AtomsMaya.utils import agentgroup from AtomsMaya.hostbridge.atomsgroup import MayaAtomsGroupHostBridge class MarchingQueueModule(Atoms.BehaviourModule): """ This module assumes all agent are man """ def __init__(self): Atoms.BehaviourModule.__init__(self) def endFrame(self, agents, agroup): for i in range(1, len(agents)): skeleton = agents[i].agentType().skeleton() root_id = skeleton.jointId("LeftArm") mid_id = skeleton.jointId("LeftForeArm") ik_id = skeleton.jointId("LeftHand") if -1 in [root_id, mid_id, ik_id]: AtomsUtils.Logger.warning("couldn't find one or more joint ids") continue poser = AtomsCore.Poser(skeleton) other_pose = agents[i - 1].pose() wm = poser.getWorldMatrix(other_pose, root_id) target_pos = AtomsMath.V3d(wm[3][0], wm[3][1], wm[3][2]) #adding a small offset to have less mesh intersection target_pos.y += 10 pose = agents[i].pose() AtomsCore.solveTwoJointsIKNoPoleVector(pose, skeleton, target_pos, root_id, mid_id, ik_id, 0, True, 0.3) ''' MAYA SETUP ''' def register(): Atoms.BehaviourModules.instance().registerBehaviourModule("marchingQueue", MarchingQueueModule, True) def setup(): cmds.file(new=True, f=True) cmds.tcAtoms(init=True) register() agent_group = agentgroup.create_agent_group() ag = MayaAtomsGroupHostBridge() ag.set_app_obj(agent_group) ag.add_module("pointsLayout") ag.add_module("stateMachine") ag.add_module("marchingQueue") ag.set_display_type(2) int_type_str = AtomsCore.IntMetadata.staticTypeStr() str_type_str = AtomsCore.StringMetadata.staticTypeStr() vec_type_str = AtomsCore.Vector3Metadata.staticTypeStr() ag.set_metadata_value("stateMachine", "state", int_type_str, 1) count = 6 for i in range(count): ag.set_metadata_value("pointsLayout", "agentTypes", str_type_str, "man", index=i) ag.set_metadata_value("pointsLayout", "directions", vec_type_str, (1, 0, 0), index=i) ag.set_metadata_value("pointsLayout", "points", vec_type_str, ((count - i) * 60, 0, 0), index=i) setup()
, multiple selections available,
Related content
Agent Aim
Agent Aim
More like this
State machine debugger data
State machine debugger data
More like this
Reading the world joint matrices of an agent
Reading the world joint matrices of an agent
More like this
Parsing atoms objects
Parsing atoms objects
More like this
Access agent data (AtomsUnreal)
Access agent data (AtomsUnreal)
More like this
Joint Aim (python)
Joint Aim (python)
More like this
Copyright © 2017, Toolchefs LTD.