OSDN Git Service

fix emmit typo. update maaterial import.
authorousttrue <ousttrue@gmail.com>
Sun, 27 Jun 2010 14:26:24 +0000 (23:26 +0900)
committerousttrue <ousttrue@gmail.com>
Sun, 27 Jun 2010 14:26:24 +0000 (23:26 +0900)
include/mqo.h
src/mqo.cpp
swig/blender/bl25.py
swig/blender/mqo_import.py
swig/blender/pmd_export.py
swig/blender/pmd_import.py

index b64c7f6..ec7a8c9 100644 (file)
@@ -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 << '"'
index ee304cd..7c6ff3c 100644 (file)
@@ -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();
index a72a2be..3cfd60c 100755 (executable)
@@ -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):
index 1124a41..630501e 100644 (file)
@@ -46,12 +46,15 @@ if isBlender24():
     def createMqoMaterial(m):\r
         material = Blender.Material.New(\r
                 m.getName().encode(bl.INTERNAL_ENCODING))\r
-        material.mode |= Blender.Material.Modes.SHADELESS\r
+        #material.mode |= Blender.Material.Modes.SHADELESS\r
+        # diffuse\r
         material.rgbCol = [m.color.r, m.color.g, m.color.b]\r
         material.alpha = m.color.a\r
-        material.amb = m.ambient\r
-        material.spec = m.specular\r
-        material.hard = int(255 * m.power)\r
+        # other\r
+        material.amb=m.ambient\r
+        material.spec=m.specular\r
+        material.hard=int(255 * m.power)\r
+        material.emit=m.emmit\r
         return material\r
 \r
 else:\r
@@ -64,9 +67,19 @@ else:
 \r
     def createMqoMaterial(m):\r
         material = bpy.data.materials.new(m.getName())\r
+        # shader\r
+        if m.shader==1:\r
+            material.diffuse_shader='FRESNEL'\r
+        else:\r
+            material.diffuse_shader='LAMBERT'\r
+        # diffuse\r
         material.diffuse_color=[m.color.r, m.color.g, m.color.b]\r
-        material.alpha=m.color.a\r
         material.diffuse_intensity=m.diffuse\r
+        material.alpha=m.color.a\r
+        # other\r
+        material.ambient = m.ambient\r
+        #material.specular = m.specular\r
+        material.emit=m.emit\r
         return material\r
 \r
 \r
@@ -144,9 +157,9 @@ def __createObjects(mqo, root, materials, imageMap, scale):
         if o.getName().startswith('sdef'):\r
             objects.append(mesh_object)\r
         elif o.getName().startswith('anchor'):\r
-            bl.object.layerMask(mesh_object, [0, 1])\r
+            bl.object.setLayerMask(mesh_object, [0, 1])\r
         elif o.getName().startswith('bone'):\r
-            bl.object.layerMask(mesh_object, [0, 1])\r
+            bl.object.setLayerMask(mesh_object, [0, 1])\r
 \r
         # geometry\r
         vertices=[(v.x * scale, -v.z * scale, v.y * scale) for v in o.vertices]\r
@@ -175,6 +188,7 @@ def __createObjects(mqo, root, materials, imageMap, scale):
         bl.mesh.addUV(mesh)\r
         for i, (f, face) in enumerate(zip(o.faces, mesh.faces)):\r
             uv_array=[]\r
+            # ToDo FIX\r
             # flip face\r
             for j in reversed(range(f.index_count)):\r
                 uv_array.append((f.getUV(j).x, 1.0-f.getUV(j).y))\r
@@ -186,7 +200,7 @@ def __createObjects(mqo, root, materials, imageMap, scale):
 \r
         # mirror modifier\r
         if o.mirror:\r
-            bl.object.addMirrorModifier(mesh_object)\r
+            bl.modifier.addMirror(mesh_object)\r
 \r
         # set smoothing\r
         bl.mesh.setSmooth(mesh, o.smoothing)\r
index 1a0f416..d3a9a1e 100644 (file)
@@ -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]
index f96d0bf..4b03500 100755 (executable)
@@ -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):