Messages to control camera components and camera focus.
makes camera active
url - url of camera component
camera.acquire_focus("/observer#main_camera")
deactivate camera
url - url of camera component
camera.release_focus("/observer#main_camera")
Post this message to a camera-component to set its properties at run-time.
aspect_ratio - aspect ratio of the screen (width divided by height)
fov - field of view of the lens, measured as the angle in radians between the right and left edge
near_z - position of the near clipping plane (distance from camera along relative z)
far_z - position of the far clipping plane (distance from camera along relative z)
orthographic_projection - set to use an orthographic projection
orthographic_zoom - zoom level when the camera is using an orthographic projection
In the examples, it is assumed that the instance of the script has a camera-component with id "camera".
msg.post("#camera", "set_camera", {aspect_ratio = 16/9, fov = math.pi * 0.5, near_z = 0.1, far_z = 500})
Post this message to a camera-component to activate it.
Several cameras can be active at the same time, but only the camera that was last activated will be used for rendering.
When the camera is deactivated (see release_camera_focus
), the previously activated camera will again be used for rendering automatically.
The reason it is called "camera focus" is the similarity to how acquiring input focus works (see acquire_input_focus
).
In the examples, it is assumed that the instance of the script has a camera-component with id "camera".
msg.post("#camera", "acquire_camera_focus")
Post this message to a camera-component to deactivate it. The camera is then removed from the active cameras.
See acquire_camera_focus
for more information how the active cameras are used in rendering.
In the examples, it is assumed that the instance of the script has a camera-component with id "camera".
msg.post("#camera", "release_camera_focus")
Vertical field of view of the camera. The type of the property is float.
function init(self)
local fov = go.get("#camera", "fov")
go.set("#camera", "fov", fov + 0.1)
go.animate("#camera", "fov", go.PLAYBACK_ONCE_PINGPONG, 1.2, go.EASING_LINEAR, 1)
end
Camera frustum near plane. The type of the property is float.
function init(self)
local near_z = go.get("#camera", "near_z")
go.set("#camera", "near_z", 10)
end
Camera frustum far plane. The type of the property is float.
function init(self)
local far_z = go.get("#camera", "far_z")
go.set("#camera", "far_z", 10)
end
Zoom level when using an orthographic projection. The type of the property is float.
function init(self)
local orthographic_zoom = go.get("#camera", "orthographic_zoom")
go.set("#camera", "orthographic_zoom", 2.0)
go.animate("#camera", "orthographic_zoom", go.PLAYBACK_ONCE_PINGPONG, 0.5, go.EASING_INOUTQUAD, 2)
end
READ ONLY The calculated projection matrix of the camera. The type of the property is matrix4.
function init(self)
local projection = go.get("#camera", "projection")
end
READ ONLY The calculated view matrix of the camera. The type of the property is matrix4.
function init(self)
local view = go.get("#camera", "view")
end
The ratio between the frustum width and height. Used when calculating the projection of a perspective camera. The type of the property is number.
function init(self)
local aspect_ratio = go.get("#camera", "aspect_ratio")
go.set("#camera", "aspect_ratio", 1.2)
end