[Bf-extensions-cvs] [017b3c8f] master: mocap tools: removed: unsupported T63750
meta-androcto
noreply at git.blender.org
Sat Sep 14 01:29:02 CEST 2019
Commit: 017b3c8f8518f001eeb8d282d6e955ac1fa3243a
Author: meta-androcto
Date: Sat Sep 14 09:28:31 2019 +1000
Branches: master
https://developer.blender.org/rBAC017b3c8f8518f001eeb8d282d6e955ac1fa3243a
mocap tools: removed: unsupported T63750
===================================================================
D mocap/__init__.py
D mocap/mocap_constraints.py
D mocap/mocap_tools.py
D mocap/retarget.py
===================================================================
diff --git a/mocap/__init__.py b/mocap/__init__.py
deleted file mode 100644
index f040e0b1..00000000
--- a/mocap/__init__.py
+++ /dev/null
@@ -1,933 +0,0 @@
-# ##### BEGIN GPL LICENSE BLOCK #####
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the GNU General Public License
-# as published by the Free Software Foundation; either version 2
-# of the License, or (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software Foundation,
-# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-#
-# ##### END GPL LICENSE BLOCK #####
-
-# <pep8 compliant>
-
-bl_info = {
- "name": "Motion Capture Tools",
- "author": "Benjy Cook",
- "blender": (2, 73, 0),
- "version": (1, 1, 1),
- "location": "Active Armature > Object Properties > Mocap tools",
- "description": "Various tools for working with motion capture animation",
- "warning": "",
- "wiki_url": "http://wiki.blender.org/index.php/Extensions:2.6/Py/"
- "Scripts/Animation/Motion_Capture_Tools",
- "support": 'OFFICIAL',
- "category": "Animation",
-}
-
-if "bpy" in locals():
- import importlib
- if "mocap_constraints" in locals():
- importlib.reload(mocap_constraints)
- if "retarget" in locals():
- importlib.reload(retarget)
- if "mocap_tools" in locals():
- importlib.reload(mocap_tools)
-else:
- import bpy
- from bpy.props import (
- BoolProperty,
- CollectionProperty,
- EnumProperty,
- FloatProperty,
- FloatVectorProperty,
- IntProperty,
- PointerProperty,
- StringProperty,
- )
- from . import (
- mocap_constraints,
- retarget,
- mocap_tools,
- )
-
-
-# MocapConstraint class
-# Defines MocapConstraint datatype, used to add and configute mocap constraints
-# Attached to Armature data
-
-def hasIKConstraint(pose_bone):
- #utility function / predicate, returns True if given bone has IK constraint
- ik = [constraint for constraint in pose_bone.constraints if constraint.type == "IK"]
- if ik:
- return ik[0]
- else:
- return False
-
-
-class MocapConstraint(bpy.types.PropertyGroup):
- name: StringProperty(name="Name",
- default="Mocap Fix",
- description="Name of Mocap Fix",
- update=mocap_constraints.setConstraint)
- constrained_bone: StringProperty(name="Bone",
- default="",
- description="Constrained Bone",
- update=mocap_constraints.updateConstraintBoneType)
- constrained_boneB: StringProperty(name="Bone (2)",
- default="",
- description="Other Constrained Bone (optional, depends on type)",
- update=mocap_constraints.setConstraint)
- s_frame: IntProperty(name="Start",
- default=0,
- description="Start frame of Fix",
- update=mocap_constraints.setConstraint)
- e_frame: IntProperty(name="End",
- default=100,
- description="End frame of Fix",
- update=mocap_constraints.setConstraint)
- smooth_in: IntProperty(name="In",
- default=10,
- description="Number of frames to smooth in",
- update=mocap_constraints.setConstraint,
- min=0)
- smooth_out: IntProperty(name="Out",
- default=10,
- description="Number of frames to smooth out",
- update=mocap_constraints.setConstraint,
- min=0)
- targetMesh: StringProperty(name="Mesh",
- default="",
- description="Target of Fix - Mesh (optional, depends on type)",
- update=mocap_constraints.setConstraint)
- active: BoolProperty(name="Active",
- default=True,
- description="Fix is active",
- update=mocap_constraints.setConstraint)
- show_expanded: BoolProperty(name="Show Expanded",
- default=True,
- description="Fix is fully shown")
- targetPoint: FloatVectorProperty(name="Point", size=3,
- subtype="XYZ", default=(0.0, 0.0, 0.0),
- description="Target of Fix - Point",
- update=mocap_constraints.setConstraint)
- targetDist: FloatProperty(name="Offset",
- default=0.0,
- description="Distance and Floor Fixes - Desired offset",
- update=mocap_constraints.setConstraint)
- targetSpace: EnumProperty(
- items=[("WORLD", "World Space", "Evaluate target in global space"),
- ("LOCAL", "Object space", "Evaluate target in object space"),
- ("constrained_boneB", "Other Bone Space", "Evaluate target in specified other bone space")],
- name="Space",
- description="In which space should Point type target be evaluated",
- update=mocap_constraints.setConstraint)
- type: EnumProperty(name="Type of constraint",
- items=[("point", "Maintain Position", "Bone is at a specific point"),
- ("freeze", "Maintain Position at frame", "Bone does not move from location specified in target frame"),
- ("floor", "Stay above", "Bone does not cross specified mesh object eg floor"),
- ("distance", "Maintain distance", "Target bones maintained specified distance")],
- description="Type of Fix",
- update=mocap_constraints.updateConstraintBoneType)
- real_constraint: StringProperty()
- real_constraint_bone: StringProperty()
-
-
-# Animation Stitch Settings, used for animation stitching of 2 retargeted animations.
-class AnimationStitchSettings(bpy.types.PropertyGroup):
- first_action: StringProperty(name="Action 1",
- description="First action in stitch")
- second_action: StringProperty(name="Action 2",
- description="Second action in stitch")
- blend_frame: IntProperty(name="Stitch frame",
- description="Frame to locate stitch on")
- blend_amount: IntProperty(name="Blend amount",
- description="Size of blending transition, on both sides of the stitch",
- default=10)
- second_offset: IntProperty(name="Second offset",
- description="Frame offset for 2nd animation, where it should start",
- default=10)
- stick_bone: StringProperty(name="Stick Bone",
- description="Bone to freeze during transition",
- default="")
-
-
-# MocapNLA Tracks. Stores which tracks/actions are associated with each retargeted animation.
-class MocapNLATracks(bpy.types.PropertyGroup):
- name: StringProperty()
- base_track: StringProperty()
- auto_fix_track: StringProperty()
- manual_fix_track: StringProperty()
- stride_action: StringProperty()
-
-
-#Update function for Advanced Retarget boolean variable.
-def advancedRetargetToggle(self, context):
- enduser_obj = context.active_object
- performer_obj = [obj for obj in context.selected_objects if obj != enduser_obj]
- if enduser_obj is None or len(performer_obj) != 1:
- print("Need active and selected armatures")
- return
- else:
- performer_obj = performer_obj[0]
- if self.advancedRetarget:
- retarget.preAdvancedRetargeting(performer_obj, enduser_obj)
- else:
- retarget.cleanTempConstraints(enduser_obj)
-
-
-def toggleIKBone(self, context):
- #Update function for IK functionality. Is called when IK prop checkboxes are toggled.
- if self.IKRetarget:
- if not self.is_in_ik_chain:
- print(self.name + " IK toggled ON!")
- ik = self.constraints.new('IK')
- #ik the whole chain up to the root, excluding
- chainLen = 0
- for parent_bone in self.parent_recursive:
- chainLen += 1
- if hasIKConstraint(parent_bone):
- break
- #~ deformer_children = [child for child in parent_bone.children if child.bone.use_deform]
- #~ if len(deformer_children) > 1:
- #~ break
- ik.chain_count = chainLen
- for bone in self.parent_recursive:
- if bone.is_in_ik_chain:
- bone.IKRetarget = True
- else:
- print(self.name + " IK toggled OFF!")
- cnstrn_bones = []
- newChainLength = []
- if hasIKConstraint(self):
- cnstrn_bones = [self]
- elif self.is_in_ik_chain:
- cnstrn_bones = [child for child in self.children_recursive if hasIKConstraint(child)]
- for cnstrn_bone in cnstrn_bones:
- newChainLength.append(cnstrn_bone.parent_recursive.index(self) + 1)
- if cnstrn_bones:
- # remove constraint, and update IK retarget for all parents of cnstrn_bone up to chain_len
- for i, cnstrn_bone in enumerate(cnstrn_bones):
- print(cnstrn_bone.name)
- if newChainLength:
- ik = hasIKConstraint(cnstrn_bone)
- ik.chain_count = newChainLength[i]
- else:
- ik = hasIKConstraint(cnstrn_bone)
- cnstrn_bone.constraints.remove(ik)
- cnstrn_bone.IKRetarget = False
- for bone in cnstrn_bone.parent_recursive:
- if not bone.is_in_ik_chain:
- bone.IKRetarget = False
-
-
-#MocapMap class for storing mapping on enduser performer,
-# where a bone may be linked to more than one on the performer
-class MocapMapping(bpy.types.PropertyGroup):
- name: StringProperty()
-
-# Disabling for now [#28933] - campbell
-'''
-def updateIKRetarget():
- # ensures that Blender constraints and IK properties are in sync
- # currently runs when module is loaded, should run when scene is loaded
- # or user adds a constraint to armature. Will be corrected in the future,
- # once python callbacks are implemented
- for obj in bpy.data.objects:
- if obj.pose:
- bones = obj.pose.
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-extensions-cvs
mailing list