glTF exporter: fix collection offset when rotated or scaled

This commit is contained in:
Julien Duroure 2021-01-30 18:46:55 +01:00
parent 2afbdc806e
commit 3e7209f9f2
Notes: blender-bot 2023-02-14 18:45:38 +01:00
Referenced by issue #83131, gltf exporter exports incorrect transforms when exporting nodes that have a rotation or scale other than the identity
2 changed files with 11 additions and 2 deletions

View File

@ -15,7 +15,7 @@
bl_info = {
'name': 'glTF 2.0 format',
'author': 'Julien Duroure, Scurest, Norbert Nopper, Urs Hanselmann, Moritz Becher, Benjamin Schmithüsen, Jim Eckerlein, and many external contributors',
"version": (1, 5, 15),
"version": (1, 5, 16),
'blender': (2, 91, 0),
'location': 'File > Import-Export',
'description': 'Import-Export as glTF 2.0',

View File

@ -423,8 +423,17 @@ def __gather_trans_rot_scale(blender_object, export_settings):
sca = __convert_swizzle_scale(sca, export_settings)
if blender_object.instance_type == 'COLLECTION' and blender_object.instance_collection:
trans -= __convert_swizzle_location(
offset = -__convert_swizzle_location(
blender_object.instance_collection.instance_offset, export_settings)
s = Matrix.Diagonal(sca).to_4x4()
r = rot.to_matrix().to_4x4()
t = Matrix.Translation(trans).to_4x4()
o = Matrix.Translation(offset).to_4x4()
m = t @ r @ s @ o
trans = m.translation
translation, rotation, scale = (None, None, None)
trans[0], trans[1], trans[2] = gltf2_blender_math.round_if_near(trans[0], 0.0), gltf2_blender_math.round_if_near(trans[1], 0.0), \
gltf2_blender_math.round_if_near(trans[2], 0.0)