예제 #1
0
    def __init__(self, filename='human_rig', name=None):
        """
        :param filename: the human model. Default: 'human_rig'
        """
        GroundRobot.__init__(self, filename, name)
        self.properties(classpath="morse.robots.human.Human")

        self.skeleton = None

        try:
            self.skeleton = Armature(
                armature_name=self.get_child("HumanSkeleton").name)
            self.append(self.skeleton)
        except KeyError:
            logger.error("Could not find the human armature! (I was looking " +\
                         "for an object called 'HumanSkeleton' in the children " + \
                         "objects of the human). I won't be able to export the " + \
                         "human pose to any middleware.")

        if self.skeleton:
            self.skeleton.create_ik_targets(self.IK_TARGETS)
            for t, name in self.skeleton.ik_targets:
                t.parent = self._bpy_object

            # Add an armature sensor. "joint_stateS" to match standard ROS spelling.
            self.joint_states = ArmaturePose("joint_states")
            self.skeleton.append(self.joint_states)
예제 #2
0
파일: human.py 프로젝트: mitya57/morse
    def __init__(self, filename='human', name = None):
        """ The 'style' parameter is only to switch to the mocap_human file.

        :param filename: 'human' (default) or 'mocap_human'
        """
        GroundRobot.__init__(self, filename, name)

        self.suffix = self.name[-4:] if self.name[-4] == "." else ""

        self.armature = None
        if filename == 'mocap_human':
            self.properties(classpath="morse.robots.mocap_human.MocapHuman")
        else:
            self.properties(classpath="morse.robots.human.Human")

        try:
            self.armature = Armature(armature_name = "HumanArmature" + self.suffix)
            self.append(self.armature)
        except KeyError:
            logger.error("Could not find the human armature! (I was looking " +\
                         "for an object called 'HumanArmature' in the human" +\
                         " children). I won't be able to export the human pose" +\
                         " to any middleware.")

        # Add an armature sensor. "joint_stateS" to match standard ROS spelling.
        self.joint_states = ArmaturePose()
        self.armature.append(self.joint_states)

        # fix for Blender 2.6 Animations
        armature_object = self.get_child(self.armature.name)
        if armature_object:
            hips = self.get_child("Hips_Empty")
            # IK human has no object called Hips_Empty, so avoid this step
            if hips:
                for i, actuator in enumerate(hips.game.actuators):
                    actuator.layer = i
                for i, actuator in enumerate(armature_object.game.actuators):
                    actuator.layer = i

        self.make_grasper('Hand_Grab.R')