| … | … | @@ -455,26 +455,30 @@ void BlenderBridge::import_changes(Node *root) { |
| 455 | 455 | memcpy(xform_data, base + entry.data_offset, TRANSFORM_SIZE); |
| 456 | 456 | |
| 457 | 457 | // Convert Blender Z-up back to Godot Y-up |
| 458 | // Reverse of _export_transform (translation in column 3: positions 3,7,11) |
| 458 | 459 | Transform3D xform; |
| 459 | 460 | Basis &b = xform.basis; |
| 460 | 461 | Vector3 &o = xform.origin; |
| 461 | 462 | |
| 462 | | // Reverse of _export_transform |
| 463 | // Export: out[0]=b00, out[1]=-b20, out[2]=b10 |
| 463 | 464 | b[0][0] = xform_data[0]; |
| 464 | 465 | b[1][0] = xform_data[2]; |
| 465 | 466 | b[2][0] = -xform_data[1]; |
| 466 | 467 | |
| 468 | // Export: out[4]=-b02, out[5]=b22, out[6]=-b12 |
| 467 | 469 | 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]; |
| 470 | 472 | |
| 473 | // Export: out[8]=b01, out[9]=-b21, out[10]=b11 |
| 471 | 474 | b[0][1] = xform_data[8]; |
| 472 | 475 | b[1][1] = xform_data[10]; |
| 473 | 476 | b[2][1] = -xform_data[9]; |
| 474 | 477 | |
| 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]; |
| 478 | 482 | |
| 479 | 483 | target->set_global_transform(xform); |
| 480 | 484 | } |