[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15452] branches/apricot: svn merge -r15426:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/ blender/

Campbell Barton ideasman42 at gmail.com
Sun Jul 6 16:38:27 CEST 2008


Revision: 15452
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15452
Author:   campbellbarton
Date:     2008-07-06 16:38:27 +0200 (Sun, 06 Jul 2008)

Log Message:
-----------
svn  merge  -r15426:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/blender/

Modified Paths:
--------------
    branches/apricot/release/scripts/animation_bake_constraints.py
    branches/apricot/release/scripts/c3d_import.py
    branches/apricot/source/blender/blenkernel/BKE_bmesh.h
    branches/apricot/source/blender/blenkernel/BKE_customdata.h
    branches/apricot/source/blender/blenkernel/intern/BME_conversions.c
    branches/apricot/source/blender/blenkernel/intern/BME_mesh.c
    branches/apricot/source/blender/blenkernel/intern/BME_structure.c
    branches/apricot/source/blender/blenkernel/intern/BME_tools.c
    branches/apricot/source/blender/blenkernel/intern/bmesh_private.h
    branches/apricot/source/blender/blenkernel/intern/customdata.c
    branches/apricot/source/blender/blenkernel/intern/image.c
    branches/apricot/source/blender/blenlib/BLI_arithb.h
    branches/apricot/source/blender/blenlib/BLI_winstuff.h
    branches/apricot/source/blender/makesdna/DNA_customdata_types.h
    branches/apricot/source/blender/makesdna/DNA_meshdata_types.h
    branches/apricot/source/blender/src/buttons_logic.c
    branches/apricot/source/blender/src/editseq.c
    branches/apricot/source/blender/src/headerbuttons.c
    branches/apricot/source/blender/src/interface_draw.c
    branches/apricot/source/gameengine/GameLogic/SCA_IController.cpp
    branches/apricot/source/gameengine/Ketsji/KX_GameObject.cpp
    branches/apricot/source/gameengine/Ketsji/KX_PythonInit.cpp

Modified: branches/apricot/release/scripts/animation_bake_constraints.py
===================================================================
--- branches/apricot/release/scripts/animation_bake_constraints.py	2008-07-06 14:11:30 UTC (rev 15451)
+++ branches/apricot/release/scripts/animation_bake_constraints.py	2008-07-06 14:38:27 UTC (rev 15452)
@@ -1,800 +1,792 @@
-#!BPY
-
-"""
-Name: 'Bake Constraints'
-Blender: 246
-Group: 'Animation'
-Tooltip: 'Bake a Constrained object/rig to IPOs'
-Fillename: 'Bake_Constraint.py'
-"""
-
-__author__ = "Roger Wickes (rogerwickes(at)yahoo.com)"
-__script__ = "Bake Constraints"
-__version__ = "0.6"
-__url__ = ["Communicate problems and errors, http://www.blenderartists.com/forum/private.php?do=newpm to PapaSmurf"]
-__email__= ["Roger Wickes, rogerwickes at yahoo.com", "scripts"]
-__bpydoc__ = """\
-
-bake_constraints
-
-This script bakes the real-world LocRot of an object (the net effect of any constraints - 
-(Copy, Limit, Track, Follow, - that affect Location, Rotation)
-(usually one constrained to match another's location and/or Tracked to another)
-and creates a clone with a set of Ipo Curves named Ipo<objname>
-These curves control a non-constrained object and thus make it mimic the constrained object
-Actions can be then be edited without the need for the drivers/constraining objects
-
-Developed for use with MoCap data, where a bone is constrained to point at an empty
-moving through space and time. This records the actual locrot of the armature
-so that the motion can be edited, reoriented, scaled, and used as NLA Actions
-
-see also wiki Scripts/Manual/ Sandbox/Animation/Bake_Constraints (tbd)
-
-Usage:<br>
- - Select the reference Object(s) you want to bake <br>
- - Set the frame range to bake in the Anim Panel <br>
- - Set the test code (if you want a self-test) in the RT field in the Anim Panel <br>
-		-- Set RT:1 in the Anim panel to create a test armature <br>
-<br>
- - Run the script    <br>
- - The clone copy of the object is created and it has an IPO curve assigned to it. 
- - The clone shadows the object by an offset locrot (see usrDelta)
- - That Ipo has Location and Rotation curves that make the shadow mimic the movement of the selected object, 
-		 but without using constraints. Bones move identically in relation to the armature as the reference object
-
-	
-Version History:
-		0.1: bakes Loc Rot for a constrained object
-		0.2: bakes Loc and Rot for the bones within Armature object
-		0.3: UI for setting options
-		0.3.1 add manual to script library
-		0.4: bake multiple objects
-		0.5: root bone worldspace rotation
-		0.6: re-integration with BPyArmature
-		
-License, Copyright, and Attribution:
-	by Roger WICKES  May 2008, released under Blender Artistic Licence to Public Domain
-		feel free to add to any Blender Python Scripts Bundle.
- Thanks to Jean-Baptiste PERIN, IdeasMan42 (Campbell Barton?), Basil_Fawlty/Cage_drei (Andrew Cruse)
- much lifted/learned from blender.org/documentation/245PytonDoc and wiki
- some modules based on c3D_Import.py, PoseLib16.py and IPO/Armature code examples e.g. camera jitter
-
-Pseudocode (planned versions):
-	Initialize
-	If at least one object is selected
-		For each selected object,
-			create a shadow object
-			remove any constraints on the clone
-			create or reset an ipo curve named like the object
-			for each frame
-				 set the clone's locrot key based on the reference object
-			if it's an armature,
-					create an action (which is an Ipo for each bone)
-					for each frame of the animation
-						for each bone in the armature
-							set the key
-	Else you're a smurf
-
-Test Conditions and Regressions:
-	1. (v0.1) Non-armatures (the cube), with ipo curve and constraints at the object level
-	2. armatures, with ipo curve and constraints at the object level
-	3. armatures, with bones that have ipo curves and constraints
-	
-Naming conventions:
-	arm = a specific objec type armature
-	bone = bones that make up the skeleton of an armature
-
-	ob = object, an instance of an object type
-	ebone = edit bone, a bone in edit mode
-	pbone = pose bone, a posed bone in an object
-	tst = testing, self-test routines
-	usr = user-entered or designated stuff  
-
-Pattern Notes (let me know if I've violated any):
-	Bergin Starting,Designing, Programming, Coding
-	Bergin 23 Indent for Structure - I don't like only 2, but the editor is set up that way
-	Bergin 26 Be Spacey Not Tabby - personal frustraion here. workaround is to Format->convert to whitespace
-	Bergin 27 Consistent Capitalization - except Blender, because I love it.
-	Bergin 28 Name Your Constants - not for those I plan on making variable
-	Python 01 Return Everything - I made this one up, all functions and methods end in return
-		even though it is decoration in Python, it helps Python throw an indentation error for typing mistakes
-	Wickes 01 Decorate Your Code - for visual appeal and to ease maintenance, include separators like ######### 
-		to visually distinquish and separate functions, making it quicker to scan through code for methods
-	Wickes 02 Whitespace helps readability - include blanks around = # and lines (after def, after return) to make it stand out and pretty
-
-"""
-########################################
-
-import Blender
-from   Blender import *
-from   Blender.Mathutils import *
-import struct
-import string
-import bpy
-import BPyMessages
-import BPyArmature
-# reload(BPyArmature)
-from   BPyArmature import getBakedPoseData
-
-Vector= Blender.Mathutils.Vector
-Euler= Blender.Mathutils.Euler
-Matrix= Blender.Mathutils.Matrix #invert() function at least
-RotationMatrix = Blender.Mathutils.RotationMatrix
-TranslationMatrix= Blender.Mathutils.TranslationMatrix
-Quaternion = Blender.Mathutils.Quaternion
-Vector = Blender.Mathutils.Vector
-POSE_XFORM= [Blender.Object.Pose.LOC, Blender.Object.Pose.ROT]
-
-#=================
-# Global Variables
-#=================
-
-# set senstitivity for displaying debug/console messages. 0=none, 100=max
-# then call debug(num,string) to conditionally display status/info in console window
-MODE=Blender.Get('rt')  #execution mode: 0=run normal, x=self-test (test error trapping etc)
-DEBUG=100   #how much detail on internal processing for big brother to see
-BATCH=False #called from command line? is someone there? Would you like some cake?
-
-#there are two coordinate systems, the real, or absolute 3D space,
-# and the local relative to a parent.
-COORDINATE_SYSTEMS = ['local','real']
-COORD_LOCAL = 0
-COORD_REAL = 1
-
-# User Settings - Change these options manually or via GUI (future TODO)
-usrCoord = COORD_REAL # what the user wants
-usrParent = False # True=keep parent (if exists), False = breakaway (usually with Real)
-usrFreeze = 2 #2=yes, 0=no. Freezes shadow object in place at current frame as origin
-	#TODO - i wonder if usrFreeze means we should set Delta to the the difference between the original object and parent?
-# delta is amount to offset/change from the reference object. future set in a ui, so technically not a constant
-usrDelta = [10,10,0,0,0,0] #order specific - Loc xyz Rot xyz
-usrACTION = True # Offset baked Action frames to start at frame 1
-usrBAKEobjIPO = False # bake the object Ipo? it is useless for MoCap, as we only want the Action, and the Object does not move
-
-CURFRAME = 'curframe' #keyword to use when getting the frame number that the scene is presently on
-ARMATURE = 'Armature' #en anglais
-BONE_SPACES = ['ARMATURESPACE','BONESPACE']
-		# 'ARMATURESPACE' - this matrix of the bone in relation to the armature
-		# 'BONESPACE' - the matrix of the bone in relation to itself
-
-#Ipo curves created are prefixed with a name, like Ipo_ or Bake_ followed by the object/bone name
-#bakedArmName = "b." #used for both the armature class and object instance
-#ipoObjectNamePrefix= ""
-#ipoBoneNamePrefix  = ""
-# for example, if on entry an armature named Man was selected, and the object prefix was "a."
-#  on exit an armature and an IPO curve named a.Man exists for the object as a whole
-# if that armature had bones (spine, neck, arm) and the bone prefix was "a."
-#  the bones and IPO curves will be (a.spine, a.neck, a.arm)
-
-R2D = 18/3.1415  # radian to grad
-BLENDER_VERSION = Blender.Get('version')
-
-# Gets the current scene, there can be many scenes in 1 blend file. 
-scn = Blender.Scene.GetCurrent()
-
-#=================
-# Methods
-#=================
-########################################
-def debug(num,msg): #use log4j or just console here.
-	
-	if DEBUG >= num:
-		if BATCH == False:
-			print 'debug:             '[:num/10+7]+msg
-		#TODO: else write out to file (runs faster if it doesnt have to display details)
-	return
-
-########################################
-def error(str):
-	debug(0,'ERROR: '+str)
-	if BATCH == False:
-		Draw.PupMenu('ERROR%t|'+str)
-	return
-
-########################################
-def getRenderInfo():
-	context=scn.getRenderingContext() 
-	staframe = context.startFrame()
-	endframe = context.endFrame()
-	if endframe<staframe: endframe=staframe
-	curframe = Blender.Get(CURFRAME)
-	debug(90,'Scene is on frame %i and frame range is %i to %i' % (curframe,staframe,endframe))
-	return (staframe,endframe,curframe)
-
-########################################
-def sortBones(xbones): #returns a sorted list of bones that should be added,sorted based on parent dependency
-	print ('My suggestion would be:')
-#  while there are bones to add,
-#    look thru the list of bones we need to add
-#      if we have not already added this bone
-#         if it does not have a parent
-#           add it
-#          else, it has a parent
-#           if we already added it's parent
-#               add it now.
-#           else #we need to keep cycling and catch its parent
-#         else it is a root bone
-#           add it
-#       else skip it, it's prego
-#     endfor
-#  endwhile
-	xboneNames=[]
-	for xbone in xbones: xboneNames.append(xbone.name)
-	debug (80,'reference bone order: \n%s' % xboneNames)
-	eboneNames=[]
-	while len(eboneNames) < len(xboneNames):
-		for xbone in xbones:
-			if not xbone.name in eboneNames:
-				if not xbone.parent:
-					eboneNames.append(xbone.name)
-				else:
-					if xbone.parent.name in eboneNames:
-						eboneNames.append(xbone.name)
-					#else skip it
-				#endif
-			#else prego
-		#endfor
-	#endwhile
-	debug (80,'clone bone order: \n%s' % eboneNames)
-	return eboneNames
-

@@ Diff output truncated at 10240 characters. @@




More information about the Bf-blender-cvs mailing list