Esempio n. 1
0
 def get_translation(self, obj):
     if obj.rig is None or obj.rig == sims4.resources.INVALID_KEY:
         logger.error(
             'Trying to get the translation for a bone {} on obj {} but object has no rig.',
             self.bone, obj)
     bone_transform = get_joint_transform_from_rig(obj.rig, self.bone_name)
     return obj.transform.transform_point(bone_transform.translation)
 def _get_bone_position(obj, bone_name):
     if obj is None or obj.rig is None or obj.rig == sims4.resources.INVALID_KEY:
         rig_name = str(obj.rig) if obj.rig is not None else 'No Rig'
         logger.error('Setup Portal: Unable to get position for bone {} in object {} with rig {}.', bone_name, str(obj), rig_name)
         return
     joint_transform = get_joint_transform_from_rig(obj.rig, bone_name)
     return obj.transform.transform_point(joint_transform.translation)
Esempio n. 3
0
 def get_world_routing_surface(parent, transform, joint_name_or_hash, slot_hash):
     if parent.provided_routing_surface:
         if slot_hash and transform.translation.y > Location.REQUIRED_PROVIDED_SURFACE_HEIGHT:
             return parent.provided_routing_surface
         if joint_name_or_hash:
             joint_transform = get_joint_transform_from_rig(parent.rig, joint_name_or_hash)
             if joint_transform.translation.y > Location.REQUIRED_PROVIDED_SURFACE_HEIGHT:
                 return parent.provided_routing_surface
     return parent.routing_surface
Esempio n. 4
0
 def transform(self):
     if self._joint_transform is None:
         try:
             self._joint_transform = get_joint_transform_from_rig(
                 self.rig, ArbElement._BASE_ROOT_STRING)
         except KeyError:
             raise KeyError('Unable to find joint {} on {}'.format(
                 ArbElement._BASE_ROOT_STRING, self))
     return Transform.concatenate(self._joint_transform,
                                  self._location.world_transform)
Esempio n. 5
0
def get_joint_transform_from_rig(rig_key, joint_name):
    import _animation
    try:
        transform = _animation.get_joint_transform_from_rig(
            rig_key, joint_name)
    except Exception as exe:
        logger.error('Failed to get transform from rig: {}, {}'.format(
            rig_key, joint_name))
        raise exe
    return transform
 def _get_bone_transform(self):
     joint_transform = get_joint_transform_from_rig(self._owner.rig, self._bone_name)
     offset_from_joint = joint_transform.transform_point(self._bone_offset)
     final_transform = Transform.concatenate(Transform(offset_from_joint), self._owner.transform)
     return final_transform