Camera Types
Camera components define how the scene is rendered from a camera's point of view. All camera components extend the base component type from the Scene Graph.
Camera component is the abstract base class for all camera components. It represents the physical body, lens, and other cinematographic qualities of a camera, such as sensor size, aspect ratio constraints, focal length, focus distance, and post-process settings.
All concrete camera types inherit from camera_component. This class cannot be instantiated directly.
Perspective
The perspective projection camera is the most common camera type for gameplay. Objects appear smaller as they recede into the distance, which matches natural human vision.
Perspective Angle Examples
Because Verse logic runs on the server, the FieldOfViewDegrees field is specified as a horizontal field of view assuming a 16:9 aspect ratio. On clients, the actual field of view rendered is adjusted for the player's real display using the Horizontal Plus (Hor+) scaling method. On wider displays, such as 21:9 or 32:9 ultrawides, the horizontal field of view (FOV) widens, keeping the vertical FOV constant so that ultrawide players see more of the scene rather than having the image stretched or cropped. This keeps character framing consistent across different aspect ratios.
# Create an entity to own the camera component
MyEntity := entity{}
# Create a perspective camera with a 75 degree horizontal field of view
MyCamera := perspective_camera_component{
FieldOfViewDegrees := 75.0
}
# Attach the camera component to the entity. Note that MyEntity will also need to be
# added to the simulation entity in order for it to be added to the world
Orthographic
The orthographic projection camera is typically used for 2D games, isometric views, and map rendering. Objects render at the same apparent size regardless of their distance from the camera. There is no perspective foreshortening.
# Create an entity to own the camera component
MyEntity := entity{}
# Create an orthographic camera showing a 5-meter wide area
MyCamera := orthographic_camera_component{
OrthographicProjectionWidth := 500.0
}
# Attach the camera component to the entity. Note that MyEntity will also need to be
# added to the simulation entity in order for it to be added to the world
Physically-based
The physically-based camera is most appropriate for cinematic sequences, virtual production, or any context where physically accurate camera behaviour is desirable.
The physically-based camera has view properties derived from real-world camera parameters. The field of view is computed from the combination of the sensor dimensions (camera_body) and the lens focal length (camera_lens), matching the behaviour of a real-world film or digital camera.
Camera properties are split into a separate Body and Lens, making it easy to swap out one set of physical properties independently of the other. For example, you can switch between a wide-angle and telephoto lens while keeping the same body settings.
Physically-based Angle Examples
# Create an entity to own the camera component
MyEntity := entity{}
# Create a physically-based camera with a full-frame sensor and 50mm lens
MyCamera := physical_camera_component{
# Configure the camera body with a full-frame sensor, moderate ISO and shutter speed
Body := camera_body{
# Full-frame sensor dimensions (36mm x 24mm)
SensorWidthMillimeters := 36.0
SensorHeightMillimeters := 24.0