Привет, нужен скрипт для Блендер 3.3.0, в режиме таба скриптинг, который создаст меш Конус объекты согласно instance name и задаст трансформ. Матрица в такой последовательности:
| X.X X.Y X.Z 0 |
| Y.X Y.Y Y.Z 0 |
| Z.X Z.Y Z.Z 0 |
| T.X T.Y T.Z 1 |

как у GLTF, учти, что Blender имеет собственную логику обработки XYZ координат, включая ротацию, в Blender они устанавливаются так X-ZY (миррор Y, он же Z).  
The coordinate system of the game is the same as the glTF coordinate system. You can find that here:
https://registry.khronos.org/glTF/specs/2.0/glTF-2.0.html#coordinate-system-and-units

You'll need to shift around the axes of the matrix to match the ones from Blender. 
I believe that means you'll need to put the game's X into Blender's X, the game's Y into Blender's Z, and the game's -Z into Blender's Y
AlonsoBeast — 27.01.2025, 21:18
Thank you so much for your help! I'll try to implement it..
AlonsoBeast — 27.01.2025, 21:19
yeah, Blender XYZ means XZY in files with inverted Y-
Petar — 27.01.2025, 22:19
You can probably get away with taking the transform directly from the game, and then multiply the matrix by a positive 90 degree rotation on the X axis 
Something like:
mat_rot = mathutils.Matrix.Rotation(math.radians(90.0), 4, 'X')
mat_final = mat_rot @ mat_game_transform 


Действуйте:

вот код для трансформации 

<?xml version="1.0" encoding="UTF-8"?>
<placements name="Garages">
  <instance name="Garage00" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 208.436371, -25.2847557, 238.4365, 1" />
  <instance name="Garage01" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 203.072632, -25.2852783, 226.647354, 1" />
  <instance name="Garage02" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 197.699524, -25.2852783, 214.845566, 1" />
  <instance name="Garage03" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 185.107468, -25.2852783, 187.165817, 1" />
  <instance name="Garage04" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 179.744965, -25.2847557, 175.395309, 1" />
  <instance name="Garage05" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 174.387222, -25.2852783, 163.618378, 1" />
  <instance name="Garage06" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 169.032318, -25.2852783, 151.839828, 1" />
  <instance name="Garage07" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 163.674576, -25.2852783, 140.071289, 1" />
  <instance name="Garage08" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 151.056534, -25.2847557, 112.350975, 1" />
  <instance name="Garage09" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 145.69989, -25.2852783, 100.57106, 1" />
  <instance name="Garage10" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 140.338547, -25.2852783, 88.79937, 1" />
  <instance name="Garage11" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 134.968582, -25.2852783, 77.00142, 1" />
  <instance name="Garage12" transform="-0.414105237, 0, -0.910229, 0, 0, 1, 0, 0, 0.910229, 0, -0.414105237, 0, 129.6064, -25.2847557, 65.20524, 1" />
</placements>