OverviewFilesCommitsIssuesDocsReleasesPeers

blender-bridge commits / 68664cb

fix: transform import — wrong origin positions and basis sign errors
- Origin was read from positions 12,14,13 (old row-3 layout) but export now puts it at 3,11,7 (column-3 layout). This caused all positions to reset to (0,0,0). - b[2][2] had wrong sign (-data[5] instead of data[5]) - b[1][2] had wrong sign (data[6] instead of -data[6]) - full_import no longer checks direction flag, so reconnects work Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
68664cbd65354b1aea3c6d24a9d07c72c9e25c70
by plankatron <fleeky@gmail.com> · 2026-03-03T00:45:02.000Z

Changed files (2) +10 -8

blender_addon/scene_import.py +0 -2
……@@ -50,8 +50,6 @@ class SceneImporter:
5050
5151 if header["magic"] != b"BGOD":
5252 raise ValueError(f"Bad magic: {header['magic']}")
53 if header["direction"] != 0:
54 return # Not a godot→blender export
5553
5654 self._last_sequence = header["sequence"]
5755
src/blender_bridge.cpp +10 -6
……@@ -455,26 +455,30 @@ void BlenderBridge::import_changes(Node *root) {
455455 memcpy(xform_data, base + entry.data_offset, TRANSFORM_SIZE);
456456
457457 // Convert Blender Z-up back to Godot Y-up
458 // Reverse of _export_transform (translation in column 3: positions 3,7,11)
458459 Transform3D xform;
459460 Basis &b = xform.basis;
460461 Vector3 &o = xform.origin;
461462
462 // Reverse of _export_transform
463 // Export: out[0]=b00, out[1]=-b20, out[2]=b10
463464 b[0][0] = xform_data[0];
464465 b[1][0] = xform_data[2];
465466 b[2][0] = -xform_data[1];
466467
468 // Export: out[4]=-b02, out[5]=b22, out[6]=-b12
467469 b[0][2] = -xform_data[4];
468 b[1][2] = xform_data[6];
469 b[2][2] = -xform_data[5];
470 b[1][2] = -xform_data[6];
471 b[2][2] = xform_data[5];
470472
473 // Export: out[8]=b01, out[9]=-b21, out[10]=b11
471474 b[0][1] = xform_data[8];
472475 b[1][1] = xform_data[10];
473476 b[2][1] = -xform_data[9];
474477
475 o.x = xform_data[12];
476 o.y = xform_data[14];
477 o.z = -xform_data[13];
478 // Export: out[3]=o.x, out[7]=-o.z, out[11]=o.y
479 o.x = xform_data[3];
480 o.y = xform_data[11];
481 o.z = -xform_data[7];
478482
479483 target->set_global_transform(xform);
480484 }