]> git.tdb.fi Git - libs/gl.git/commitdiff
Correctly export cameras aligned on the Z axis
authorMikko Rasa <tdb@tdb.fi>
Sat, 15 Jul 2023 19:33:32 +0000 (22:33 +0300)
committerMikko Rasa <tdb@tdb.fi>
Sat, 15 Jul 2023 19:33:32 +0000 (22:33 +0300)
blender/io_mspgl/export_camera.py

index 7108681aa533ccf53c5b688a4e694bb27b499372..9b814d9e2cbb88cf14048c9652a4ef424a476e0f 100644 (file)
@@ -16,8 +16,13 @@ class CameraExporter:
                resource.statements.append(Statement("look_direction", look_dir.x, look_dir.y, look_dir.z))
 
                right_dir = obj.matrix_world@mathutils.Vector((1, 0, 0, 0))
-               look_xy = mathutils.Vector((look_dir.x, look_dir.y, 0))
-               up_dir = right_dir.xyz.cross(look_xy)
+               if look_dir.x*look_dir.x+look_dir.y*look_dir.y>0.01:
+                       look_flat = mathutils.Vector((look_dir.x, look_dir.y, 0))
+               elif abs(look_dir.y)>abs(look_dir.x):
+                       look_flat = mathutils.Vector((look_dir.x, 0, look_dir.z))
+               else:
+                       look_flat = mathutils.Vector((0, look_dir.y, look_dir.z))
+               up_dir = right_dir.xyz.cross(look_flat)
                resource.statements.append(Statement("up_direction", up_dir.x, up_dir.y, up_dir.z))
 
                # Auto seems to be the same as horizontal