"""\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
-2.6 20110918: update for Blender2.59.\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
\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
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
\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
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
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
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
\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