1818
1919#include < filament/Camera.h>
2020
21+
2122#include < utils/Entity.h>
2223
2324#include < math/mat4.h>
@@ -40,6 +41,13 @@ Java_com_google_android_filament_Camera_nSetProjectionFov(JNIEnv*, jclass ,
4041 camera->setProjection (fovInDegrees, aspect, near, far, (Camera::Fov) fov);
4142}
4243
44+ extern " C" JNIEXPORT jdouble JNICALL
45+ Java_com_google_android_filament_Camera_nGetFieldOfViewInDegrees (JNIEnv*, jclass,
46+ jlong nativeCamera, jint direction) {
47+ Camera *camera = (Camera *) nativeCamera;
48+ return camera->getFieldOfViewInDegrees ((Camera::Fov) direction);
49+ }
50+
4351extern " C" JNIEXPORT void JNICALL
4452Java_com_google_android_filament_Camera_nSetLensProjection (JNIEnv*, jclass,
4553 jlong nativeCamera, jdouble focalLength, jdouble aspect, jdouble near, jdouble far) {
@@ -62,6 +70,21 @@ Java_com_google_android_filament_Camera_nSetCustomProjection(JNIEnv *env, jclass
6270 env->ReleaseDoubleArrayElements (inProjectionForCulling_, inProjectionForCulling, JNI_ABORT);
6371}
6472
73+ extern " C" JNIEXPORT void JNICALL
74+ Java_com_google_android_filament_Camera_nSetCustomEyeProjection (JNIEnv *env, jclass,
75+ jlong nativeCamera, jdoubleArray inProjection_, jint count, jdoubleArray inProjectionForCulling_,
76+ jdouble near, jdouble far) {
77+ Camera *camera = (Camera *) nativeCamera;
78+ jdouble *inProjection = env->GetDoubleArrayElements (inProjection_, NULL );
79+ jdouble *inProjectionForCulling = env->GetDoubleArrayElements (inProjectionForCulling_, NULL );
80+ camera->setCustomEyeProjection (
81+ reinterpret_cast <const filament::math::mat4 *>(inProjection), (size_t ) count,
82+ *reinterpret_cast <const filament::math::mat4 *>(inProjectionForCulling),
83+ near, far);
84+ env->ReleaseDoubleArrayElements (inProjection_, inProjection, JNI_ABORT);
85+ env->ReleaseDoubleArrayElements (inProjectionForCulling_, inProjectionForCulling, JNI_ABORT);
86+ }
87+
6588extern " C" JNIEXPORT void JNICALL
6689Java_com_google_android_filament_Camera_nSetScaling (JNIEnv* env, jclass,
6790 jlong nativeCamera, jdouble x, jdouble y) {
@@ -76,6 +99,17 @@ Java_com_google_android_filament_Camera_nSetShift(JNIEnv* env, jclass,
7699 camera->setShift ({(double )x, (double )y});
77100}
78101
102+ extern " C" JNIEXPORT void JNICALL
103+ Java_com_google_android_filament_Camera_nGetShift (JNIEnv* env, jclass,
104+ jlong nativeCamera, jdoubleArray out_) {
105+ Camera *camera = (Camera *) nativeCamera;
106+ jdouble *out = env->GetDoubleArrayElements (out_, NULL );
107+ filament::math::double2 s = camera->getShift ();
108+ out[0 ] = s.x ;
109+ out[1 ] = s.y ;
110+ env->ReleaseDoubleArrayElements (out_, out, 0 );
111+ }
112+
79113extern " C" JNIEXPORT void JNICALL
80114Java_com_google_android_filament_Camera_nLookAt (JNIEnv*, jclass, jlong nativeCamera,
81115 jdouble eye_x, jdouble eye_y, jdouble eye_z, jdouble center_x, jdouble center_y,
@@ -115,6 +149,15 @@ Java_com_google_android_filament_Camera_nSetModelMatrixFp64(JNIEnv *env, jclass,
115149 env->ReleaseDoubleArrayElements (in_, in, JNI_ABORT);
116150}
117151
152+ extern " C" JNIEXPORT void JNICALL
153+ Java_com_google_android_filament_Camera_nSetEyeModelMatrix (JNIEnv *env, jclass,
154+ jlong nativeCamera, jint eyeId, jdoubleArray model_) {
155+ Camera* camera = (Camera *) nativeCamera;
156+ jdouble *model = env->GetDoubleArrayElements (model_, NULL );
157+ camera->setEyeModelMatrix ((uint8_t )eyeId, *reinterpret_cast <const filament::math::mat4*>(model));
158+ env->ReleaseDoubleArrayElements (model_, model, JNI_ABORT);
159+ }
160+
118161extern " C" JNIEXPORT void JNICALL
119162Java_com_google_android_filament_Camera_nGetProjectionMatrix (JNIEnv *env, jclass,
120163 jlong nativeCamera, jdoubleArray out_) {
@@ -280,3 +323,5 @@ Java_com_google_android_filament_Camera_nComputeEffectiveFov(JNIEnv*, jclass,
280323 jdouble fovInDegrees, jdouble focusDistance) {
281324 return Camera::computeEffectiveFov (fovInDegrees, focusDistance);
282325}
326+
327+
0 commit comments