132 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Blender.Armature.NLA module and the Action PyType object
 | 
						|
 | 
						|
"""
 | 
						|
The Blender.Armature.NLA submodule.
 | 
						|
 | 
						|
NLA
 | 
						|
===
 | 
						|
 | 
						|
This module provides access to B{Action} objects in Blender.  Actions are a series of keyframes/Ipo curves
 | 
						|
that define the movement of a bone. Actions are linked to objects of type armature.
 | 
						|
 | 
						|
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)
 | 
						|
 | 
						|
  armData.addBone(bn1)
 | 
						|
  armData.addBone(bn2)
 | 
						|
 | 
						|
  armObj.link(armData)
 | 
						|
  scn = Blender.Scene.getCurrent()
 | 
						|
  scn.link(armObj)
 | 
						|
 | 
						|
  armObj.makeDisplayList()
 | 
						|
  Blender.Window.RedrawAll()
 | 
						|
 | 
						|
  action = Blender.Armature.NLA.NewAction()
 | 
						|
  action.setActive(armObj)
 | 
						|
  
 | 
						|
  bn2.setPose([ROT,LOC,SIZE])  
 | 
						|
  
 | 
						|
  context = scn.getRenderingContext()
 | 
						|
  context.currentFrame(2)
 | 
						|
 | 
						|
  quat = Blender.Mathutils.Quaternion([1,2,3,4])
 | 
						|
  bn2.setQuat(quat)
 | 
						|
  bn2.setLoc([3,4,5])
 | 
						|
  
 | 
						|
  bn2.setPose([ROT,LOC,SIZE])
 | 
						|
 | 
						|
  print action.name
 | 
						|
  action2 = Blender.Armature.NLA.CopyAction(action)
 | 
						|
  action2.name = "Copy"
 | 
						|
"""
 | 
						|
 | 
						|
def NewAction  (name = 'DefaultAction'):
 | 
						|
  """
 | 
						|
  Create a new Action object.
 | 
						|
  @type name: string
 | 
						|
  @param name: The Action name.
 | 
						|
  @rtype: PyAction
 | 
						|
  """
 | 
						|
  
 | 
						|
def CopyAction (action):
 | 
						|
  """
 | 
						|
  Copy an action and it's keyframes
 | 
						|
  @type action: PyAction
 | 
						|
  @param action: The action to be copied.
 | 
						|
  @rtype: PyAction
 | 
						|
  @return: A copied action
 | 
						|
  """
 | 
						|
 | 
						|
def GetActions ():
 | 
						|
  """
 | 
						|
  Get all actions and return them as a Key : Value Dictionary.
 | 
						|
  @rtype: Dictionary of PyActions
 | 
						|
  @return: All the actions in blender
 | 
						|
  """
 | 
						|
  
 | 
						|
class Action:
 | 
						|
  """
 | 
						|
  The Action object
 | 
						|
  =================
 | 
						|
    This object gives access to Action-specific data in Blender.
 | 
						|
  """
 | 
						|
 | 
						|
  def getName():
 | 
						|
    """
 | 
						|
    Get the name of this Action.
 | 
						|
    @rtype: string
 | 
						|
    """
 | 
						|
    
 | 
						|
  def setName(name):
 | 
						|
    """
 | 
						|
    Set the name of this Action.
 | 
						|
    @type name: string
 | 
						|
    @param name: The new name
 | 
						|
    """
 | 
						|
    
 | 
						|
  def setActive(object):
 | 
						|
    """
 | 
						|
    Set this action as the current action for an object.
 | 
						|
    @type object: PyObject 
 | 
						|
    @param object: The object whose action is to be set
 | 
						|
    """
 | 
						|
    
 | 
						|
  def getChannelIpo(channel):
 | 
						|
    """
 | 
						|
    Get the Ipo for the named channel in this action
 | 
						|
    @type channel: string
 | 
						|
    @param channel: The name of a channel in this action
 | 
						|
    @rtype: PyIpo
 | 
						|
    @return: the Ipo for the channel
 | 
						|
    """
 | 
						|
    
 | 
						|
  def removeChannel(channel):
 | 
						|
    """
 | 
						|
    Remove a named channel from this action
 | 
						|
    @type channel: string
 | 
						|
    @param channel: The name of a channel in this action to be removed
 | 
						|
    """
 | 
						|
    
 | 
						|
  def getAllChannelIpos():
 | 
						|
    """
 | 
						|
    Get the all the Ipos for this action
 | 
						|
    @rtype: Dictionary [channel : PyIpo]
 | 
						|
    @return: the Ipos for all the channels in the action
 | 
						|
    """ |