Skip to content

Instantly share code, notes, and snippets.

@qiuwch
Created May 22, 2015 22:48
Show Gist options
  • Select an option

  • Save qiuwch/7b9ef11e4f706ff65c9a to your computer and use it in GitHub Desktop.

Select an option

Save qiuwch/7b9ef11e4f706ff65c9a to your computer and use it in GitHub Desktop.
Snippets to control human model of makehuman
##
bpy.data.objects
py.data.objects.keys()
# List all objects
# ['Camera', 'CustomShapes', 'GZM_Ball025', 'GZM_Breast_L', 'GZM_Breast_R', 'GZM_Circle025', 'GZM_CircleChest', 'GZM_CircleHips', 'GZM_CircleSpine', 'GZM_CrownHips', 'GZM_Cube025', 'GZM_FaceHead', 'GZM_FaceJaw', 'GZM_Foot', 'GZM_FootIK', 'GZM_Gaze', 'GZM_Hand', 'GZM_HandIK', 'GZM_Head', 'GZM_Jaw', 'GZM_Knuckle', 'GZM_LoLid', 'GZM_Master', 'GZM_Neck', 'GZM_RevFoot', 'GZM_RevToe', 'GZM_Root', 'GZM_Shoulder', 'GZM_Toe', 'GZM_Tongue', 'GZM_UpLid', 'Human', 'Human:Body', 'Human:HighPolyEyes', 'Human:jeans01', 'Human:mhair02', 'Human:Shirt01', 'Human:tongue01', 'Sun']
human = bpy.data.objects['Human']
light = bpy.data.objects['Sun']
human.pose
type(human.pose) # bpy.types.Pose # diff of bpy.types and bpy_types??
type(human) # bpy_types.Object
type(light) # bpy_types.Object
bones = human.pose.bones
type(bones) # bpy_prop_collection
bones.keys()
# ['master', 'ankle.L', 'hand.ik.R', 'hand.ik.L', 'ankle.R', 'foot.ik.R', 'toe.rev.R', 'foot.rev.R', 'ankle.ik.R', 'knee.pt.ik.R', 'foot.pt.ik.R', 'foot.ik.L', 'toe.rev.L', 'foot.rev.L', 'ankle.ik.L', 'knee.pt.ik.L', 'foot.pt.ik.L', 'root', 'spine', 'spine-1', 'chest', 'chest-1', 'clavicle.R', 'deltoid.R', 'arm_base.R', 'DEF-deltoid.R', 'elbow.pt.ik.R', 'DEF-scapula.R', 'clavicle.L', 'deltoid.L', 'arm_base.L', 'DEF-deltoid.L', 'elbow.pt.ik.L', 'DEF-scapula.L', 'breast.L', 'breast.R', 'DEF-trapezius2.L', 'DEF-trapezius2.R', 'neck', 'DEF-platysma.L', 'DEF-platysma.R', 'DEF-trapezius1.R', 'head', 'gaze_parent', 'gaze', 'jaw',
# Pick a visible bone and animate it
bone = bones['upper_arm.L']
type(bone) # bpy_types.PoseBone
type(bone.bone) # bpy_types.Bone
# Blender how to select an object
bone.name # upper_arm.L
bone.basename # upper_arm
# Set active object
bpy.context.scene.objects.active # only active object, not active bone
bpy.context.selected_pose_bones # (read-only)
bpy.context.active_pose_bone # (read-only)
# The selected series
# How to change mode?
bpy.context.mode # (read-only)
bpy.ops.pose
bpy.ops.object.mode_set(mode='POSE')
bpy.context.object.data.bones.keys()
thebone=bpy.context.object.data.bones['upper_arm.L']
type(thebone)
##
action=bpy.data.actions['DemoAction']
bpy.ops.object.mode_set(mode='POSE')
thebone=bpy.context.object.pose.bones['upper_arm.L']
action=bpy.data.actions['ArmatureAction']
# KEYFRAME ON BONE
bpy.ops.object.mode_set(mode='POSE')
thebone=bpy.context.object.pose.bones['B3']
thebone.rotation_euler=(-30.0,0.0,0.0)
thebone.keyframe_insert(data_path='rotation_euler',frame=10)
thebone.rotation_euler=(0.0,0.0,0.0)
thebone.keyframe_insert(data_path='rotation_euler',frame=20)
## Control render with python code
# Get the object of render
bpy.ops.render.render() # invoke selected render
# How to check the rendered output
# Output path is configured in blender option
# The rendering can not be stopped, much worse then running the GUI
## Load and retarget manually
import makewalk
makewalk.retarget.loadRetargetSimplify(bpy.context, '/Users/qiuwch/Dropbox/Workspace/LocoMotion/MotionCapture/bvh_files/cmuconvert-daz-01-09/01/01_01.bvh')
## How to run code from editor, super tricky...
sc = bpy.data.texts['Injection']; exec(sc.as_string())
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment