Camera class

Immutable pinhole camera used for Gaussian splatting.

Holds intrinsics (fx, fy, width, height) and extrinsics (position, rotation) and can produce view/projection matrices in OpenGL conventions (column-major).

Annotations

Constructors

Camera.new({required int id, required int width, required int height, required Vector3 position, required Matrix3 rotation, required double fx, required double fy, double znear = 0.2, double zfar = 200.0, double ndcYSign = -1.0})
Creates a camera with explicit intrinsics and extrinsics.
const
Camera.createDefault({required double width, required double height, required double ndcYSign, double horizontalFovDegrees = 45.0, Vector3? position, Matrix3? rotation, int id = 0, double znear = 0.2, double zfar = 200.0})
Creates a reasonable default camera from a horizontal FOV and image size.
factory

Properties

fx double
Focal length in pixels along the x-axis.
final
fy double
Focal length in pixels along the y-axis.
final
hashCode int
The hash code for this object.
no setterinherited
height int
Image height in pixels.
final
horizontalFovDegrees double
Current horizontal field of view in degrees.
no setter
id int
Unique identifier for this camera.
final
ndcYSign double
Sign applied to clip-space Y (and to fy for screen-space math). +1 = OpenGL default; −1 = vertically flipped (Flutter texture).
final
position → Vector3
Camera position in world space.
final
rotation → Matrix3
Camera → world rotation (columns: right, up, forward).
final
runtimeType Type
A representation of the runtime type of the object.
no setterinherited
verticalFovDegrees double
Current vertical field of view in degrees.
no setter
width int
Image width in pixels.
final
yIsFlipped bool
Convenience flags
no setter
zfar double
Far clip plane (OpenGL space).
final
znear double
Near clip plane (OpenGL space).
final

Methods

copyWith({int? id, int? width, int? height, Vector3? position, Matrix3? rotation, double? fx, double? fy, double? znear, double? zfar, double? ndcYSign}) Camera
Creates a copy with selected fields changed.
copyWithPose({required Vector3 position, required Matrix3 rotation}) Camera
Returns a new camera with updated position and rotation.
copyWithViewport({required double newWidth, required double newHeight}) Camera
Returns a new camera that preserves the current horizontal FOV while changing the viewport size.
focalXForShader() double
Focal for shader uniforms;
focalYForShader() double
Y already carries the NDC sign.
invViewRotation3x3() List<double>
Returns the 3×3 inverse view rotation (camera → world), column-major.
noSuchMethod(Invocation invocation) → dynamic
Invoked when a nonexistent method or property is accessed.
inherited
projectionMatrix() → Matrix4
Column-major OpenGL projection built from intrinsics. Uses ndcYSign to control vertical orientation.
toString() String
A string representation of this object.
override
viewMatrix() → Matrix4
Returns a column-major OpenGL view matrix (world → camera).

Operators

operator ==(Object other) bool
The equality operator.
inherited