OSDN Git Service

fix material.
authorousttrue <ousttrue@gmail.com>
Tue, 25 May 2010 14:58:46 +0000 (23:58 +0900)
committerousttrue <ousttrue@gmail.com>
Tue, 25 May 2010 14:58:46 +0000 (23:58 +0900)
swig/blender24/pmd_export.py
swig/blender24/pmd_import.py

index 5fc37b8..d70361b 100644 (file)
@@ -562,15 +562,16 @@ class PmdExporter(object):
             material.diffuse.g=m.G
             material.diffuse.b=m.B
             material.diffuse.a=m.alpha
-            material.sinness=m.spec
+            material.sinness=0 if m.spec<1e-5 else m.spec*10
             material.specular.r=m.specR
             material.specular.g=m.specG
             material.specular.b=m.specB
-            material.ambient.r=m.amb
-            material.ambient.g=m.amb
-            material.ambient.b=m.amb
+            material.ambient.r=m.mirR
+            material.ambient.g=m.mirG
+            material.ambient.b=m.mirB
             material.vertex_count=len(indices)
             material.toon_index=0
+            material.flag=1 if m.enableSSS else 0
             # ToDo
             material.texture=""
             # 面
index b588610..7bb7d2c 100644 (file)
@@ -211,9 +211,10 @@ def import16MaerialAndMesh(mesh, l, material_order, face_map, tex_dir):
         material=createMaterial()
         material.setRGBCol([m.diffuse.r, m.diffuse.g, m.diffuse.b])
         material.setAlpha(m.diffuse.a)
-        material.setHardness(int(m.shinness))
+        material.setSpec(m.shinness*0.1)
         material.setSpecCol([m.specular.r, m.specular.g, m.specular.b])
         material.setMirCol([m.ambient.r, m.ambient.g, m.ambient.b])
+        material.enableSSS=True if m.flag==1 else False
         # set texture
         if m.getTexture()!='':
             tex_file=re.compile('\*.*.spa$').sub('', m.getTexture())
@@ -268,6 +269,10 @@ def import16MaerialAndMesh(mesh, l, material_order, face_map, tex_dir):
     mesh_face_indices=[]
     mesh_face_materials=[]
     used_vertices=set()
+
+    def degenerate(i0, i1, i2):
+        return i0==i1 or i1==i2 or i2==i0
+
     for material_index in material_order:
         face_offset=face_map[material_index]
         m=l.materials[material_index]
@@ -276,13 +281,16 @@ def import16MaerialAndMesh(mesh, l, material_order, face_map, tex_dir):
             i0=material_faces[j]
             i1=material_faces[j+1]
             i2=material_faces[j+2]
-            mesh_face_indices.append([i0, i1, i2])
+            triangle=[i0, i1, i2]
+            if degenerate(*triangle):
+                continue
+            mesh_face_indices.append(triangle)
             mesh_face_materials.append(material_index)
             used_vertices.add(i0)
             used_vertices.add(i1)
             used_vertices.add(i2)
+
     mesh.faces.extend(mesh_face_indices, ignoreDups=True)
-    assert(len(mesh.faces)==len(mesh_face_indices))
 
     # face params
     used_map={}