227 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			227 lines
		
	
	
		
			8.2 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
# Blender.IpoCurve module and the IpoCurve PyType object
 | 
						|
 | 
						|
"""
 | 
						|
The Blender.IpoCurve submodule
 | 
						|
 | 
						|
B{New}: 
 | 
						|
  -  IpoCurves supports the operator [], which accesses the value of 
 | 
						|
     curves at a given time. 
 | 
						|
 | 
						|
This module provides access to the IpoCurve data in Blender.  An Ipo is 
 | 
						|
composed of several IpoCurves, and an IpoCurve are composed of several 
 | 
						|
BezTriples.
 | 
						|
 | 
						|
Example::
 | 
						|
  import Blender
 | 
						|
  ipo = Blender.Ipo.Get('ObIpo')  # retrieves an Ipo object
 | 
						|
  ipo.name = 'ipo1'				 # change the Ipo's name
 | 
						|
  icu = ipo[Blender.Ipo.OB_LOCX] # request X Location Ipo curve object
 | 
						|
  if icu != None and len(icu.bezierPoints) > 0: # if curve exists and has BezTriple points
 | 
						|
     val = icu[2.5]              # get the curve's value at time 2.5
 | 
						|
  
 | 
						|
@type ExtendTypes: readonly dictionary
 | 
						|
@var ExtendTypes: The available IpoCurve extend types.
 | 
						|
    - CONST - curve is constant beyond first and last knots
 | 
						|
    - EXTRAP - curve maintains same slope beyond first and last knots
 | 
						|
    - CYCLIC - curve values repeat beyond first and last knots
 | 
						|
    - CYCLIC_EXTRAP - curve values repeat beyond first and last knots,
 | 
						|
    but while retaining continuity
 | 
						|
 | 
						|
@type InterpTypes: readonly dictionary
 | 
						|
@var InterpTypes: The available IpoCurve interpolation types.
 | 
						|
    - CONST - curve remains constant from current BezTriple knot
 | 
						|
    - LINEAR - curve is linearly interpolated between adjacent knots
 | 
						|
    - BEZIER - curve is interpolated by a Bezier curve between adjacent knots
 | 
						|
"""
 | 
						|
 | 
						|
class IpoCurve:
 | 
						|
  """
 | 
						|
  The IpoCurve object
 | 
						|
  ===================
 | 
						|
  This object gives access to generic data from all Ipo curves objects
 | 
						|
  in Blender.
 | 
						|
 | 
						|
  Important Notes for Rotation Ipo Curves:\n
 | 
						|
  For the rotation Ipo curves, the y values for points are in units of 10
 | 
						|
  degrees.  For example, 45.0 degrees is stored as 4.50 degrees.  These are the
 | 
						|
  same numbers you see in the Transform Properties pop-up menu ( NKey ) in
 | 
						|
  the IPO Curve Editor window.  Positive rotations are in a counter-clockwise
 | 
						|
  direction, following the standard convention.
 | 
						|
  
 | 
						|
  @ivar driver:  Status of the driver.  1= on, 0= object, 2= python expression.
 | 
						|
  @type driver:  int
 | 
						|
  @ivar driverObject:  Object used to drive the Ipo curve.
 | 
						|
  @type driverObject:  Blender Object or None
 | 
						|
  @ivar driverExpression:  Python expression used to drive the Ipo curve. [0 - 127 chars]
 | 
						|
  @type driverExpression:  string
 | 
						|
  @ivar sel:  The selection state of this curve.
 | 
						|
  @type sel:  bool
 | 
						|
  @ivar driverChannel:  Object channel used to drive the Ipo curve.
 | 
						|
  Use module constants: IpoCurve.LOC_X, IpoCurve.LOC_Y, IpoCurve.LOC_Z,
 | 
						|
  IpoCurve.ROT_X, IpoCurve.ROT_Y, IpoCurve.ROT_Z, IpoCurve.SIZE_X,
 | 
						|
  IpoCurve.SIZE_Y, IpoCurve.SIZE_Z
 | 
						|
  @type driverChannel:  int 
 | 
						|
  @ivar name: The IpoCurve data name.
 | 
						|
  @type name: string
 | 
						|
  @ivar bezierPoints: The list of the curve's bezier points.
 | 
						|
  @type bezierPoints: list of BezTriples.
 | 
						|
  @ivar interpolation: The curve's interpolation mode.  See L{InterpTypes} for
 | 
						|
  values.
 | 
						|
  @type interpolation: int
 | 
						|
  @ivar extend: The curve's extend mode. See L{ExtendTypes} for values.
 | 
						|
 | 
						|
  B{Note}: Cyclic Ipo curves never reach the end value.  If the first and
 | 
						|
  last bezier points do not have the same y coordinate, the value of the
 | 
						|
  curve when it "cycles" is that of the first point.  If a user wants to
 | 
						|
  get the value of the final curve point, read the final point from the
 | 
						|
  curve::
 | 
						|
 | 
						|
		ipo = Blender.Object.Get('Cube').ipo
 | 
						|
		icu = ipo['LocX']
 | 
						|
		endtime,endvalue = icu.bezierPoints[-1].pt
 | 
						|
  @type extend: int
 | 
						|
  """
 | 
						|
 | 
						|
  def __getitem__ (time):
 | 
						|
	"""
 | 
						|
	Returns the value of the curve at a particular time.
 | 
						|
    @type time: float
 | 
						|
    @param time: time (Vertex X) on the curve
 | 
						|
    @rtype: float
 | 
						|
    @return: value (Vertex Y) corresponding to the given time
 | 
						|
	"""
 | 
						|
 | 
						|
  def __setitem__ (time):
 | 
						|
	"""
 | 
						|
	Sets the value (Vertex Y) of the curve at a particular time.
 | 
						|
    @type time: float
 | 
						|
    @param time: time (Vertex X) on the curve
 | 
						|
	"""
 | 
						|
 | 
						|
  def setExtrapolation(extendmode):
 | 
						|
    """
 | 
						|
    Sets the extend mode of the curve (B{deprecated}).  B{Note}: new scripts
 | 
						|
    should use the L{extend} attribute instead.
 | 
						|
    @type extendmode: string
 | 
						|
    @param extendmode: the extend mode of the curve.
 | 
						|
        Can be Constant, Extrapolation, Cyclic or Cyclic_extrapolation.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 | 
						|
  def getExtrapolation():
 | 
						|
    """
 | 
						|
    Gets the extend mode of the curve (B{deprecated}).  B{Note}: new scripts
 | 
						|
    should use the L{extend} attribute instead.
 | 
						|
    @rtype: string
 | 
						|
    @return: the extend mode of the curve. Can be Constant, Extrapolation, Cyclic or Cyclic_extrapolation.
 | 
						|
    """
 | 
						|
 | 
						|
  def setInterpolation(interpolationtype):
 | 
						|
    """
 | 
						|
    Sets the interpolation type of the curve (B{deprecated}).  B{Note}: 
 | 
						|
    new scripts should use the L{interpolation} attribute instead.
 | 
						|
    @type interpolationtype: string
 | 
						|
    @param interpolationtype: the interpolation type of the curve. Can be Constant, Bezier, or Linear.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 | 
						|
  def getInterpolation():
 | 
						|
    """
 | 
						|
    Gets the interpolation type of the curve (B{deprecated}).  B{Note}:
 | 
						|
    new scripts should use the L{interpolation} attribute instead.
 | 
						|
    @rtype: string
 | 
						|
    @return: the interpolation type of the curve. Can be Constant, Bezier, or Linear.
 | 
						|
    """
 | 
						|
    
 | 
						|
  def append(point):
 | 
						|
    """
 | 
						|
    Adds a Bezier point to a IpoCurve.
 | 
						|
    @type point: BezTriple or tuple of 2 floats 
 | 
						|
    @param point: Can either be a BezTriple, or the x and y coordinates of
 | 
						|
    the Bezier knot point.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 
 | 
						|
  def addBezier(coordlist):
 | 
						|
    """
 | 
						|
    Adds a Bezier point to a curve B{deprecated}). B{Note}: new scripts
 | 
						|
    should use L{append} instead.
 | 
						|
    @type coordlist: tuple of (at least) 2 floats
 | 
						|
    @param coordlist: the x and y coordinates of the new Bezier point.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 | 
						|
  def delBezier(index):
 | 
						|
    """
 | 
						|
    Deletes a Bezier point from a curve.
 | 
						|
    @type index: integer
 | 
						|
    @param index: the index of the Bezier point.  Negative values index from the end of the list.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 | 
						|
  def recalc():
 | 
						|
    """
 | 
						|
    Recomputes the curve after changes to control points.
 | 
						|
    @rtype: None
 | 
						|
    @return: None
 | 
						|
    """
 | 
						|
 | 
						|
  def getName():
 | 
						|
    """
 | 
						|
    Returns the name of the Ipo curve (B{deprecated}). B{Note}:
 | 
						|
    new scripts should use the L{name} attribute instead.
 | 
						|
    The name can be:
 | 
						|
      1. Camera Ipo:  Lens, ClSta, ClEnd, Apert, FDist.
 | 
						|
      2. Material Ipo: R, G, B, SpecR, SpecG, SpecB, MirR, MirG, MirB, Ref,
 | 
						|
      Alpha, Emit, Amb, Spec, Hard, SpTra, Ior, Mode, HaSize, Translu,
 | 
						|
      RayMir, FresMir, FresMirI, FresTra, FresTraI, TraGlow, OfsX, OfsY,
 | 
						|
      OfsZ, SizeX, SizeY, SizeZ, texR, texG, texB, DefVar, Col, Nor, Var,
 | 
						|
      Disp.
 | 
						|
      3. Object Ipo: LocX, LocY, LocZ, dLocX, dLocY, dLocZ, RotX, RotY, RotZ,
 | 
						|
      dRotX, dRotY, dRotZ, SizeX, SizeY, SizeZ, dSizeX, dSizeY, dSizeZ,
 | 
						|
      Layer, Time, ColR, ColG, ColB, ColA, FStreng, FFall, Damping,
 | 
						|
      RDamp, Perm.
 | 
						|
      4. Lamp Ipo: Energ, R, G, B, Dist, SpoSi, SpoBl, Quad1, Quad2, HaInt.
 | 
						|
      5. World Ipo: HorR, HorG, HorB, ZenR, ZenG, ZenB, Expos, Misi, MisDi,
 | 
						|
      MisSta, MisHi, StaR, StaG, StaB, StarDi, StarSi, OfsX, OfsY, OfsZ,
 | 
						|
      SizeX, SizeY, SizeZ, TexR, TexG, TexB, DefVar, Col, Nor, Var.
 | 
						|
      5. World Ipo: HorR, HorG, HorB, ZenR, ZenG, ZenB, Expos, Misi, MisDi,
 | 
						|
      MisSta, MisHi, StarR, StarB, StarG, StarDi, StarSi, OfsX, OfsY, OfsZ,i
 | 
						|
      SizeX, SizeY, SizeZ, texR, texG, texB, DefVar, Col, Nor, Var.
 | 
						|
      6. Texture Ipo: NSize, NDepth, NType, Turb, Vnw1, Vnw2, Vnw3, Vnw4,
 | 
						|
      MinkMExp, DistM, ColT, iScale, DistA, MgType, MgH, Lacu, Oct,
 | 
						|
      MgOff, MgGain, NBase1, NBase2.
 | 
						|
      7. Curve Ipo: Speed.
 | 
						|
      8. Action Ipo: LocX, LocY, LocZ, SizeX, SizeY, SizeZ, QuatX, QuatY,
 | 
						|
      QuatZ, QuatW.
 | 
						|
      9. Sequence Ipo: Fac.
 | 
						|
      10. Constraint Ipo: Inf.
 | 
						|
 | 
						|
    @rtype: string
 | 
						|
    @return: the name of the Ipo curve.
 | 
						|
    """
 | 
						|
 | 
						|
  def getPoints():
 | 
						|
    """
 | 
						|
    Returns all the points of the IpoCurve (B{deprecated}).
 | 
						|
    B{Note}: new scripts should use the L{bezierPoints} attribute instead.
 | 
						|
    @rtype: list of BezTriples
 | 
						|
    @return: the points of the Ipo curve.
 | 
						|
    """
 | 
						|
 | 
						|
  def evaluate( time ):
 | 
						|
    """
 | 
						|
    Compute the value of the Ipo curve at a particular time (B{deprecated}).
 | 
						|
    B{Note}: new scripts should use L{icu[time]<__getitem__>} instead.
 | 
						|
    @type time: float
 | 
						|
    @param time: value along the X axis
 | 
						|
    @rtype: float
 | 
						|
    @return: the Y value of the curve at the given time
 | 
						|
    """
 | 
						|
 |