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