From 68a0b4bad4103f2c036484bcfbf5743ca5d6380b Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 27 Jun 2010 23:26:24 +0900 Subject: [PATCH] fix emmit typo. update maaterial import. --- include/mqo.h | 6 +++--- src/mqo.cpp | 2 +- swig/blender/bl25.py | 19 +++++++++++++------ swig/blender/mqo_import.py | 30 ++++++++++++++++++++++-------- swig/blender/pmd_export.py | 2 +- swig/blender/pmd_import.py | 15 ++++++++------- 6 files changed, 48 insertions(+), 26 deletions(-) diff --git a/include/mqo.h b/include/mqo.h index b64c7f6..ec7a8c9 100644 --- a/include/mqo.h +++ b/include/mqo.h @@ -85,7 +85,7 @@ struct Material RGBA color; float diffuse; float ambient; - float emmit; + float emit; float specular; float power; std::string texture; @@ -94,7 +94,7 @@ struct Material int vcol; Material() - : shader(0), diffuse(1), ambient(0), emmit(0), specular(0), power(0), + : shader(0), diffuse(1), ambient(0), emit(0), specular(0), power(0), vcol(0) {} @@ -111,7 +111,7 @@ inline std::ostream &operator<<(std::ostream &os, const Material &rhs) << ", color:" << rhs.color << ", diffuse:" << rhs.diffuse << ", ambient:" << rhs.ambient - << ", emmit:" << rhs.emmit + << ", emit:" << rhs.emit << ", specular:" << rhs.specular << ", power:" << rhs.power << ", texture:\"" << rhs.texture << '"' diff --git a/src/mqo.cpp b/src/mqo.cpp index ee304cd..7c6ff3c 100644 --- a/src/mqo.cpp +++ b/src/mqo.cpp @@ -307,7 +307,7 @@ private: material.ambient=splitter.getFloat(); } else if(key=="emi"){ - material.emmit=splitter.getFloat(); + material.emit=splitter.getFloat(); } else if(key=="spc"){ material.specular=splitter.getFloat(); diff --git a/swig/blender/bl25.py b/swig/blender/bl25.py index a72a2be..3cfd60c 100755 --- a/swig/blender/bl25.py +++ b/swig/blender/bl25.py @@ -274,9 +274,9 @@ class texture: texture=texture.recast_type() image=bpy.data.images.load(path) texture.image=image - texture.mipmap = True - texture.interpolation = True - texture.use_alpha = True + texture.mipmap=True + texture.interpolation=True + texture.use_alpha=True return texture, image @@ -291,8 +291,10 @@ class material: @staticmethod def addTexture(material, texture): - #material.add_texture(texture, "UV", {"COLOR", "ALPHA"}) material.add_texture(texture, "UV", "COLOR") + slot=material.texture_slots[material.active_texture_index] + slot.blend_type='MULTIPLY' + slot.map_alpha=True @staticmethod def hasTexture(material): @@ -451,8 +453,13 @@ class face: return face.verts[:] @staticmethod - def getIndices(face): - return [face.verts[0], face.verts[1], face.verts[2]] + def getIndices(face, count=3): + if count==3: + return [face.verts[0], face.verts[1], face.verts[2]] + elif count==4: + return [face.verts[0], face.verts[1], face.verts[2], face.verts[3]] + else: + assert(False) @staticmethod def setMaterial(face, material_index): diff --git a/swig/blender/mqo_import.py b/swig/blender/mqo_import.py index 1124a41..630501e 100644 --- a/swig/blender/mqo_import.py +++ b/swig/blender/mqo_import.py @@ -46,12 +46,15 @@ if isBlender24(): def createMqoMaterial(m): material = Blender.Material.New( m.getName().encode(bl.INTERNAL_ENCODING)) - material.mode |= Blender.Material.Modes.SHADELESS + #material.mode |= Blender.Material.Modes.SHADELESS + # diffuse material.rgbCol = [m.color.r, m.color.g, m.color.b] material.alpha = m.color.a - material.amb = m.ambient - material.spec = m.specular - material.hard = int(255 * m.power) + # other + material.amb=m.ambient + material.spec=m.specular + material.hard=int(255 * m.power) + material.emit=m.emmit return material else: @@ -64,9 +67,19 @@ else: 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.alpha=m.color.a 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 @@ -144,9 +157,9 @@ def __createObjects(mqo, root, materials, imageMap, scale): if o.getName().startswith('sdef'): objects.append(mesh_object) elif o.getName().startswith('anchor'): - bl.object.layerMask(mesh_object, [0, 1]) + bl.object.setLayerMask(mesh_object, [0, 1]) elif o.getName().startswith('bone'): - bl.object.layerMask(mesh_object, [0, 1]) + bl.object.setLayerMask(mesh_object, [0, 1]) # geometry vertices=[(v.x * scale, -v.z * scale, v.y * scale) for v in o.vertices] @@ -175,6 +188,7 @@ def __createObjects(mqo, root, materials, imageMap, scale): bl.mesh.addUV(mesh) for i, (f, face) in enumerate(zip(o.faces, mesh.faces)): uv_array=[] + # ToDo FIX # flip face for j in reversed(range(f.index_count)): uv_array.append((f.getUV(j).x, 1.0-f.getUV(j).y)) @@ -186,7 +200,7 @@ def __createObjects(mqo, root, materials, imageMap, scale): # mirror modifier if o.mirror: - bl.object.addMirrorModifier(mesh_object) + bl.modifier.addMirror(mesh_object) # set smoothing bl.mesh.setSmooth(mesh, o.smoothing) diff --git a/swig/blender/pmd_export.py b/swig/blender/pmd_export.py index 1a0f416..d3a9a1e 100644 --- a/swig/blender/pmd_export.py +++ b/swig/blender/pmd_export.py @@ -104,7 +104,7 @@ else: material.diffuse.b=m.diffuse_color[2] material.diffuse.a=m.alpha # specular - material.sinness=0 if m.specular_hardness<1e-5 else m.specular_hardness*10 + material.sinness=0 if m.specular_toon_size<1e-5 else m.specular_hardness*10 material.specular.r=m.specular_color[0] material.specular.g=m.specular_color[1] material.specular.b=m.specular_color[2] diff --git a/swig/blender/pmd_import.py b/swig/blender/pmd_import.py index f96d0bf..4b03500 100755 --- a/swig/blender/pmd_import.py +++ b/swig/blender/pmd_import.py @@ -84,12 +84,12 @@ if isBlender24(): #material.setSpecSize(0) #material.setSpec(0) # shader - material.setDiffuseShader(Blender.Material.Shaders.DIFFUSE_TOON) - material.setSpecShader(Blender.Material.Shaders.SPEC_TOON) # diffuse + material.setDiffuseShader(Blender.Material.Shaders.DIFFUSE_TOON) material.setRGBCol([m.diffuse.r, m.diffuse.g, m.diffuse.b]) material.setAlpha(m.diffuse.a) # specular + material.setSpecShader(Blender.Material.Shaders.SPEC_TOON) material.setSpec(m.shinness*0.1) material.setSpecCol([m.specular.r, m.specular.g, m.specular.b]) # ambient @@ -125,21 +125,22 @@ else: def createPmdMaterial(m, index): material = bpy.data.materials.new("Material") - # set shader - material.diffuse_shader='FRESNEL' - material.specular_shader='TOON' # diffuse + material.diffuse_shader='FRESNEL' material.diffuse_color=([m.diffuse.r, m.diffuse.g, m.diffuse.b]) material.alpha=m.diffuse.a # specular - material.specular_hardness=int(m.shinness) + material.specular_shader='TOON' material.specular_color=([m.specular.r, m.specular.g, m.specular.b]) + material.specular_toon_size=int(m.shinness) # ambient material.mirror_color=([m.ambient.r, m.ambient.g, m.ambient.b]) # flag material.subsurface_scattering.enabled=True if m.flag==1 else False - # name + # other material.name="m_%02d" % index + material.preview_render_type='FLAT' + material.transparency=True return material def poseBoneLimit(n, b): -- 2.11.0