OSDN Git Service

fix.
authorousttrue <ousttrue@gmail.com>
Sun, 6 Jun 2010 04:59:57 +0000 (13:59 +0900)
committerousttrue <ousttrue@gmail.com>
Sun, 6 Jun 2010 04:59:57 +0000 (13:59 +0900)
swig/blender/Makefile
swig/blender/cp.py
swig/blender/mqo_import.py

index 0bf01d0..660e56f 100644 (file)
@@ -1,5 +1,5 @@
 all: copy
 
-copy: mqo_import.py
+copy: mqo_import.py bl24.py bl25.py
        /cygdrive/C/Python26/python cp.py $^
 
index f44832f..bac1057 100644 (file)
@@ -27,7 +27,10 @@ def copy24(src):
 def copy25(src):
     print("copy %s..." % src)
     for dst in DST_25:
-        dst="%s/%s" % (dst, MAP_25[src])
+        try:
+            dst="%s/%s" % (dst, MAP_25[src])
+        except:
+            dst="%s/%s" % (dst, src)
         print(dst)
         shutil.copy(src, dst)
 
index 13d2aac..d83433e 100644 (file)
@@ -41,6 +41,9 @@ if isBlender24():
     from Blender import Mathutils\r
     import bpy\r
 \r
+    # wrapper\r
+    import bl24 as bl\r
+\r
     # ファイルシステムの文字コード\r
     # 改造版との共用のため\r
     FS_ENCODING=sys.getfilesystemencoding()\r
@@ -53,15 +56,17 @@ else:
     import bpy\r
     from bpy.props import *\r
 \r
+    # wrapper\r
+    import bl25 as bl\r
+\r
 \r
 ###############################################################################\r
 # implement\r
 ###############################################################################\r
-if isBlender24():\r
-    def has_mikoto(mqo):\r
-        return False\r
-\r
+def has_mikoto(mqo):\r
+    return False\r
 \r
+if isBlender24():\r
     def create_materials(scene, mqo, directory):\r
         """\r
         create blender materials and renturn material list.\r
@@ -104,10 +109,10 @@ if isBlender24():
                 else:\r
                     print("%s not exits" % path)\r
                 \r
-        return materials\r
+        return materials, {}\r
 \r
 \r
-    def create_objects(scene, root, mqo, materials):\r
+    def create_objects(scene, mqo, root, materials, imageMap=None, scale=None):\r
         """\r
         create blender mesh objects.\r
         """\r
@@ -597,50 +602,6 @@ if isBlender24():
             mesh.update()\r
         \r
 \r
-    def execute_24(filename):\r
-        """\r
-        import a mqo file.\r
-        """\r
-        filename=filename.decode(INTERNAL_ENCODING)\r
-        print("##start mqo_import.py##")\r
-        print(INTERNAL_ENCODING, FS_ENCODING)\r
-        print("parse mqo file: %s" % (filename))\r
-\r
-        Blender.Window.WaitCursor(1) \r
-        t = Blender.sys.time() \r
-\r
-        # parse file\r
-        io=mqo.IO()\r
-        \r
-        if not io.read(filename):\r
-            return\r
-\r
-        # get active scene\r
-        scene = Blender.Scene.GetCurrent()\r
-\r
-        # create materials\r
-        materials=create_materials(scene, io, os.path.dirname(filename))\r
-     \r
-        # create objects\r
-        root=scene.objects.new("Empty")\r
-        root.setName(os.path.basename(filename))\r
-        objects=create_objects(scene, root, io, materials)\r
-\r
-        if has_mikoto(io):\r
-            # create mikoto bone\r
-            armature_object=create_armature(scene, io)\r
-            if armature_object:\r
-                root.makeParent([armature_object])\r
-\r
-                # create bone weight\r
-                create_bone_weight(scene, io, armature_object, objects)\r
-\r
-\r
-        print('finished in %.2f seconds' % (Blender.sys.time()-t))\r
-        print('')\r
-        Blender.Redraw()\r
-        Blender.Window.WaitCursor(0) \r
-\r
 \r
 else:\r
     def create_texture(directory, texture_name):\r
@@ -657,7 +618,7 @@ else:
         texture.use_alpha = True\r
         return texture\r
 \r
-    def create_materials(mqo, scene, directory):\r
+    def create_materials(scene, mqo, directory):\r
         materials = []\r
         textureMap={}\r
         imageMap={}\r
@@ -686,7 +647,7 @@ else:
             materials.append(material)\r
         return materials, imageMap\r
 \r
-    def create_objects(mqo, scene, parent, materials, imageMap, scale):\r
+    def create_objects(scene, mqo, parent, materials, imageMap, scale):\r
         for o in mqo.objects:\r
 \r
             # create mesh\r
@@ -774,37 +735,67 @@ else:
 \r
             mesh.update()\r
 \r
-    def load(filename, context, scale):\r
-        """\r
-        load mqo file to context.\r
-        """\r
-        io=mqo.IO()\r
-        if not io.read(filename):\r
-            print("fail to load",filename)\r
-            return\r
 \r
-        scene=context.scene\r
+def __execute(filename, scene, scale=1.0):\r
+    # parse file\r
+    io=mqo.IO()\r
+    if not io.read(filename):\r
+        print("fail to load",filename)\r
+        return\r
 \r
-        # create material\r
-        materials, imageMap=create_materials(\r
-                io, scene, os.path.dirname(filename))\r
+    # create materials\r
+    materials, imageMap=create_materials(scene, io, os.path.dirname(filename))\r
 \r
-        # create group\r
-        empty=bpy.data.objects.new(os.path.basename(filename), None)\r
-        scene.objects.link(empty)\r
+    # create objects\r
+    root=bl.createEmptyObject(scene, os.path.basename(filename))\r
+    objects=create_objects(scene, io, root, materials, imageMap, scale)\r
 \r
-        # create mesh\r
-        create_objects(io, scene, empty, materials, imageMap, scale)\r
\r
+    if has_mikoto(io):\r
+        # create mikoto bone\r
+        armature_object=create_armature(scene, io)\r
+        if armature_object:\r
+            root.makeParent([armature_object])\r
+\r
+            # create bone weight\r
+            create_bone_weight(scene, io, armature_object, objects)\r
 \r
\r
 ###############################################################################\r
 # register\r
 ###############################################################################\r
 if isBlender24():\r
+    def execute_24(filename):\r
+        """\r
+        import a mqo file.\r
+        """\r
+        filename=filename.decode(INTERNAL_ENCODING)\r
+        print("##start mqo_import.py##")\r
+        print(INTERNAL_ENCODING, FS_ENCODING)\r
+        print("parse mqo file: %s" % (filename))\r
+\r
+        Blender.Window.WaitCursor(1) \r
+        t = Blender.sys.time() \r
+\r
+        # execute\r
+        scene = Blender.Scene.GetCurrent()\r
+        __execute(filename, scene)\r
+        scene.update(0)\r
+\r
+        print('finished in %.2f seconds' % (Blender.sys.time()-t))\r
+        print('')\r
+        Blender.Redraw()\r
+        Blender.Window.WaitCursor(0) \r
+\r
     # for 2.4\r
     # execute\r
     Blender.Window.FileSelector(execute_24, 'Import MQO', '*.mqo')\r
 else:\r
+    def execute_25(filename, context, scale):\r
+        """\r
+        import a mqo file.\r
+        """\r
+        __execute(filename, context.scene, scale)\r
+\r
     # for 2.5\r
     # import operator\r
     class IMPORT_OT_mqo(bpy.types.Operator):\r
@@ -833,7 +824,7 @@ else:
                 soft_min=0.001, soft_max=100.0, default=1.0)\r
 \r
         def execute(self, context):\r
-            load(self.properties.path, context, self.properties.scale)\r
+            execute_25(self.properties.path, context, self.properties.scale)\r
             return 'FINISHED'\r
 \r
         def invoke(self, context, event):\r