Эх сурвалжийг харах

Merge pull request #236 from Jason0214/force_normalize_quaternion_2.8

Explicitly normalize quaternion in exporting
Lu Jiacheng 6 жил өмнө
parent
commit
e5b635135c

+ 7 - 3
io_scene_godot/converters/animation/serializer.py

@@ -292,6 +292,10 @@ class TransformTrack(Track):
             frames = self.frames
             values = self.values
 
+        # Rotation fix for directional objects like SpotLight, camera, etc.
+        directional_rot_fix = \
+            mathutils.Euler((math.radians(-90), 0, 0)).to_quaternion()
+
         for frame, trans_frame in zip(frames, values):
             # move animation first frame to scene.frame_start
             if frame < scene_frame_start:
@@ -312,10 +316,10 @@ class TransformTrack(Track):
                 [quaternion.w, quaternion.x, quaternion.z, -quaternion.y])
             scale = mathutils.Vector([scale.x, scale.z, scale.y])
 
-            # for directional objects like SpotLight, camera, etc.
             if self.is_directional:
-                rotation = mathutils.Euler((math.radians(-90), 0, 0))
-                quaternion = quaternion @ rotation.to_quaternion()
+                quaternion = quaternion @ directional_rot_fix
+
+            quaternion.normalize()
 
             array.append((frame - scene_frame_start) * time_per_frame)
             # transition default 1.0

Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_animation/animation_bone_transform.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_animation/animation_loop.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_animation/animation_object_transform.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_animation/animation_rotation_euler.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_with_constraint/bone_attachment_ik.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_with_constraint/constraint_external_IK.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_with_constraint/constraint_internal_IK.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_with_constraint/constraint_with_undeform_bone.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/action_with_constraint/stashed_constraint.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/armature/armature_illegal_bone_name.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 1 - 1
tests/reference_exports/armature/armature_with_non_deform_bone.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/armature/non-inherit-bone.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/light/animation_various_lights.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/nla_animation/nla_with_active_action.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/nla_animation/nla_with_stashed_action.escn


Файлын зөрүү хэтэрхий том тул дарагдсан байна
+ 0 - 0
tests/reference_exports/scene_animation/animation_parented_objects.escn


Энэ ялгаанд хэт олон файл өөрчлөгдсөн тул зарим файлыг харуулаагүй болно