[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [15339] branches/apricot: svn merge -r15309:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/ blender/
Campbell Barton
ideasman42 at gmail.com
Tue Jun 24 07:02:03 CEST 2008
Revision: 15339
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=15339
Author: campbellbarton
Date: 2008-06-24 07:02:01 +0200 (Tue, 24 Jun 2008)
Log Message:
-----------
svn merge -r15309:HEAD https://svn.blender.org/svnroot/bf-blender/trunk/blender/
Note the mail message failed to come through for 15309 which was just a merge from trunk.
Modified Paths:
--------------
branches/apricot/projectfiles_vc7/gameengine/gamelogic/SCA_GameLogic.vcproj
branches/apricot/release/scripts/DirectX8Exporter.py
branches/apricot/release/scripts/bpymodules/BPyArmature.py
branches/apricot/source/blender/blenkernel/intern/action.c
branches/apricot/source/blender/blenkernel/intern/particle_system.c
branches/apricot/source/blender/blenlib/BLI_arithb.h
branches/apricot/source/blender/blenlib/intern/arithb.c
branches/apricot/source/blender/imbuf/IMB_imbuf_types.h
branches/apricot/source/blender/imbuf/intern/anim.c
branches/apricot/source/blender/include/transform.h
branches/apricot/source/blender/makesdna/DNA_actuator_types.h
branches/apricot/source/blender/makesdna/DNA_controller_types.h
branches/apricot/source/blender/makesdna/DNA_sensor_types.h
branches/apricot/source/blender/python/api2_2x/Mathutils.c
branches/apricot/source/blender/render/intern/source/pipeline.c
branches/apricot/source/blender/src/buttons_logic.c
branches/apricot/source/blender/src/buttons_scene.c
branches/apricot/source/blender/src/editobject.c
branches/apricot/source/blender/src/editseq.c
branches/apricot/source/blender/src/sequence.c
branches/apricot/source/blender/src/space.c
branches/apricot/source/blender/src/transform.c
branches/apricot/source/blender/src/transform_constraints.c
branches/apricot/source/blender/src/transform_snap.c
branches/apricot/source/creator/creator.c
branches/apricot/source/gameengine/Converter/BL_ActionActuator.cpp
branches/apricot/source/gameengine/Converter/BL_ActionActuator.h
branches/apricot/source/gameengine/Converter/KX_ConvertActuators.cpp
branches/apricot/source/gameengine/Converter/KX_ConvertControllers.cpp
branches/apricot/source/gameengine/Converter/KX_ConvertSensors.cpp
branches/apricot/source/gameengine/GameLogic/SCA_ISensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_ISensor.h
branches/apricot/source/gameengine/GameLogic/SCA_JoystickSensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_KeyboardSensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_MouseSensor.cpp
branches/apricot/source/gameengine/GameLogic/SCA_PropertySensor.cpp
branches/apricot/source/gameengine/Ketsji/KX_MouseFocusSensor.cpp
branches/apricot/source/gameengine/Ketsji/KX_RaySensor.cpp
branches/apricot/source/gameengine/Ketsji/KX_TouchSensor.cpp
Added Paths:
-----------
branches/apricot/release/scripts/animation_bake_constraints.py
branches/apricot/release/scripts/c3d_import.py
branches/apricot/source/gameengine/GameLogic/SCA_NANDController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_NANDController.h
branches/apricot/source/gameengine/GameLogic/SCA_NORController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_NORController.h
branches/apricot/source/gameengine/GameLogic/SCA_XNORController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_XNORController.h
branches/apricot/source/gameengine/GameLogic/SCA_XORController.cpp
branches/apricot/source/gameengine/GameLogic/SCA_XORController.h
Modified: branches/apricot/projectfiles_vc7/gameengine/gamelogic/SCA_GameLogic.vcproj
===================================================================
--- branches/apricot/projectfiles_vc7/gameengine/gamelogic/SCA_GameLogic.vcproj 2008-06-24 00:52:12 UTC (rev 15338)
+++ branches/apricot/projectfiles_vc7/gameengine/gamelogic/SCA_GameLogic.vcproj 2008-06-24 05:02:01 UTC (rev 15339)
@@ -396,6 +396,12 @@
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.cpp">
</File>
<File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_NANDController.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_NORController.cpp">
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_ORController.cpp">
</File>
<File
@@ -425,6 +431,12 @@
<File
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.cpp">
</File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_XNORController.cpp">
+ </File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_XORController.cpp">
+ </File>
</Filter>
<Filter
Name="Header Files"
@@ -499,6 +511,12 @@
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_MouseSensor.h">
</File>
<File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_NANDController.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_NORController.h">
+ </File>
+ <File
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_ORController.h">
</File>
<File
@@ -528,6 +546,12 @@
<File
RelativePath="..\..\..\source\gameengine\GameLogic\SCA_TimeEventManager.h">
</File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_XNORController.h">
+ </File>
+ <File
+ RelativePath="..\..\..\source\gameengine\GameLogic\SCA_XORController.h">
+ </File>
</Filter>
</Files>
<Globals>
Modified: branches/apricot/release/scripts/DirectX8Exporter.py
===================================================================
--- branches/apricot/release/scripts/DirectX8Exporter.py 2008-06-24 00:52:12 UTC (rev 15338)
+++ branches/apricot/release/scripts/DirectX8Exporter.py 2008-06-24 05:02:01 UTC (rev 15339)
@@ -6,9 +6,9 @@
# Group: 'Export'
# Tooltip: 'Export to DirectX text file format format for XNA Animation Component Library.'
"""
-__author__ = "minahito (original:Arben (Ben) Omari)"
-__url__ = ("blender", "blenderartists.org", "Adjuster's site http://sunday-lab.blogspot.com/, Author's site http://www.omariben.too.it")
-__version__ = "3.0"
+__author__ = "vertex color exporting feature is added by mnemoto (original:minahito (original:Arben (Ben) Omari))"
+__url__ = ("blender", "elysiun", "Adjuster's site http://sunday-lab.blogspot.com/, Author's site http://www.omariben.too.it","Adjuster's site http://ex.homeunix.net/")
+__version__ = "3.1"
__bpydoc__ = """\
This script exports a Blender mesh with armature to DirectX 8's text file
@@ -444,6 +444,7 @@
self.writeMeshMaterialList(obj, mesh, tex)
self.writeMeshNormals(obj, mesh)
self.writeMeshTextureCoords(obj, mesh)
+ self.writeMeshVertexColors(obj, mesh)
self.file.write(" } // End of the Mesh %s \n" % (obj.name))
@@ -464,6 +465,7 @@
self.writeMeshMaterialList(obj, mesh, tex)
self.writeMeshNormals(obj, mesh)
self.writeMeshTextureCoords(obj, mesh)
+ self.writeMeshVertexColors(obj, mesh)
self.file.write(" }\n")
self.file.write("}\n")
ind = objs.index(obj)
@@ -1047,6 +1049,32 @@
self.file.write(",\n")
self.file.write("} //End of MeshTextureCoords\n")
+
+ #***********************************************
+ #MESH VORTEX COLORS
+ #***********************************************
+ def writeMeshVertexColors(self, name, mesh):
+ if mesh.hasVertexColours():
+ self.file.write("MeshVertexColors {\n")
+ #VERTICES NUMBER
+ numvert = reduce( lambda i,f: len(f)+i, mesh.faces, 0)
+ self.file.write("%d;\n" % (numvert))
+ #VERTEX COLORS
+
+ vcounter =0
+ for f in mesh.faces:
+ col = f.col
+ for i,c in enumerate(col):
+ # Note vcol alpha has no meaning
+ self.file.write("%d;%f;%f;%f;%f;" % (vcounter,c.r/255.0, c.g/255.0, c.b/255.0, 1.0)) # c.a/255.0))
+ vcounter+=1
+ if vcounter == numvert :
+ self.file.write(";\n")
+ else :
+ self.file.write(",\n")
+
+ self.file.write("} //End of MeshVertexColors\n")
+
#***********************************************#***********************************************#***********************************************
#***********************************************
#FRAMES
Copied: branches/apricot/release/scripts/animation_bake_constraints.py (from rev 15338, trunk/blender/release/scripts/animation_bake_constraints.py)
===================================================================
--- branches/apricot/release/scripts/animation_bake_constraints.py (rev 0)
+++ branches/apricot/release/scripts/animation_bake_constraints.py 2008-06-24 05:02:01 UTC (rev 15339)
@@ -0,0 +1,800 @@
+#!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
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list