[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [1789] trunk/py/scripts/addons/ io_export_unreal_psk_psa.py: Fixed bone roll copy.
John Phan
darkneter at gmail.com
Tue Apr 5 23:47:32 CEST 2011
Revision: 1789
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=1789
Author: darknet
Date: 2011-04-05 21:47:31 +0000 (Tue, 05 Apr 2011)
Log Message:
-----------
Fixed bone roll copy.
Modified Paths:
--------------
trunk/py/scripts/addons/io_export_unreal_psk_psa.py
Modified: trunk/py/scripts/addons/io_export_unreal_psk_psa.py
===================================================================
--- trunk/py/scripts/addons/io_export_unreal_psk_psa.py 2011-04-05 18:02:05 UTC (rev 1788)
+++ trunk/py/scripts/addons/io_export_unreal_psk_psa.py 2011-04-05 21:47:31 UTC (rev 1789)
@@ -2004,93 +2004,58 @@
class OBJECT_OT_UTRebuildArmature(bpy.types.Operator):
bl_idname = "object.utrebuildarmature" # XXX, name???
bl_label = "Rebuild Armature"
- __doc__ = "Roll bone rotation not working yet. It rebuild the select armature object scrape to raw setup build."
+ __doc__ = "If mesh is deform when importing to unreal engine try this. It rebuild the bones one at the time by select one armature object scrape to raw setup build."
def invoke(self, context, event):
- #print("Init Export Script:")
-
+ currentbone = [] #select armature for roll copy
for obj in bpy.data.objects:
- #print(dir(obj))
if obj.type == 'ARMATURE' and obj.select == True:
print("Armature Name:",obj.name)
- #print(dir(obj.data))
- objectname = "armaturedata"
- meshname ="ArmatureObject"
+ objectname = "ArmatureDataPSK"
+ meshname ="ArmatureObjectPSK"
armdata = bpy.data.armatures.new(objectname)
ob_new = bpy.data.objects.new(meshname, armdata)
bpy.context.scene.objects.link(ob_new)
+ bpy.ops.object.mode_set(mode='OBJECT')
for i in bpy.context.scene.objects: i.select = False #deselect all objects
ob_new.select = True
- bpy.context.scene.objects.active = ob_new
+ bpy.context.scene.objects.active = obj
+
+ bpy.ops.object.mode_set(mode='EDIT')
+ #print("number of bones:",len(obj.data.edit_bones))
+ for bone in obj.data.edit_bones:
+ #print(dir(bone))
+ #print("roll",(bone.roll))
+ if bone.parent != None:
+ #print([bone.name,bone.roll,bone.roll,None])
+ currentbone.append([bone.name,bone.roll])
+ else:
+ currentbone.append([bone.name,bone.roll])
bpy.ops.object.mode_set(mode='OBJECT')
- #bpy.ops.object.mode_set(mode='EDIT')
- print("number of bones:",len(obj.data.edit_bones))
- #for ib in range(len( obj.data.bones)):
- #print("bone name:",obj.data.edit_bones[ib].name)
- #print("bone name:",dir(bone))
- #editbone = obj.data.edit_bones[ib]
- #print("bone dir",dir(editbone))
-
-
- #bpy.ops.object.mode_set(mode='EDIT')
- print("=====================")
- #for bone in obj.data.edit_bones:
- #print("bone name:",bone.name)
- #print("edit bone name:",dir(bone))
- print("=====================")
- print("data object:",dir(obj.data))
+ for i in bpy.context.scene.objects: i.select = False #deselect all objects
+ bpy.context.scene.objects.active = ob_new
bpy.ops.object.mode_set(mode='EDIT')
+
for bone in obj.data.bones:
- print("bone name:",bone.name)
+ #print("bone name:",bone.name)
bpy.ops.object.mode_set(mode='EDIT')
newbone = ob_new.data.edit_bones.new(bone.name)
- #print("parent:",bone.parent.name)
- newbone.head = bone.head
- newbone.tail = bone.tail
- #newbone.roll = bone.roll
- print(dir(bone))
- #print((bone.bbone_z))
- #newbone.matrix = bone.matrix
- newbone.roll = bone.bbone_z
- if bone.parent != None:
- print("Found!",bone.parent.name)
- parentbone = ob_new.data.edit_bones[bone.parent.name]
- newbone.parent = parentbone
- else:
- print("Not found!")
newbone.head = bone.head_local
newbone.tail = bone.tail_local
- #newbone.matrix = bone.matrix_local
-
- #print(dir(newbone))
-
- #if bone.name != bone.parent:
- #print("parent:",bone.parent.name)
- #parentbone = ob_new.data.edit_bones[bone.parent]
- #newbone.parent = parentbone
-
- '''
- bpy.ops.object.mode_set(mode='OBJECT')#it need to go into object mode to able to select the faces
- #print("Mesh found!",obj.name)
- #print(len(obj.data.faces))
- for face in obj.data.faces:
- #print(dir(face))
- if face.use_smooth == True:
- face.select = True
- #print("selected:",face.select)
- else:
- face.select = False
- #print("selected:",face.select)
- #print(("smooth:",face.use_smooth))
- #bpy.context.scene.update()
- bpy.ops.object.mode_set(mode='EDIT')
- '''
- #bpy.context.scene.objects.link(ob_new)
+ for bonelist in currentbone:
+ if bone.name == bonelist[0]:
+ #print("found",bonelist[1])
+ newbone.roll = bonelist[1]
+ break
+ if bone.parent != None:
+ parentbone = ob_new.data.edit_bones[bone.parent.name]
+ newbone.parent = parentbone
+ print("Rebuild Armture Finish:",ob_new.name)
bpy.context.scene.update()
break
- #objects = bpy.data.objects
-
+ self.report({'INFO'}, "Rebuild Armature Finish!")
return{'FINISHED'}
+
def menu_func(self, context):
#bpy.context.scene.unrealexportpsk = True
#bpy.context.scene.unrealexportpsa = True
More information about the Bf-extensions-cvs
mailing list