diff --git a/web/filament-js/filament.d.ts b/web/filament-js/filament.d.ts index 33c865aeb4..6d880abca2 100644 --- a/web/filament-js/filament.d.ts +++ b/web/filament-js/filament.d.ts @@ -260,6 +260,7 @@ export class Camera { public setProjectionFov(fovInDegrees: number, aspect: number, near: number, far: number, fov: Camera$Fov): void; public setLensProjection(focalLength: number, near: number, far: number): void; + public setLensProjectionWithAspect(focalLength: number, aspect: number, near: number, far: number): void; public setCustomProjection(projection: mat4, near: number, far: number): void; public getProjectionMatrix(): mat4; public getCullingProjectionMatrix(): mat4; diff --git a/web/filament-js/jsbindings.cpp b/web/filament-js/jsbindings.cpp index 45c66bcb57..91cb8f50a5 100644 --- a/web/filament-js/jsbindings.cpp +++ b/web/filament-js/jsbindings.cpp @@ -522,7 +522,15 @@ class_("Camera") self->setProjection(fovInDegrees, aspect, near, far, direction); }), allow_raw_pointers()) - .function("setLensProjection", &Camera::setLensProjection) + .function("setLensProjectionWithAspect", EMBIND_LAMBDA(void, (Camera* self, + double focalLength, double aspect, double near, double far), { + self->setLensProjection(focalLength, aspect, near, far); + }), allow_raw_pointers()) + + .function("setLensProjection", EMBIND_LAMBDA(void, (Camera* self, + double focalLength, double near, double far), { + self->setLensProjection(focalLength, near, far); + }), allow_raw_pointers()) .function("setCustomProjection", EMBIND_LAMBDA(void, (Camera* self, flatmat4 m, double near, double far), { diff --git a/web/filament-js/test.ts b/web/filament-js/test.ts index b7ad8f648d..c083eed27d 100644 --- a/web/filament-js/test.ts +++ b/web/filament-js/test.ts @@ -44,6 +44,7 @@ function smoke_camera_frustum() { camera.setProjection(Filament.Camera$Projection.ORTHO, 0, 1, 0, 1, 0, 1); camera.setProjectionFov(45, 1.0, 0.0, 1.0, Filament.Camera$Fov.HORIZONTAL); camera.setLensProjection(0, 1, 2); + camera.setLensProjectionWithAspect(0, 0.33, 1, 2); camera.setCustomProjection(m4, 0, 1); const m5 = camera.getProjectionMatrix() as glm.mat4; const m6 = camera.getCullingProjectionMatrix() as glm.mat4;