OSDN Git Service

update version
[meshio/pymeshio.git] / blender25-meshio / import_mqo.py
index 9896d3a..457bc28 100644 (file)
@@ -8,26 +8,27 @@ Tooltip: 'Import from Metasequoia file format (.mqo)'
 """\r
 __author__=['ousttrue']\r
 __url__ = ["http://gunload.web.fc2.com/blender/"]\r
-__version__= '2.4'\r
 __bpydoc__= '''\\r
 \r
 MQO Importer\r
 \r
 This script imports a mqo into Blender for editing.\r
 \r
-0.2 20080123: update.\r
-0.3 20091125: modify for linux.\r
-0.4 20100310: rewrite.\r
-0.5 20100311: create armature from mikoto bone.\r
-0.6 20100505: C extension.\r
-0.7 20100606: integrate 2.4 and 2.5.\r
-0.8 20100619: fix multibyte object name.\r
-0.9 20100626: refactoring.\r
-2.0 20100724: update for Blender2.53.\r
-2.1 20100731: add full python module.\r
-2.2 20101005: update for Blender2.54.\r
-2.3 20101228: update for Blender2.55.\r
-2.4 20110429: update for Blender2.57b.\r
+20080123: update.\r
+20091125: modify for linux.\r
+20100310: rewrite.\r
+20100311: create armature from mikoto bone.\r
+20100505: C extension.\r
+20100606: integrate 2.4 and 2.5.\r
+20100619: fix multibyte object name.\r
+20100626: refactoring.\r
+20100724: update for Blender2.53.\r
+20100731: add full python module.\r
+20101005: update for Blender2.54.\r
+20101228: update for Blender2.55.\r
+20110429: update for Blender2.57b.\r
+20110918: update for Blender2.59.\r
+20111002: update for pymeshio-2.1.0\r
 '''\r
 \r
 bl_addon_info = {\r
@@ -45,23 +46,16 @@ bl_addon_info = {
 \r
 import os\r
 import sys\r
-\r
-try:\r
-    # C extension\r
-    from meshio import mqo\r
-    print('use meshio C module')\r
-except ImportError:\r
-    # full python\r
-    from pymeshio import mqo\r
+from .pymeshio.mqo import reader\r
 \r
 # for 2.5\r
 import bpy\r
 \r
 # wrapper\r
-import bl25 as bl\r
+from . import bl25 as bl\r
 \r
 def createMqoMaterial(m):\r
-    material = bpy.data.materials.new(m.getName())\r
+    material = bpy.data.materials.new(m.name.decode("cp932"))\r
     # shader\r
     if m.shader==1:\r
         material.diffuse_shader='FRESNEL'\r
@@ -80,13 +74,6 @@ def createMqoMaterial(m):
 \r
 \r
 def has_mikoto(mqo):\r
-    #for o in mqo.objects:\r
-    #    if o.getName().startswith('bone'):\r
-    #        return True\r
-    #    if o.getName().startswith('sdef'):\r
-    #        return True\r
-    #    if o.getName().startswith('anchor'):\r
-    #        return True\r
     return False\r
 \r
 \r
@@ -103,8 +90,8 @@ def __createMaterials(mqo, directory):
             material=createMqoMaterial(m)\r
             materials.append(material)\r
             # texture\r
-            texture_name=m.getTexture()\r
-            if texture_name!='':\r
+            texture_name=m.tex.decode("cp932")\r
+            if texture_name!=b'':\r
                 if texture_name in textureMap:\r
                     texture=textureMap[texture_name]\r
                 else:\r
@@ -140,7 +127,7 @@ def __createObjects(mqo, root, materials, imageMap, scale):
     stack=[root]    \r
     objects=[]\r
     for o in mqo.objects:\r
-        mesh, mesh_object=bl.mesh.create(o.getName())\r
+        mesh, mesh_object=bl.mesh.create(o.name.decode("cp932"))\r
 \r
         # add hierarchy\r
         stack_depth=len(stack)-1\r
@@ -151,11 +138,12 @@ def __createObjects(mqo, root, materials, imageMap, scale):
         bl.object.makeParent(stack[-1], mesh_object)\r
         stack.append(mesh_object)\r
 \r
-        if o.getName().startswith('sdef'):\r
+        obj_name=o.name.decode("cp932")\r
+        if obj_name.startswith('sdef'):\r
             objects.append(mesh_object)\r
-        elif o.getName().startswith('anchor'):\r
+        elif obj_name.startswith('anchor'):\r
             bl.object.setLayerMask(mesh_object, [0, 1])\r
-        elif o.getName().startswith('bone'):\r
+        elif obj_name.startswith('bone'):\r
             bl.object.setLayerMask(mesh_object, [0, 1])\r
 \r
         # geometry\r
@@ -595,28 +583,27 @@ def create_bone_weight(scene, mqo, armature_object, objects):
 \r
 \r
 def _execute(filepath='', scale=0.1):\r
-    # parse file\r
-    io=mqo.IO()\r
-    if not io.read(filepath):\r
+    # read mqo model\r
+    model=reader.read_from_file(filepath)\r
+    if not model:\r
         bl.message("fail to load %s" % filepath)\r
         return\r
 \r
     # create materials\r
-    materials, imageMap=__createMaterials(io, os.path.dirname(filepath))\r
+    materials, imageMap=__createMaterials(model, os.path.dirname(filepath))\r
     if len(materials)==0:\r
         materials.append(bl.material.create('default'))\r
 \r
     # create objects\r
     root=bl.object.createEmpty(os.path.basename(filepath))\r
-    objects=__createObjects(io, root, materials, imageMap, scale)\r
+    objects=__createObjects(model, root, materials, imageMap, scale)\r
 \r
-    if has_mikoto(io):\r
+    if has_mikoto(model):\r
         # create mikoto bone\r
-        armature_object=create_armature(io)\r
+        armature_object=create_armature(model)\r
         if armature_object:\r
             root.makeParent([armature_object])\r
 \r
             # create bone weight\r
-            create_bone_weight(io, armature_object, objects)\r
-\r
+            create_bone_weight(model, armature_object, objects)\r
 \r