OSDN Git Service

fix mqo_import smoothing, mirroring.
authorousttrue <ousttrue@gmail.com>
Mon, 21 Jun 2010 22:45:25 +0000 (07:45 +0900)
committerousttrue <ousttrue@gmail.com>
Mon, 21 Jun 2010 22:45:25 +0000 (07:45 +0900)
swig/blender/bl24.py
swig/blender/bl25.py
swig/blender/mqo_export.py
swig/blender/mqo_import.py

index 30605a4..9b3652b 100644 (file)
@@ -206,16 +206,14 @@ def meshAddMqoGeometry(mesh_object, o, materials, imageMap, scale):
     # rmeove dummy 0 vertex
     mesh.verts.delete(0)
         
-    mesh.mode |= Blender.Mesh.Modes.AUTOSMOOTH
-    mesh.maxSmoothAngle = int(o.smoothing)
-    mesh.smooth()
     mesh.calcNormals()
     mesh.flipNormals()
     mesh.update()
 
-    # mirror modifier
-    if o.mirror:
-        mod=mesh_object.modifiers.append(Blender.Modifier.Types.MIRROR)
+
+def objectAddMirrorModifier(mesh_object):
+    return mesh_object.modifiers.append(Blender.Modifier.Types.MIRROR)
+
 
 def getTexture(m, dirname):
     tex=""
@@ -481,3 +479,8 @@ def shapeKeyGet(b, index):
 def shapeKeys(b):
     return b.data
 
+def meshSetSmooth(mesh, smoothing):
+    mesh.mode |= Blender.Mesh.Modes.AUTOSMOOTH
+    mesh.degr=int(smoothing)
+    #mesh.smooth()
+
index 9c5a573..ca79e58 100644 (file)
@@ -91,8 +91,6 @@ def createMqoMaterial(m):
     material.diffuse_color=[m.color.r, m.color.g, m.color.b]
     material.alpha=m.color.a
     material.diffuse_intensity=m.diffuse
-    # temporary
-    material.emit=1.0
     return material
 
 def createPmdMaterial(m):
@@ -105,8 +103,6 @@ def createPmdMaterial(m):
     material.specular_color=([m.specular.r, m.specular.g, m.specular.b])
     material.mirror_color=([m.ambient.r, m.ambient.g, m.ambient.b])
     material.subsurface_scattering.enabled=True if m.flag==1 else False
-    # temporary
-    material.emit=1.0
     return material
 
 def createTexture(path):
@@ -140,6 +136,8 @@ def createMesh(scene, name):
 def objectMakeParent(parent, child):
     child.parent=parent
 
+def objectAddMirrorModifier(mesh_object):
+    return mesh_object.modifiers.new("Modifier", "MIRROR")
 
 def meshAddMqoGeometry(mesh_object, o, materials, imageMap, scale):
     mesh=mesh_object.data
@@ -516,3 +514,8 @@ def shapeKeys(b):
 def VtoV(v):
     return mathutils.Vector([v.x, v.y, v.z])
 
+def meshSetSmooth(mesh, smoothing):
+    mesh.autosmooth_angle=int(smoothing)
+    mesh.autosmooth=True
+    mesh.calc_normals()
+
index 55a3668..ddc7e57 100644 (file)
@@ -241,7 +241,7 @@ class MqoExporter(object):
         scene.objects.unlink(dumy)\r
 \r
 \r
-def __execute(filename, scene, scale):\r
+def __execute(filename, scene, scale=10):\r
     exporter=MqoExporter(scale)\r
     exporter.setup(scene)\r
     exporter.write(filename, scene)\r
@@ -259,7 +259,7 @@ if isBlender24():
         Blender.Window.WaitCursor(1) \r
         t = Blender.sys.time() \r
 \r
-        __execute(filename, Blender.Scene.GetCurrent(), 1.0)\r
+        __execute(filename, Blender.Scene.GetCurrent())\r
 \r
         print('finished in %.2f seconds' % (Blender.sys.time()-t) )\r
         Blender.Redraw()\r
index 745102c..dff4fec 100644 (file)
@@ -110,7 +110,7 @@ def __createObjects(scene, mqo, root, materials, imageMap, scale):
     """\r
     create blender mesh objects.\r
     """\r
-    # store hierarchy\r
+    # tree stack\r
     stack=[root]    \r
     objects=[]\r
     for o in mqo.objects:\r
@@ -118,7 +118,7 @@ def __createObjects(scene, mqo, root, materials, imageMap, scale):
 \r
         # add hierarchy\r
         stack_depth=len(stack)-1\r
-        print(o.depth, stack_depth)\r
+        #print(o.depth, stack_depth)\r
         if o.depth<stack_depth:\r
             for i in range(stack_depth-o.depth):\r
                 stack.pop()\r
@@ -134,6 +134,13 @@ def __createObjects(scene, mqo, root, materials, imageMap, scale):
 \r
         bl.meshAddMqoGeometry(mesh_object, o, materials, imageMap, scale)\r
 \r
+        # mirror modifier\r
+        if o.mirror:\r
+            bl.objectAddMirrorModifier(mesh_object)\r
+\r
+        # set smoothing\r
+        bl.meshSetSmooth(mesh, o.smoothing)\r
+\r
     return objects\r
 \r
 \r
@@ -523,7 +530,7 @@ def create_bone_weight(scene, mqo, armature_object, objects):
         mesh.update()\r
 \r
 \r
-def __execute(filename, scene, scale=1.0):\r
+def __execute(filename, scene, scale=0.1):\r
     # parse file\r
     io=mqo.IO()\r
     if not io.read(filename):\r
@@ -532,6 +539,8 @@ def __execute(filename, scene, scale=1.0):
 \r
     # create materials\r
     materials, imageMap=__createMaterials(scene, io, os.path.dirname(filename))\r
+    if len(materials)==0:\r
+        materials.append(bl.createMaterial('default'))\r
 \r
     # create objects\r
     root=bl.createEmptyObject(scene, os.path.basename(filename))\r