Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Code Block
languagepy
themeEclipse
linenumberstrue
from maya import cmds

import imathAtomsMath
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 atomsRobotman
    """

    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 = imathAtomsMath.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 SETUPĀ 
'''
def register():
    Atoms.BehaviourModules.instance().registerBehaviourModule("marchingQueue",
                                                    MarchingQueueModule, True)


def setup():
    cmds.tcAtomsfile(initnew=True)
    agn = cmds.createNode('tcAgentGroupNode', f=True)
    cmds.setAttr(agn + ".displayType", 1)
tcAtoms(init=True)
    register()
 
   cmds.setAttr(agn + ".modules[0].moduleType", "pointsLayout", type="string")
    cmds.setAttr(agn + ".modules[0].moduleName", "pointsLayout", type="string" agent_group = agentgroup.create_agent_group()
    ag count = 6MayaAtomsGroupHostBridge()
    for i in range(count):ag.set_app_obj(agent_group)
        cmds.setAttr("%s.atoms_pointsLayout_agentTypes[%d]" % (agn, i),ag.add_module("pointsLayout")
    ag.add_module("stateMachine")
                "atomsRobot", type="string"ag.add_module("marchingQueue")    
    cmds.setAttr("%s.atoms_pointsLayout_directions[%d]" % (agn, i),ag.set_display_type(2)
    
    int_type_str = AtomsCore.IntMetadata.staticTypeStr()
    str_type_str = AtomsCore.StringMetadata.staticTypeStr()
  1, 0, 0)
  vec_type_str = AtomsCore.Vector3Metadata.staticTypeStr()

     cmds.setAttr("%s.atoms_pointsLayout_points[%d]" % (agn, i),ag.set_metadata_value("stateMachine", "state", int_type_str, 1)

    count = 6
    for i        in range(count - i) * 60, 0, 0)):
        cmds.setAttr(agn + ".modules[1].moduleTypeag.set_metadata_value("pointsLayout", "stateMachineagentTypes", type="string")str_type_str, "man", index=i)
        cmds.setAttr(agn + ".modules[1].moduleNameag.set_metadata_value("pointsLayout", "stateMachinedirections", type="string")
    cmds.setAttr(agn + ".atoms_stateMachine_state", 1)vec_type_str, (1, 0, 0), index=i)
        cmds.setAttr(agn + ".modules[2].moduleTypeag.set_metadata_value("pointsLayout", "marchingQueuepoints", type="string")
    cmds.setAttr(agn + ".modules[2].moduleName", "marchingQueue", type="string")vec_type_str, ((count - i) * 60, 0, 0), index=i)
    
setup()