Arbitrary projection ray. forward is the camera-look
direction (camera→scene) — the projection happens along
this vector and the image plane is perpendicular to it.
up defines which world direction reads as "up" on the
image; if omitted, the Scene's world up axis is used. Both
vectors are auto-normalised and up is orthogonalised
against forward, so the caller doesn't have to feed in a
strictly orthonormal pair.
The basis derived from this ray is {right = normalize(forward × up), up = normalize(up_perp), forward}. A forward collinear
with up falls back to picking an arbitrary perpendicular
so projection still resolves rather than failing.
Arbitrary projection ray.
forwardis the camera-look direction (camera→scene) — the projection happens along this vector and the image plane is perpendicular to it.updefines which world direction reads as "up" on the image; if omitted, the Scene's world up axis is used. Both vectors are auto-normalised andupis orthogonalised againstforward, so the caller doesn't have to feed in a strictly orthonormal pair.The basis derived from this ray is
{right = normalize(forward × up), up = normalize(up_perp), forward}. Aforwardcollinear withupfalls back to picking an arbitrary perpendicular so projection still resolves rather than failing.