X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=swig%2Fblender%2Fmqo_import.py;h=630501ec3a5ca415b8fb4e727635b7f36be1c8f9;hb=fe1f9eb5b3cb909aa6e773ba06e570d130700f14;hp=b297a90365c3724e070c7370e5f034b9dddef52d;hpb=17c0df3dbdbd871580faf8c883d45b577793cc24;p=meshio%2Fmeshio.git diff --git a/swig/blender/mqo_import.py b/swig/blender/mqo_import.py index b297a90..630501e 100644 --- a/swig/blender/mqo_import.py +++ b/swig/blender/mqo_import.py @@ -22,12 +22,9 @@ This script imports a mqo into Blender for editing. 0.6 20100505: C extension. 0.7 20100606: integrate 2.4 and 2.5. 0.8 20100619: fix multibyte object name. +0.9 20100626: refactoring. ''' - -############################################################################### -# import -############################################################################### import os import sys @@ -45,6 +42,21 @@ if isBlender24(): # wrapper import bl24 as bl + + def createMqoMaterial(m): + material = Blender.Material.New( + m.getName().encode(bl.INTERNAL_ENCODING)) + #material.mode |= Blender.Material.Modes.SHADELESS + # diffuse + material.rgbCol = [m.color.r, m.color.g, m.color.b] + material.alpha = m.color.a + # other + material.amb=m.ambient + material.spec=m.specular + material.hard=int(255 * m.power) + material.emit=m.emmit + return material + else: # for 2.5 import bpy @@ -53,6 +65,23 @@ else: # wrapper import bl25 as bl + def createMqoMaterial(m): + material = bpy.data.materials.new(m.getName()) + # shader + if m.shader==1: + material.diffuse_shader='FRESNEL' + else: + material.diffuse_shader='LAMBERT' + # diffuse + material.diffuse_color=[m.color.r, m.color.g, m.color.b] + material.diffuse_intensity=m.diffuse + material.alpha=m.color.a + # other + material.ambient = m.ambient + #material.specular = m.specular + material.emit=m.emit + return material + def has_mikoto(mqo): #for o in mqo.objects: @@ -65,7 +94,7 @@ def has_mikoto(mqo): return False -def __createMaterials(scene, mqo, directory): +def __createMaterials(mqo, directory): """ create blender materials and renturn material list. """ @@ -75,7 +104,7 @@ def __createMaterials(scene, mqo, directory): if len(mqo.materials)>0: for material_index, m in enumerate(mqo.materials): # material - material=bl.createMqoMaterial(m) + material=createMqoMaterial(m) materials.append(material) # texture texture_name=m.getTexture() @@ -93,20 +122,20 @@ def __createMaterials(scene, mqo, directory): # texture if os.path.exists(path): print("create texture:", path) - texture, image=bl.createTexture(path) + texture, image=bl.texture.create(path) textureMap[texture_name]=texture imageMap[material_index]=image else: print("%s not exits" % path) continue - bl.materialAddTexture(material, texture) + bl.material.addTexture(material, texture) else: # default material pass return materials, imageMap -def __createObjects(scene, mqo, root, materials, imageMap, scale): +def __createObjects(mqo, root, materials, imageMap, scale): """ create blender mesh objects. """ @@ -114,7 +143,7 @@ def __createObjects(scene, mqo, root, materials, imageMap, scale): stack=[root] objects=[] for o in mqo.objects: - mesh, mesh_object=bl.createMesh(scene, o.getName()) + mesh, mesh_object=bl.mesh.create(o.getName()) # add hierarchy stack_depth=len(stack)-1 @@ -122,15 +151,15 @@ def __createObjects(scene, mqo, root, materials, imageMap, scale): if o.depth