From 68cb1241d18f2e1d4d1bb3322edc694e2ea267df Mon Sep 17 00:00:00 2001 From: Mikko Rasa Date: Tue, 13 Apr 2021 14:06:36 +0300 Subject: [PATCH] Add an option to automatically detect if tangents need to be exported It's enabled by default, which should reduce hassle when authoring models. --- blender/io_mspgl/mesh.py | 16 +++++++++++++++- blender/io_mspgl/properties.py | 5 ++++- 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/blender/io_mspgl/mesh.py b/blender/io_mspgl/mesh.py index 9741b8dd..6b0e6805 100644 --- a/blender/io_mspgl/mesh.py +++ b/blender/io_mspgl/mesh.py @@ -158,7 +158,6 @@ class Mesh: self.winding_test = mesh.winding_test self.smoothing = mesh.smoothing self.use_uv = mesh.use_uv - self.tangent_vecs = mesh.tangent_vecs self.tangent_uvtex = mesh.tangent_uvtex self.vertex_groups = mesh.vertex_groups @@ -229,6 +228,21 @@ class Mesh: else: self.lines = [] + # Check if tangent vectors are needed + if mesh.tangent_vecs=='NO': + self.tangent_vecs = False + elif mesh.tangent_vecs=='YES': + self.tangent_vecs = True + elif mesh.tangent_vecs=='AUTO': + from .material import Material + self.tangent_vecs = False + for m in self.materials: + mat = Material(m) + if mat.type=="pbr": + normal_prop = next((p for p in mat.properties if p.tex_keyword=="normal_map"), None) + if normal_prop and normal_prop.texture: + self.tangent_vecs = True + self.vertex_sequence = [] def transform(self, matrix): diff --git a/blender/io_mspgl/properties.py b/blender/io_mspgl/properties.py index 0d5a6d46..1272c60e 100644 --- a/blender/io_mspgl/properties.py +++ b/blender/io_mspgl/properties.py @@ -147,7 +147,10 @@ def register_properties(): items=(("NONE", "None", "Ignore all UV coordinates"), ("UNIT0", "Unit 0", "Use UV coordinates for unit 0"), ("ALL", "All", "Use all UV coordinates"))) - bpy.types.Mesh.tangent_vecs = bpy.props.BoolProperty(name="Tangent vectors", description="Compute tangent vectors for vertices", default=False) + bpy.types.Mesh.tangent_vecs = bpy.props.EnumProperty(name="Tangent vectors", description="Compute tangent vectors for vertices", default="AUTO", + items=(("NO", "No", "Do not export tangent vectors"), + ("AUTO", "Auto", "Automatically determine the need for tangent vectors"), + ("YES", "Yes", "Always export tangent vectors"))) bpy.types.Mesh.tangent_uvtex = bpy.props.StringProperty(name="Tangent UV layer", description="UV layer to use as basis for tangent vectors", default="") bpy.types.Object.compound = bpy.props.BoolProperty(name="Compound with parent", description="Join this object to its parent when exporting") -- 2.45.2