OSDN Git Service

fix material.
[meshio/meshio.git] / swig / blender24 / pmd_import.py
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={}