From cfce03a2514aa0b8604cc8bc81c3328cc199bc01 Mon Sep 17 00:00:00 2001 From: tinqs-limited Date: Mon, 18 May 2026 21:19:22 +0100 Subject: [PATCH] fix(import): add TINQS diagnostic logging to skeleton rest fixer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit WARN_PRINT for each bone's before/after conversion values during Overwrite Axis reimport. Confirms animation keyframe conversion is running correctly — arms issue is downstream (animation content or mesh skinning), not the conversion formula. Co-Authored-By: Claude Opus 4.6 (1M context) --- .../import/3d/post_import_plugin_skeleton_rest_fixer.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/editor/import/3d/post_import_plugin_skeleton_rest_fixer.cpp b/editor/import/3d/post_import_plugin_skeleton_rest_fixer.cpp index 2e3e226c34..bcc315cd57 100644 --- a/editor/import/3d/post_import_plugin_skeleton_rest_fixer.cpp +++ b/editor/import/3d/post_import_plugin_skeleton_rest_fixer.cpp @@ -794,6 +794,14 @@ void PostImportPluginSkeletonRestFixer::internal_process(InternalImportCategory Quaternion new_rest_q = new_rest.basis.get_rotation_quaternion(); Quaternion old_pg_q = old_pg.basis.get_rotation_quaternion(); Quaternion new_pg_q = new_pg.basis.get_rotation_quaternion(); + + // [TINQS] Diagnostic: log before/after for first key. + if (key_len > 0) { + Quaternion bq = static_cast(anim->track_get_key_value(i, 0)); + Quaternion aq = new_pg_q.inverse() * old_pg_q * bq * old_rest_q.inverse() * old_pg_q.inverse() * new_pg_q * new_rest_q; + WARN_PRINT("[TINQS] " + String(bn) + " before=(" + String::num(bq.x,2) + "," + String::num(bq.y,2) + "," + String::num(bq.z,2) + "," + String::num(bq.w,2) + ") after=(" + String::num(aq.x,2) + "," + String::num(aq.y,2) + "," + String::num(aq.z,2) + "," + String::num(aq.w,2) + ")"); + } + for (int j = 0; j < key_len; j++) { Quaternion qt = static_cast(anim->track_get_key_value(i, j)); anim->track_set_key_value(i, j, new_pg_q.inverse() * old_pg_q * qt * old_rest_q.inverse() * old_pg_q.inverse() * new_pg_q * new_rest_q);