From 5b8fa0b0aef5d040d1050af8593738b98de31878 Mon Sep 17 00:00:00 2001 From: Noeri Huisman Date: Wed, 13 Nov 2024 14:46:09 +0100 Subject: [PATCH] Suppress TANGENT warnings for .vrm files as specification indicates that these are expected to be generated upon import --- lib/src/base/mesh.dart | 8 +++++++- lib/src/errors.dart | 6 ++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/src/base/mesh.dart b/lib/src/base/mesh.dart index 2eb7ad9..159d7b2 100644 --- a/lib/src/base/mesh.dart +++ b/lib/src/base/mesh.dart @@ -526,7 +526,13 @@ class MeshPrimitive extends GltfProperty { } else { _material.markAsUsed(); - if (!(hasNormal && hasTangent) && _material.needsTangent) { + // Note: VRM files are instructed to not have tangents + if (context.isVrm) { + if (hasTangent) { + context.addIssue(LinkError.vrm1MeshPrimitiveTangents, + name: MATERIAL); + } + } else if (!(hasNormal && hasTangent) && _material.needsTangent) { context.addIssue( _material.canProvideTangent ? LinkError.meshPrimitiveGeneratedTangentSpace diff --git a/lib/src/errors.dart b/lib/src/errors.dart index 53665ee..98f1945 100644 --- a/lib/src/errors.dart +++ b/lib/src/errors.dart @@ -868,6 +868,12 @@ class LinkError extends IssueType { 'VRM1_MORPH_TARGET_NODE_WITHOUT_MESH', (args) => 'No mesh on node ${args[0]} for morph target bind.'); + static final LinkError vrm1MeshPrimitiveTangents = LinkError._( + 'VRM1_MESH_PRIMITIVE_TANGENTS', + (args) => + 'Primitive has TANGENTS but VRM importers are expected to generate them.', + Severity.Warning); + LinkError._(String type, ErrorFunction message, [Severity severity = Severity.Error]) : super(type, message, severity);