Difference between revisions of "Pyhton Scripts"
Frankiezafe (Talk | contribs) (→BonesVertexgroupsSync) |
Frankiezafe (Talk | contribs) (→BonesVertexgroupsSync) |
||
| Line 92: | Line 92: | ||
[https://github.com/Blender-Brussels/bpy-bge-library/blob/master/users/frankiezafe/tanukis/BonesVertexgroupsSync.py script on github] | [https://github.com/Blender-Brussels/bpy-bge-library/blob/master/users/frankiezafe/tanukis/BonesVertexgroupsSync.py script on github] | ||
| − | |||
== BatchBonesModification == | == BatchBonesModification == | ||
Revision as of 13:59, 8 April 2016
Python scripts vault used during the project.
Contents
BoneMatrixCopy
import bpy, math from mathutils import Vector, Matrix # configuration ############ ARMATURE_NAME = 'makehuman' BONE_NAME = 'RightArm' # getting the right bone, no safety net... scn = bpy.context.scene armature = scn.objects[ ARMATURE_NAME ].data bone = armature.bones[ BONE_NAME ] # orientation of the bone is represented as a 4x4 matrix # see https://www.blender.org/api/blender_python_api_2_59_0/bpy.types.Bone.html#bpy.types.Bone.matrix_local bone_mat = bone.matrix_local # getting the active object target = scn.objects.active # copy of the matrix ############ target.matrix_local = bone_mat target.rotation_mode = 'QUATERNION' target.rotation_mode = 'XYZ' print( 'done, matrix of bone', armature.name, ':', bone.name, 'copied on', target.name )
BonesAndVertexgroupsBulkRenaming
import bpy # right and left markers NEEDLE = "R_" REPLACE = "L_" # name of the armature and the related mesh ARMATURE_NAME = 'armature_skeleton' MESH_NAME = 'skeleton' scn = bpy.context.scene armature = scn.objects[ ARMATURE_NAME ].data mesh = scn.objects[ MESH_NAME ] # renaming all bones print( "armature:", ARMATURE_NAME, armature ) for b in armature.bones: b.name = b.name.replace( NEEDLE, REPLACE ) print( b.name ) # renaming all vertex groups print( "mesh:", MESH_NAME, mesh ) for vg in mesh.vertex_groups: vg.name = vg.name.replace( NEEDLE, REPLACE ) print( vg.name )
BonesVertexgroupsSync
import bpy
# name of the armature and the related mesh
ARMATURE_NAME = 'armature_skeleton'
MESH_NAME = 'skeleton'
REMOVE_VERTEXGROUPS = True
scn = bpy.context.scene
armature = scn.objects[ ARMATURE_NAME ].data
mesh = scn.objects[ MESH_NAME ]
print( mesh.vertex_groups )
# creation of missing vertex groups
for b in armature.bones:
found = False
for vg in mesh.vertex_groups:
if vg.name == b.name:
found = True
if found == False:
mesh.vertex_groups.new( b.name )
print( b.name, "vertex group created" )
# deletion of vertex groups
if REMOVE_VERTEXGROUPS == True:
for vg in mesh.vertex_groups:
found = False
for b in armature.bones:
if vg.name == b.name:
found = True
if found == False:
print( vg.name, "vertex group removed" )
mesh.vertex_groups.remove( vg )
BatchBonesModification
import bpy
# name of the armature and the related mesh
ARMATURE_NAME = 'armature_skeleton'
NAME_FILTER = 'spine'
def doContinue( name ):
global NAME_FILTER
if NAME_FILTER == :
return True
if name.find( NAME_FILTER ) != -1:
return True
return False
scn = bpy.context.scene
armature = scn.objects[ ARMATURE_NAME ]
# modification on bones
# modifiable params are listed in doc
# https://www.blender.org/api/blender_python_api_2_77_release/bpy.types.Bone.html#bpy.types.Bone
print( '**** bones:', len(armature.pose.bones) )
for b in armature.data.bones:
if not doContinue( b.name ):
continue
print( b.name )
b.use_inherit_rotation = True
b.use_inherit_scale = False
# modification on pose bones
# modifiable params are listed in doc
# https://www.blender.org/api/blender_python_api_2_77_release/bpy.types.PoseBone.html
print( '**** pose bones:', len(armature.pose.bones) )
for pb in armature.pose.bones:
if not doContinue( pb.name ):
continue
print( pb.name )
pb.lock_location = (False,False,False)
pb.lock_rotation = (False,False,False)
pb.lock_scale = (False,False,False)