From 8b1b08224be3d8b646644232918bc6ee29189541 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Tue, 25 May 2010 23:58:46 +0900 Subject: [PATCH] fix material. --- swig/blender24/pmd_export.py | 9 +++++---- swig/blender24/pmd_import.py | 14 +++++++++++--- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/swig/blender24/pmd_export.py b/swig/blender24/pmd_export.py index 5fc37b8..d70361b 100644 --- a/swig/blender24/pmd_export.py +++ b/swig/blender24/pmd_export.py @@ -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="" # 面 diff --git a/swig/blender24/pmd_import.py b/swig/blender24/pmd_import.py index b588610..7bb7d2c 100644 --- a/swig/blender24/pmd_import.py +++ b/swig/blender24/pmd_import.py @@ -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={} -- 2.11.0