321 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			321 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Blender.Armature.Bone module and the Bone PyType object
 | 
						|
 | 
						|
"""
 | 
						|
The Blender.Armature.Bone submodule.
 | 
						|
 | 
						|
Bone
 | 
						|
====
 | 
						|
 | 
						|
This module provides access to B{Bone} objects in Blender.  Bones are used to 
 | 
						|
create armatures.
 | 
						|
 | 
						|
Example::
 | 
						|
  import Blender
 | 
						|
  from Blender import *
 | 
						|
  from Blender.Armature import *
 | 
						|
  from Blender.Armature.Bone import *
 | 
						|
 | 
						|
  armObj = Object.New('Armature', "Armature_obj")
 | 
						|
  armData = Armature.New()
 | 
						|
 | 
						|
  bn1=Blender.Armature.Bone.New("bone1")
 | 
						|
  bn1.setHead(0.0,0.0,0.0)
 | 
						|
  bn1.setTail(2.0,1.0,0.0)
 | 
						|
 | 
						|
  bn2=Blender.Armature.Bone.New("bone2")
 | 
						|
  bn2.setHead(3.0,2.0,1.0)
 | 
						|
  bn2.setTail(4.0,4.0,1.0)
 | 
						|
  bn2.setRoll(.5)
 | 
						|
  bn2.setParent(bn1)
 | 
						|
 | 
						|
  bn3=Blender.Armature.Bone.New("bone3")
 | 
						|
  bn3.setHead(5.0,6.0,2.0)
 | 
						|
  bn3.setTail(5.0,8.0,2.0)
 | 
						|
  bn3.setParent(bn2)
 | 
						|
 | 
						|
  armData.addBone(bn1)
 | 
						|
  armData.addBone(bn2)
 | 
						|
  armData.addBone(bn3)
 | 
						|
 | 
						|
  armData.drawAxes(1)
 | 
						|
  armObj.link(armData)
 | 
						|
 | 
						|
  scn = Blender.Scene.getCurrent()
 | 
						|
  scn.link(armObj)
 | 
						|
 | 
						|
  armObj.makeDisplayList()
 | 
						|
  Blender.Window.RedrawAll()
 | 
						|
 | 
						|
  bn2.setPose([ROT,LOC,SIZE])  
 | 
						|
  
 | 
						|
@var PoseFlags: The available flags for setting keyframed poses.
 | 
						|
    - ROT - add bone's rotation to keyframe
 | 
						|
    - LOC - add bone's location to keyframe
 | 
						|
    - SIZE- add bone's size to keyframe
 | 
						|
    
 | 
						|
@var BoneclassFlags: The available flags for setting boneclass.
 | 
						|
    - SKINNABLE
 | 
						|
    - UNSKINNABLE
 | 
						|
    - HEAD
 | 
						|
    - NECK
 | 
						|
    - BACK
 | 
						|
    - SHOULDER
 | 
						|
    - ARM
 | 
						|
    - HAND
 | 
						|
    - FINGER
 | 
						|
    - THUMB
 | 
						|
    - PELVIS
 | 
						|
    - LEG
 | 
						|
    - FOOT
 | 
						|
    - TOE
 | 
						|
    - TENTACLE
 | 
						|
"""
 | 
						|
 | 
						|
class Bone:
 | 
						|
  """
 | 
						|
  The Bone object
 | 
						|
  ===============
 | 
						|
    This object gives access to Bone-specific data in Blender.
 | 
						|
  @cvar name: The name of this Bone.
 | 
						|
  @cvar roll: This Bone's roll value.
 | 
						|
  @cvar head: This Bone's "head" ending position when in rest state.
 | 
						|
  @cvar tail: This Bone's "tail" ending position when in rest state.
 | 
						|
  @cvar loc: This Bone's location.
 | 
						|
  @cvar size: This Bone's size.
 | 
						|
  @cvar quat: This Bone's quaternion.
 | 
						|
  @cvar parent: The parent Bone.
 | 
						|
  @cvar children: The children bones.
 | 
						|
  @cvar weight: The bone's weight.
 | 
						|
  @cvar ik: Whether the bone is set to IK.
 | 
						|
  @cvar boneclass: The boneclass of this bone.
 | 
						|
  """
 | 
						|
 | 
						|
  def getName():
 | 
						|
    """
 | 
						|
    Get the name of this Bone.
 | 
						|
    @rtype: string
 | 
						|
    """
 | 
						|
 | 
						|
  def getRoll():
 | 
						|
    """
 | 
						|
    Get the roll value.
 | 
						|
    @rtype: float
 | 
						|
    @warn: Roll values are local to parent's objectspace when
 | 
						|
    bones are parented.
 | 
						|
    """
 | 
						|
 | 
						|
  def getWeight():
 | 
						|
    """
 | 
						|
    Get the bone's weight..
 | 
						|
    @rtype: float
 | 
						|
    """
 | 
						|
    
 | 
						|
  def getHead():
 | 
						|
    """
 | 
						|
    Get the "head" ending position.
 | 
						|
    @rtype: list of three floats
 | 
						|
    """
 | 
						|
 | 
						|
  def getTail():
 | 
						|
    """
 | 
						|
    Get the "tail" ending position.
 | 
						|
    @rtype: list of three floats
 | 
						|
    """
 | 
						|
 | 
						|
  def getLoc():
 | 
						|
    """
 | 
						|
    Get the location of this Bone.
 | 
						|
    @rtype: list of three floats
 | 
						|
    """
 | 
						|
 | 
						|
  def getSize():
 | 
						|
    """
 | 
						|
    Get the size attribute.
 | 
						|
    @rtype: list of three floats
 | 
						|
    """
 | 
						|
 | 
						|
  def getQuat():
 | 
						|
    """
 | 
						|
    Get this Bone's quaternion.
 | 
						|
    @rtype: Quaternion object.
 | 
						|
    """
 | 
						|
 | 
						|
  def hasParent():
 | 
						|
    """
 | 
						|
    True if this Bone has a parent Bone.
 | 
						|
    @rtype: true or false
 | 
						|
    """
 | 
						|
 | 
						|
  def getParent():
 | 
						|
    """
 | 
						|
    Get this Bone's parent Bone, if available.
 | 
						|
    @rtype: Blender Bone
 | 
						|
    """
 | 
						|
 | 
						|
  def getWeight():
 | 
						|
    """
 | 
						|
    Get the bone's weight.
 | 
						|
    @rtype: float
 | 
						|
    """
 | 
						|
 | 
						|
  def getChildren():
 | 
						|
    """
 | 
						|
    Get this Bone's children Bones, if available.
 | 
						|
    @rtype: list of Blender Bones
 | 
						|
    """
 | 
						|
 | 
						|
  def setName(name):
 | 
						|
    """
 | 
						|
    Rename this Bone.
 | 
						|
    @type name: string
 | 
						|
    @param name: The new name.
 | 
						|
    """
 | 
						|
 | 
						|
  def setRoll(roll):
 | 
						|
    """
 | 
						|
    Set the roll value.
 | 
						|
    @type roll: float
 | 
						|
    @param roll: The new value.
 | 
						|
    @warn: Roll values are local to parent's objectspace when
 | 
						|
    bones are parented.
 | 
						|
    """
 | 
						|
 | 
						|
  def setHead(x,y,z):
 | 
						|
    """
 | 
						|
    Set the "head" ending position.
 | 
						|
    @type x: float
 | 
						|
    @type y: float
 | 
						|
    @type z: float
 | 
						|
    @param x: The new x value.
 | 
						|
    @param y: The new y value.
 | 
						|
    @param z: The new z value.
 | 
						|
    """
 | 
						|
 | 
						|
  def setTail(x,y,z):
 | 
						|
    """
 | 
						|
    Set the "tail" ending position.
 | 
						|
    @type x: float
 | 
						|
    @type y: float
 | 
						|
    @type z: float
 | 
						|
    @param x: The new x value.
 | 
						|
    @param y: The new y value.
 | 
						|
    @param z: The new z value.
 | 
						|
    """
 | 
						|
 | 
						|
  def setLoc(x,y,z):
 | 
						|
    """
 | 
						|
    Set the new location for this Bone.
 | 
						|
    @type x: float
 | 
						|
    @type y: float
 | 
						|
    @type z: float
 | 
						|
    @param x: The new x value.
 | 
						|
    @param y: The new y value.
 | 
						|
    @param z: The new z value.
 | 
						|
    """
 | 
						|
 | 
						|
  def setSize(x,y,z):
 | 
						|
    """
 | 
						|
    Set the new size for this Bone.
 | 
						|
    @type x: float
 | 
						|
    @type y: float
 | 
						|
    @type z: float
 | 
						|
    @param x: The new x value.
 | 
						|
    @param y: The new y value.
 | 
						|
    @param z: The new z value.
 | 
						|
    """
 | 
						|
 | 
						|
  def setQuat(quat):
 | 
						|
    """
 | 
						|
    Set the new quaternion for this Bone.
 | 
						|
    @type quat: Quaternion object or PyList of floats
 | 
						|
    @param quat: Can be a Quaternion or PyList of 4 floats.
 | 
						|
    """
 | 
						|
 | 
						|
  def setParent(bone):
 | 
						|
    """
 | 
						|
    Set the bones's parent in the armature.
 | 
						|
    @type bone: PyBone
 | 
						|
    @param bone: The Python bone that is the parent to this bone.
 | 
						|
    """
 | 
						|
 | 
						|
  def setWeight(weight):
 | 
						|
    """
 | 
						|
    Set the bones's weight.
 | 
						|
    @type weight: float
 | 
						|
    @param weight: set the the bone's weight.
 | 
						|
    """
 | 
						|
    
 | 
						|
  def hide():
 | 
						|
    """
 | 
						|
    Hides this bone.
 | 
						|
    """
 | 
						|
    
 | 
						|
  def unhide():
 | 
						|
    """
 | 
						|
    Unhide this bone.
 | 
						|
    """
 | 
						|
    
 | 
						|
  def clearParent():
 | 
						|
    """
 | 
						|
    Attempts to clear the parenting of this bone. Because the bone is no longer
 | 
						|
    parented it will be set in the armature as a root bone.
 | 
						|
    """
 | 
						|
    
 | 
						|
  def clearChildren():
 | 
						|
    """
 | 
						|
    Attemps to remove all the children of this bone. Because each of the
 | 
						|
    children no longer are parented they will be set a root bones in the
 | 
						|
    armature.
 | 
						|
    """
 | 
						|
 | 
						|
  def setPose(flags, Action):
 | 
						|
    """
 | 
						|
    Set the pose for this bone. The pose will be set at the Scene's current
 | 
						|
    frame. If an action is passed as the optional second parameter the pose
 | 
						|
    will be added as a keyframe to that action. Otherwise a default action
 | 
						|
    will be created an the pose set to it.
 | 
						|
    @type flags: PyList of enums
 | 
						|
    @param flags: expects ROT, LOC, SIZE in a list. Whichever of these is
 | 
						|
        passed the keyframe generated will set information about the rotation,
 | 
						|
        and/or location, and/or size of the bone.
 | 
						|
    @type Action: PyAction
 | 
						|
    @param Action: a python action that has either been created or returned
 | 
						|
        from an object
 | 
						|
    """
 | 
						|
 | 
						|
  def setBoneclass(boneclass):
 | 
						|
    """
 | 
						|
    Set the bones's boneclass.
 | 
						|
    @type boneclass: Enumeration constant. See above.
 | 
						|
    @param boneclass: The boneclass of this bone.
 | 
						|
    """
 | 
						|
 | 
						|
  def getBoneclass():
 | 
						|
    """
 | 
						|
    Get this Bone's boneclass.
 | 
						|
    @rtype: Enumeration const (string)
 | 
						|
    """
 | 
						|
 | 
						|
  def hasIK():
 | 
						|
    """
 | 
						|
    Determines whether or not this bone as flaged as IK.
 | 
						|
    @rtype: true (1) or false (0)
 | 
						|
    """
 | 
						|
 | 
						|
  def getRestMatrix(locale = 'worldspace'):
 | 
						|
    """
 | 
						|
    Return a matrix that represents the rotation and position of this bone.
 | 
						|
    There are two types of matrices that can be returned:
 | 
						|
      1. bonespace (in the coord. system of parent) or
 | 
						|
      2. worldspace (in the coord system of blender).
 | 
						|
 | 
						|
    The rotation will be in either worldspace or bonespace. Translation vectors
 | 
						|
    (row 4) will be the bone's head position (if worldspace) or the difference
 | 
						|
    from this bone's head to the parent head (if bonespace).
 | 
						|
    @type locale: string. Values are:
 | 
						|
    @param locale: possible values are:
 | 
						|
      - worldspace (default)
 | 
						|
      - bonespace
 | 
						|
    @rtype: 4x4 PyMatrix
 | 
						|
    """
 |