[Bf-extensions-cvs] SVN commit: /data/svn/bf-extensions [3351] trunk/py/scripts/addons/ io_export_unreal_psk_psa.py: add back the features.

John Phan darkneter at gmail.com
Sat May 5 18:51:32 CEST 2012


Revision: 3351
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-extensions&revision=3351
Author:   darknet
Date:     2012-05-05 16:51:32 +0000 (Sat, 05 May 2012)
Log Message:
-----------
add back the features. That was clean up from Spoof.

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	2012-05-05 10:30:33 UTC (rev 3350)
+++ trunk/py/scripts/addons/io_export_unreal_psk_psa.py	2012-05-05 16:51:32 UTC (rev 3351)
@@ -969,6 +969,56 @@
 	bpy.context.scene.update()
 	return me_ob
 
+#copy mesh data and then merge them into one object
+def meshmerge(selectedobjects):
+    bpy.ops.object.mode_set(mode='OBJECT')
+    cloneobjects = []
+    if len(selectedobjects) > 1:
+        print("selectedobjects:",len(selectedobjects))
+        count = 0 #reset count
+        for count in range(len( selectedobjects)):
+            #print("Index:",count)
+            if selectedobjects[count] != None:
+                me_da = selectedobjects[count].data.copy() #copy data
+                me_ob = selectedobjects[count].copy() #copy object
+                #note two copy two types else it will use the current data or mesh
+                me_ob.data = me_da
+                bpy.context.scene.objects.link(me_ob)#link the object to the scene #current object location
+                print("Index:",count,"clone object",me_ob.name)
+                cloneobjects.append(me_ob)
+        #bpy.ops.object.mode_set(mode='OBJECT')
+        for i in bpy.data.objects: i.select = False #deselect all objects
+        count = 0 #reset count
+        #bpy.ops.object.mode_set(mode='OBJECT')
+        for count in range(len( cloneobjects)):
+            if count == 0:
+                bpy.context.scene.objects.active = cloneobjects[count]
+                print("Set Active Object:",cloneobjects[count].name)
+            cloneobjects[count].select = True
+        bpy.ops.object.join()
+        if len(cloneobjects) > 1:
+            bpy.types.Scene.udk_copy_merge = True
+    return cloneobjects[0]
+	
+#sort the mesh center top list and not center at the last array. Base on order while select to merge mesh to make them center.
+def sortmesh(selectmesh):
+	print("MESH SORTING...")
+	centermesh = []
+	notcentermesh = []
+	for countm in range(len(selectmesh)):
+		if selectmesh[countm].location.x == 0 and selectmesh[countm].location.y == 0 and selectmesh[countm].location.z == 0:
+			centermesh.append(selectmesh[countm])
+		else:
+			notcentermesh.append(selectmesh[countm])
+	selectmesh = []
+	for countm in range(len(centermesh)):
+		selectmesh.append(centermesh[countm])
+	for countm in range(len(notcentermesh)):
+		selectmesh.append(notcentermesh[countm])
+	if len(selectmesh) == 1:
+		return selectmesh[0]
+	else:
+		return meshmerge(selectmesh)
 
 #===========================================================================
 # parse_mesh
@@ -1535,24 +1585,7 @@
 	
 	return actions_to_export
 
-def sortmesh(selectmesh):
-	print("MESH SORTING...")
-	centermesh = []
-	notcentermesh = []
-	for countm in range(len(selectmesh)):
-		if selectmesh[countm].location.x == 0 and selectmesh[countm].location.y == 0 and selectmesh[countm].location.z == 0:
-			centermesh.append(selectmesh[countm])
-		else:
-			notcentermesh.append(selectmesh[countm])
-	selectmesh = []
-	for countm in range(len(centermesh)):
-		selectmesh.append(centermesh[countm])
-	for countm in range(len(notcentermesh)):
-		selectmesh.append(notcentermesh[countm])
-	if len(selectmesh) == 1:
-		return selectmesh[0]
-	else:
-		return meshmerge(selectmesh)
+
 #===========================================================================
 # Locate the target armature and mesh for export
 # RETURNS armature, mesh
@@ -1640,36 +1673,6 @@
 		verbose("  " + group.name)
 	
 	return groups
-
-def meshmerge(selectedobjects):
-    bpy.ops.object.mode_set(mode='OBJECT')
-    cloneobjects = []
-    if len(selectedobjects) > 1:
-        print("selectedobjects:",len(selectedobjects))
-        count = 0 #reset count
-        for count in range(len( selectedobjects)):
-            #print("Index:",count)
-            if selectedobjects[count] != None:
-                me_da = selectedobjects[count].data.copy() #copy data
-                me_ob = selectedobjects[count].copy() #copy object
-                #note two copy two types else it will use the current data or mesh
-                me_ob.data = me_da
-                bpy.context.scene.objects.link(me_ob)#link the object to the scene #current object location
-                print("Index:",count,"clone object",me_ob.name)
-                cloneobjects.append(me_ob)
-        #bpy.ops.object.mode_set(mode='OBJECT')
-        for i in bpy.data.objects: i.select = False #deselect all objects
-        count = 0 #reset count
-        #bpy.ops.object.mode_set(mode='OBJECT')
-        for count in range(len( cloneobjects)):
-            if count == 0:
-                bpy.context.scene.objects.active = cloneobjects[count]
-                print("Set Active Object:",cloneobjects[count].name)
-            cloneobjects[count].select = True
-        bpy.ops.object.join()
-        if len(cloneobjects) > 1:
-            bpy.types.Scene.udk_copy_merge = True
-    return cloneobjects[0]
 		
 #===========================================================================
 # Main
@@ -1878,9 +1881,246 @@
 		default		= False)
 		
 
+import bmesh
 #===========================================================================
 # User interface
 #===========================================================================
+class OBJECT_OT_UTSelectedFaceSmooth(bpy.types.Operator):
+    bl_idname = "object.utselectfacesmooth"  # XXX, name???
+    bl_label = "Select Smooth faces"
+    __doc__ = """It will only select smooth faces that is select mesh"""
+    
+    def invoke(self, context, event):
+        print("----------------------------------------")
+        print("Init Select Face(s):")
+        bselected = False
+        for obj in bpy.data.objects:
+            if obj.type == 'MESH' and obj.select == True:
+                smoothcount = 0
+                flatcount = 0
+                bpy.ops.object.mode_set(mode='OBJECT')#it need to go into object mode to able to select the faces
+                for i in bpy.context.scene.objects: i.select = False #deselect all objects
+                obj.select = True #set current object select
+                bpy.context.scene.objects.active = obj #set active object
+                mesh = bmesh.new();
+                mesh.from_mesh(obj.data)
+                for face in mesh.faces:
+                    face.select = False
+                for face in mesh.faces:
+                    if face.smooth == True:
+                        face.select = True
+                        smoothcount += 1
+                    else:
+                        flatcount += 1
+                        face.select = False
+                mesh.to_mesh(obj.data)
+                bpy.context.scene.update()
+                bpy.ops.object.mode_set(mode='EDIT')
+                print("Select Smooth Count(s):",smoothcount," Flat Count(s):",flatcount)
+                bselected = True
+                break
+        if bselected:
+            print("Selected Face(s) Exectue!")
+            self.report({'INFO'}, "Selected Face(s) Exectue!")
+        else:
+            print("Didn't select Mesh Object!")
+            self.report({'INFO'}, "Didn't Select Mesh Object!")
+        print("----------------------------------------")        
+        return{'FINISHED'}
+		
+class OBJECT_OT_MeshClearWeights(bpy.types.Operator):
+    bl_idname = "object.meshclearweights"  # XXX, name???
+    bl_label = "Remove Mesh vertex weights"
+    __doc__ = """Remove all mesh vertex groups weights for the bones."""
+    
+    def invoke(self, context, event):
+        for obj in bpy.data.objects:
+            if obj.type == 'MESH' and obj.select == True:
+                for vg in obj.vertex_groups:
+                    obj.vertex_groups.remove(vg)
+                self.report({'INFO'}, "Mesh Vertex Groups Remove!")
+                break			
+        return{'FINISHED'}
+
+def unpack_list(list_of_tuples):
+    l = []
+    for t in list_of_tuples:
+        l.extend(t)
+    return l
+	
+class OBJECT_OT_UTRebuildMesh(bpy.types.Operator):
+    bl_idname = "object.utrebuildmesh"  # XXX, name???
+    bl_label = "Rebuild Mesh"
+    __doc__ = """It rebuild the mesh from scrape from the selected mesh object. Note the scale will be 1:1 for object mode. To keep from deforming"""
+    
+    def invoke(self, context, event):
+        print("----------------------------------------")
+        print("Init Mesh Bebuild...")
+        bselected = False
+        for obj in bpy.data.objects:
+            if obj.type == 'MESH' and obj.select == True:
+                for i in bpy.context.scene.objects: i.select = False #deselect all objects
+                obj.select = True
+                bpy.context.scene.objects.active = obj
+                bpy.ops.object.mode_set(mode='OBJECT')
+                me_ob = bpy.data.meshes.new(("Re_"+obj.name))
+                mesh = obj.data
+                faces = []
+                verts = []
+                smoothings = []
+                uvfaces = []
+                print("creating array build mesh...")
+                mmesh = obj.to_mesh(bpy.context.scene,True,'PREVIEW')
+                uv_layer = mmesh.tessface_uv_textures.active
+                for face in mmesh.tessfaces:
+                    smoothings.append(face.use_smooth)#smooth or flat in boolean
+                    if uv_layer != None:#check if there texture data exist
+                        faceUV = uv_layer.data[face.index]
+                        uvs = []
+                        for uv in faceUV.uv:
+                            uvs.append((uv[0],uv[1]))
+                        uvfaces.append(uvs)
+                    print((face.vertices[:]))
+                    if len(face.vertices) == 3:
+                        faces.extend([(face.vertices[0],face.vertices[1],face.vertices[2],0)])
+                    else:
+                        faces.extend([(face.vertices[0],face.vertices[1],face.vertices[2],face.vertices[3])])
+                #vertex positions
+                for vertex in mesh.vertices:
+                    verts.append(vertex.co.to_tuple())				
+                #vertices weight groups into array
+                vertGroups = {} #array in strings
+                for vgroup in obj.vertex_groups:
+                    vlist = []
+                    for v in mesh.vertices:

@@ Diff output truncated at 10240 characters. @@


More information about the Bf-extensions-cvs mailing list