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)
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')