Versions Compared

Key

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

...

Code Block
languagepy
themeEclipse
linenumberstrue
from PySide import QtGui, QtCore

from maya import cmds

import imathAtomsMath
import AtomsCore
import Atoms
import AtomsUtils

from AtomsAtomsMaya.ui.atomsAeGuiutils import ModuleWidget, ModuleOptionsWidgetagentgroup
from AtomsMaya.uihostbridge.atomsAeGuiMayaatomsgroup import GlobalData
MayaAtomsGroupHostBridge

class MarchingQueueModule(Atoms.BehaviourModule):
    """
    This module assumes all agent are ofman
the same type     """

    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 += 510

            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()
     countag = 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")
                "atomsMale", type="stringag.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):
* 50, 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()