From aeb4cb010eb497e3c511edcad05e8d8831a1ca12 Mon Sep 17 00:00:00 2001 From: Bastien Montagne <montagne29@wanadoo.fr> Date: Sat, 13 Sep 2014 18:40:32 +0200 Subject: [PATCH] Fix T41808: FBX exporter does not properly position and rotate group instances Forward/Up axes to FBX system was still wrong. Not happy with finding such issue at this stage of development. :/ Hopefully now we are OK (at least, checked all orientations with same basice file in Unity, all were imported OK). --- io_scene_fbx/fbx_utils.py | 49 +++++++++++++------------- io_scene_fbx_experimental/fbx_utils.py | 49 +++++++++++++------------- 2 files changed, 48 insertions(+), 50 deletions(-) diff --git a/io_scene_fbx/fbx_utils.py b/io_scene_fbx/fbx_utils.py index d661cea23..b751025c0 100644 --- a/io_scene_fbx/fbx_utils.py +++ b/io_scene_fbx/fbx_utils.py @@ -100,31 +100,30 @@ FBX_LIGHT_DECAY_TYPES = { RIGHT_HAND_AXES = { # Up, Front -> FBX values (tuples of (axis, sign), Up, Front, Coord). - # Note: Since we always stay in right-handed system, third coord sign is always positive! - ('X', 'Y'): ((0, 1), (1, -1), (2, 1)), - ('X', '-Y'): ((0, 1), (1, 1), (2, 1)), - ('X', 'Z'): ((0, 1), (2, -1), (1, 1)), - ('X', '-Z'): ((0, 1), (2, 1), (1, 1)), - ('-X', 'Y'): ((0, -1), (1, -1), (2, 1)), - ('-X', '-Y'): ((0, -1), (1, 1), (2, 1)), - ('-X', 'Z'): ((0, -1), (2, -1), (1, 1)), - ('-X', '-Z'): ((0, -1), (2, 1), (1, 1)), - ('Y', 'X'): ((1, 1), (0, -1), (2, 1)), - ('Y', '-X'): ((1, 1), (0, 1), (2, 1)), - ('Y', 'Z'): ((1, 1), (2, -1), (0, 1)), - ('Y', '-Z'): ((1, 1), (2, 1), (0, 1)), - ('-Y', 'X'): ((1, -1), (0, -1), (2, 1)), - ('-Y', '-X'): ((1, -1), (0, 1), (2, 1)), - ('-Y', 'Z'): ((1, -1), (2, -1), (0, 1)), - ('-Y', '-Z'): ((1, -1), (2, 1), (0, 1)), - ('Z', 'X'): ((2, 1), (0, -1), (1, 1)), - ('Z', '-X'): ((2, 1), (0, 1), (1, 1)), - ('Z', 'Y'): ((2, 1), (1, -1), (0, 1)), # Blender system! - ('Z', '-Y'): ((2, 1), (1, 1), (0, 1)), - ('-Z', 'X'): ((2, -1), (0, -1), (1, 1)), - ('-Z', '-X'): ((2, -1), (0, 1), (1, 1)), - ('-Z', 'Y'): ((2, -1), (1, -1), (0, 1)), - ('-Z', '-Y'): ((2, -1), (1, 1), (0, 1)), + ('X', 'Y'): ((0, 1), (1, 1), (2, 1)), + ('X', '-Y'): ((0, 1), (1, -1), (2, -1)), + ('X', 'Z'): ((0, 1), (2, 1), (1, -1)), + ('X', '-Z'): ((0, 1), (2, -1), (1, 1)), + ('-X', 'Y'): ((0, -1), (1, 1), (2, -1)), + ('-X', '-Y'): ((0, -1), (1, -1), (2, 1)), + ('-X', 'Z'): ((0, -1), (2, 1), (1, 1)), + ('-X', '-Z'): ((0, -1), (2, -1), (1, -1)), + ('Y', 'X'): ((1, 1), (0, 1), (2, -1)), + ('Y', '-X'): ((1, 1), (0, -1), (2, 1)), + ('Y', 'Z'): ((1, 1), (2, 1), (0, 1)), + ('Y', '-Z'): ((1, 1), (2, -1), (0, -1)), + ('-Y', 'X'): ((1, -1), (0, 1), (2, 1)), + ('-Y', '-X'): ((1, -1), (0, -1), (2, -1)), + ('-Y', 'Z'): ((1, -1), (2, 1), (0, -1)), + ('-Y', '-Z'): ((1, -1), (2, -1), (0, 1)), + ('Z', 'X'): ((2, 1), (0, 1), (1, 1)), + ('Z', '-X'): ((2, 1), (0, -1), (1, -1)), + ('Z', 'Y'): ((2, 1), (1, 1), (0, -1)), + ('Z', '-Y'): ((2, 1), (1, -1), (0, 1)), # Blender system! + ('-Z', 'X'): ((2, -1), (0, 1), (1, -1)), + ('-Z', '-X'): ((2, -1), (0, -1), (1, 1)), + ('-Z', 'Y'): ((2, -1), (1, 1), (0, 1)), + ('-Z', '-Y'): ((2, -1), (1, -1), (0, -1)), } diff --git a/io_scene_fbx_experimental/fbx_utils.py b/io_scene_fbx_experimental/fbx_utils.py index f0eeca031..369d9ab46 100644 --- a/io_scene_fbx_experimental/fbx_utils.py +++ b/io_scene_fbx_experimental/fbx_utils.py @@ -100,31 +100,30 @@ FBX_LIGHT_DECAY_TYPES = { RIGHT_HAND_AXES = { # Up, Front -> FBX values (tuples of (axis, sign), Up, Front, Coord). - # Note: Since we always stay in right-handed system, third coord sign is always positive! - ('X', 'Y'): ((0, 1), (1, -1), (2, 1)), - ('X', '-Y'): ((0, 1), (1, 1), (2, 1)), - ('X', 'Z'): ((0, 1), (2, -1), (1, 1)), - ('X', '-Z'): ((0, 1), (2, 1), (1, 1)), - ('-X', 'Y'): ((0, -1), (1, -1), (2, 1)), - ('-X', '-Y'): ((0, -1), (1, 1), (2, 1)), - ('-X', 'Z'): ((0, -1), (2, -1), (1, 1)), - ('-X', '-Z'): ((0, -1), (2, 1), (1, 1)), - ('Y', 'X'): ((1, 1), (0, -1), (2, 1)), - ('Y', '-X'): ((1, 1), (0, 1), (2, 1)), - ('Y', 'Z'): ((1, 1), (2, -1), (0, 1)), - ('Y', '-Z'): ((1, 1), (2, 1), (0, 1)), - ('-Y', 'X'): ((1, -1), (0, -1), (2, 1)), - ('-Y', '-X'): ((1, -1), (0, 1), (2, 1)), - ('-Y', 'Z'): ((1, -1), (2, -1), (0, 1)), - ('-Y', '-Z'): ((1, -1), (2, 1), (0, 1)), - ('Z', 'X'): ((2, 1), (0, -1), (1, 1)), - ('Z', '-X'): ((2, 1), (0, 1), (1, 1)), - ('Z', 'Y'): ((2, 1), (1, -1), (0, 1)), # Blender system! - ('Z', '-Y'): ((2, 1), (1, 1), (0, 1)), - ('-Z', 'X'): ((2, -1), (0, -1), (1, 1)), - ('-Z', '-X'): ((2, -1), (0, 1), (1, 1)), - ('-Z', 'Y'): ((2, -1), (1, -1), (0, 1)), - ('-Z', '-Y'): ((2, -1), (1, 1), (0, 1)), + ('X', 'Y'): ((0, 1), (1, 1), (2, 1)), + ('X', '-Y'): ((0, 1), (1, -1), (2, -1)), + ('X', 'Z'): ((0, 1), (2, 1), (1, -1)), + ('X', '-Z'): ((0, 1), (2, -1), (1, 1)), + ('-X', 'Y'): ((0, -1), (1, 1), (2, -1)), + ('-X', '-Y'): ((0, -1), (1, -1), (2, 1)), + ('-X', 'Z'): ((0, -1), (2, 1), (1, 1)), + ('-X', '-Z'): ((0, -1), (2, -1), (1, -1)), + ('Y', 'X'): ((1, 1), (0, 1), (2, -1)), + ('Y', '-X'): ((1, 1), (0, -1), (2, 1)), + ('Y', 'Z'): ((1, 1), (2, 1), (0, 1)), + ('Y', '-Z'): ((1, 1), (2, -1), (0, -1)), + ('-Y', 'X'): ((1, -1), (0, 1), (2, 1)), + ('-Y', '-X'): ((1, -1), (0, -1), (2, -1)), + ('-Y', 'Z'): ((1, -1), (2, 1), (0, -1)), + ('-Y', '-Z'): ((1, -1), (2, -1), (0, 1)), + ('Z', 'X'): ((2, 1), (0, 1), (1, 1)), + ('Z', '-X'): ((2, 1), (0, -1), (1, -1)), + ('Z', 'Y'): ((2, 1), (1, 1), (0, -1)), + ('Z', '-Y'): ((2, 1), (1, -1), (0, 1)), # Blender system! + ('-Z', 'X'): ((2, -1), (0, 1), (1, -1)), + ('-Z', '-X'): ((2, -1), (0, -1), (1, 1)), + ('-Z', 'Y'): ((2, -1), (1, 1), (0, 1)), + ('-Z', '-Y'): ((2, -1), (1, -1), (0, -1)), } -- GitLab