resource.statements.append(Statement("position", position[0], position[1], position[2]))
look_dir = obj.matrix_world@mathutils.Vector((0, 0, -1, 0))
resource.statements.append(Statement("look_direction", look_dir[0], look_dir[1], look_dir[2]))
- resource.statements.append(Statement("up_direction", 0.0, 0.0, 1.0))
+
+ 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)
+ resource.statements.append(Statement("up_direction", up_dir.x, up_dir.y, up_dir.z))
# Auto seems to be the same as horizontal
if obj.data.sensor_fit=='HORIZONTAL' or obj.data.sensor_fit=='AUTO':