rename CameraPtr to TCamera and use named arguments for setCameraLensProjection
This commit is contained in:
@@ -766,73 +766,73 @@ external void set_scale(
|
|||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(
|
ffi.Void Function(
|
||||||
ffi.Pointer<CameraPtr>, ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true)
|
ffi.Pointer<TCamera>, ffi.Float, ffi.Float, ffi.Float)>(isLeaf: true)
|
||||||
external void set_camera_exposure(
|
external void set_camera_exposure(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double aperture,
|
double aperture,
|
||||||
double shutterSpeed,
|
double shutterSpeed,
|
||||||
double sensitivity,
|
double sensitivity,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Void Function(ffi.Pointer<CameraPtr>, double4x4)>(isLeaf: true)
|
@ffi.Native<ffi.Void Function(ffi.Pointer<TCamera>, double4x4)>(isLeaf: true)
|
||||||
external void set_camera_model_matrix(
|
external void set_camera_model_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double4x4 matrix,
|
double4x4 matrix,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Pointer<CameraPtr> Function(ffi.Pointer<ffi.Void>, EntityId)>(
|
@ffi.Native<ffi.Pointer<TCamera> Function(ffi.Pointer<ffi.Void>, EntityId)>(
|
||||||
isLeaf: true)
|
isLeaf: true)
|
||||||
external ffi.Pointer<CameraPtr> get_camera(
|
external ffi.Pointer<TCamera> get_camera(
|
||||||
ffi.Pointer<ffi.Void> viewer,
|
ffi.Pointer<ffi.Void> viewer,
|
||||||
int entity,
|
int entity,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Double Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<ffi.Double Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double get_camera_focal_length(
|
external double get_camera_focal_length(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<double4x4 Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<double4x4 Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double4x4 get_camera_model_matrix(
|
external double4x4 get_camera_model_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<double4x4 Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<double4x4 Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double4x4 get_camera_view_matrix(
|
external double4x4 get_camera_view_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<double4x4 Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<double4x4 Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double4x4 get_camera_projection_matrix(
|
external double4x4 get_camera_projection_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<double4x4 Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<double4x4 Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double4x4 get_camera_culling_projection_matrix(
|
external double4x4 get_camera_culling_projection_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Pointer<ffi.Double> Function(ffi.Pointer<CameraPtr>)>(
|
@ffi.Native<ffi.Pointer<ffi.Double> Function(ffi.Pointer<TCamera>)>(
|
||||||
isLeaf: true)
|
isLeaf: true)
|
||||||
external ffi.Pointer<ffi.Double> get_camera_frustum(
|
external ffi.Pointer<ffi.Double> get_camera_frustum(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(ffi.Pointer<CameraPtr>, double4x4, ffi.Double,
|
ffi.Void Function(ffi.Pointer<TCamera>, double4x4, ffi.Double,
|
||||||
ffi.Double)>(isLeaf: true)
|
ffi.Double)>(isLeaf: true)
|
||||||
external void set_camera_projection_matrix(
|
external void set_camera_projection_matrix(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double4x4 matrix,
|
double4x4 matrix,
|
||||||
double near,
|
double near,
|
||||||
double far,
|
double far,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(ffi.Pointer<CameraPtr>, ffi.Double, ffi.Double,
|
ffi.Void Function(ffi.Pointer<TCamera>, ffi.Double, ffi.Double,
|
||||||
ffi.Double, ffi.Double, ffi.Bool)>(isLeaf: true)
|
ffi.Double, ffi.Double, ffi.Bool)>(isLeaf: true)
|
||||||
external void set_camera_projection_from_fov(
|
external void set_camera_projection_from_fov(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double fovInDegrees,
|
double fovInDegrees,
|
||||||
double aspect,
|
double aspect,
|
||||||
double near,
|
double near,
|
||||||
@@ -840,36 +840,36 @@ external void set_camera_projection_from_fov(
|
|||||||
bool horizontal,
|
bool horizontal,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Double Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<ffi.Double Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double get_camera_near(
|
external double get_camera_near(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Double Function(ffi.Pointer<CameraPtr>)>(isLeaf: true)
|
@ffi.Native<ffi.Double Function(ffi.Pointer<TCamera>)>(isLeaf: true)
|
||||||
external double get_camera_culling_far(
|
external double get_camera_culling_far(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Float Function(ffi.Pointer<CameraPtr>, ffi.Bool)>(isLeaf: true)
|
@ffi.Native<ffi.Float Function(ffi.Pointer<TCamera>, ffi.Bool)>(isLeaf: true)
|
||||||
external double get_camera_fov(
|
external double get_camera_fov(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
bool horizontal,
|
bool horizontal,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<
|
@ffi.Native<
|
||||||
ffi.Void Function(ffi.Pointer<CameraPtr>, ffi.Double, ffi.Double,
|
ffi.Void Function(ffi.Pointer<TCamera>, ffi.Double, ffi.Double,
|
||||||
ffi.Double, ffi.Double)>(isLeaf: true)
|
ffi.Double, ffi.Double)>(isLeaf: true)
|
||||||
external void set_camera_lens_projection(
|
external void set_camera_lens_projection(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double near,
|
double near,
|
||||||
double far,
|
double far,
|
||||||
double aspect,
|
double aspect,
|
||||||
double focalLength,
|
double focalLength,
|
||||||
);
|
);
|
||||||
|
|
||||||
@ffi.Native<ffi.Void Function(ffi.Pointer<CameraPtr>, ffi.Float)>(isLeaf: true)
|
@ffi.Native<ffi.Void Function(ffi.Pointer<TCamera>, ffi.Float)>(isLeaf: true)
|
||||||
external void set_camera_focus_distance(
|
external void set_camera_focus_distance(
|
||||||
ffi.Pointer<CameraPtr> camera,
|
ffi.Pointer<TCamera> camera,
|
||||||
double focusDistance,
|
double focusDistance,
|
||||||
);
|
);
|
||||||
|
|
||||||
@@ -1848,7 +1848,7 @@ external void unproject_texture_ffi(
|
|||||||
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> callback,
|
ffi.Pointer<ffi.NativeFunction<ffi.Void Function()>> callback,
|
||||||
);
|
);
|
||||||
|
|
||||||
final class CameraPtr extends ffi.Opaque {}
|
final class TCamera extends ffi.Opaque {}
|
||||||
|
|
||||||
final class TMaterialInstance extends ffi.Opaque {}
|
final class TMaterialInstance extends ffi.Opaque {}
|
||||||
|
|
||||||
|
|||||||
@@ -18,10 +18,6 @@ const ThermionEntity _FILAMENT_ASSET_ERROR = 0;
|
|||||||
|
|
||||||
typedef RenderCallback = Pointer<NativeFunction<Void Function(Pointer<Void>)>>;
|
typedef RenderCallback = Pointer<NativeFunction<Void Function(Pointer<Void>)>>;
|
||||||
|
|
||||||
double kNear = 0.05;
|
|
||||||
double kFar = 1000.0;
|
|
||||||
double kFocalLength = 28.0;
|
|
||||||
|
|
||||||
class ThermionViewerFFI extends ThermionViewer {
|
class ThermionViewerFFI extends ThermionViewer {
|
||||||
final _logger = Logger("ThermionViewerFFI");
|
final _logger = Logger("ThermionViewerFFI");
|
||||||
|
|
||||||
@@ -1354,8 +1350,9 @@ class ThermionViewerFFI extends ThermionViewer {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
@override
|
@override
|
||||||
Future setCameraLensProjection(
|
Future setCameraLensProjection({double near = kNear, double far = kFar, double? aspect,
|
||||||
double near, double far, double aspect, double focalLength) async {
|
double focalLength = kFocalLength}) async {
|
||||||
|
aspect ??= viewportDimensions.$1 / viewportDimensions.$2;
|
||||||
var mainCamera = get_camera(_viewer!, get_main_camera(_viewer!));
|
var mainCamera = get_camera(_viewer!, get_main_camera(_viewer!));
|
||||||
set_camera_lens_projection(mainCamera, near, far, aspect, focalLength);
|
set_camera_lens_projection(mainCamera, near, far, aspect, focalLength);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import 'package:thermion_dart/thermion_dart/viewer/events.dart';
|
import 'package:thermion_dart/thermion_dart/viewer/events.dart';
|
||||||
import 'package:thermion_dart/thermion_dart/viewer/ffi/thermion_viewer_ffi.dart';
|
|
||||||
|
|
||||||
import 'shared_types/shared_types.dart';
|
import 'shared_types/shared_types.dart';
|
||||||
export 'shared_types/shared_types.dart';
|
export 'shared_types/shared_types.dart';
|
||||||
@@ -11,6 +10,10 @@ import 'package:vector_math/vector_math_64.dart';
|
|||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
import 'package:animation_tools_dart/animation_tools_dart.dart';
|
||||||
|
|
||||||
|
const double kNear = 0.05;
|
||||||
|
const double kFar = 1000.0;
|
||||||
|
const double kFocalLength = 28.0;
|
||||||
|
|
||||||
abstract class ThermionViewer {
|
abstract class ThermionViewer {
|
||||||
///
|
///
|
||||||
/// A Future that resolves when the underlying rendering context has been successfully created.
|
/// A Future that resolves when the underlying rendering context has been successfully created.
|
||||||
@@ -490,8 +493,8 @@ abstract class ThermionViewer {
|
|||||||
///
|
///
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
Future setCameraLensProjection(
|
Future setCameraLensProjection({double near = kNear, double far = kFar, double? aspect,
|
||||||
double near, double far, double aspect, double focalLength);
|
double focalLength = kFocalLength});
|
||||||
|
|
||||||
///
|
///
|
||||||
/// Sets the focus distance for the camera.
|
/// Sets the focus distance for the camera.
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ extern "C"
|
|||||||
|
|
||||||
typedef int32_t EntityId;
|
typedef int32_t EntityId;
|
||||||
typedef int32_t _ManipulatorMode;
|
typedef int32_t _ManipulatorMode;
|
||||||
typedef struct CameraPtr CameraPtr;
|
typedef struct TCamera TCamera;
|
||||||
typedef struct TMaterialInstance TMaterialInstance;
|
typedef struct TMaterialInstance TMaterialInstance;
|
||||||
|
|
||||||
struct TMaterialKey {
|
struct TMaterialKey {
|
||||||
|
|||||||
@@ -208,22 +208,22 @@ extern "C"
|
|||||||
|
|
||||||
// Camera methods
|
// Camera methods
|
||||||
EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(const void *const viewer, bool enabled);
|
EMSCRIPTEN_KEEPALIVE void set_view_frustum_culling(const void *const viewer, bool enabled);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_exposure(CameraPtr *camera, float aperture, float shutterSpeed, float sensitivity);
|
EMSCRIPTEN_KEEPALIVE void set_camera_exposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(CameraPtr *camera, double4x4 matrix);
|
EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(TCamera *camera, double4x4 matrix);
|
||||||
EMSCRIPTEN_KEEPALIVE CameraPtr *get_camera(const void *const viewer, EntityId entity);
|
EMSCRIPTEN_KEEPALIVE TCamera *get_camera(const void *const viewer, EntityId entity);
|
||||||
EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_model_matrix(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_model_matrix(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_view_matrix(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_view_matrix(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_projection_matrix(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_projection_matrix(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_culling_projection_matrix(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE double4x4 get_camera_culling_projection_matrix(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE const double *const get_camera_frustum(CameraPtr *const camera);
|
EMSCRIPTEN_KEEPALIVE const double *const get_camera_frustum(TCamera *const camera);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_projection_matrix(CameraPtr *camera, double4x4 matrix, double near, double far);
|
EMSCRIPTEN_KEEPALIVE void set_camera_projection_matrix(TCamera *camera, double4x4 matrix, double near, double far);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(CameraPtr *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal);
|
EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal);
|
||||||
EMSCRIPTEN_KEEPALIVE double get_camera_near(CameraPtr *camera);
|
EMSCRIPTEN_KEEPALIVE double get_camera_near(TCamera *camera);
|
||||||
EMSCRIPTEN_KEEPALIVE double get_camera_culling_far(CameraPtr *camera);
|
EMSCRIPTEN_KEEPALIVE double get_camera_culling_far(TCamera *camera);
|
||||||
EMSCRIPTEN_KEEPALIVE float get_camera_fov(CameraPtr *camera, bool horizontal);
|
EMSCRIPTEN_KEEPALIVE float get_camera_fov(TCamera *camera, bool horizontal);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_lens_projection(CameraPtr *camera, double near, double far, double aspect, double focalLength);
|
EMSCRIPTEN_KEEPALIVE void set_camera_lens_projection(TCamera *camera, double near, double far, double aspect, double focalLength);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(CameraPtr *camera, float focusDistance);
|
EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(TCamera *camera, float focusDistance);
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(const void *const viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed);
|
EMSCRIPTEN_KEEPALIVE void set_camera_manipulator_options(const void *const viewer, _ManipulatorMode mode, double orbitSpeedX, double orbitSpeedY, double zoomSpeed);
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE int hide_mesh(void *sceneManager, EntityId entity, const char *meshName);
|
EMSCRIPTEN_KEEPALIVE int hide_mesh(void *sceneManager, EntityId entity, const char *meshName);
|
||||||
|
|||||||
@@ -217,80 +217,80 @@ extern "C"
|
|||||||
return ((FilamentViewer *)viewer)->setCamera(asset, nodeName);
|
return ((FilamentViewer *)viewer)->setCamera(asset, nodeName);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE float get_camera_fov(CameraPtr *camera, bool horizontal)
|
EMSCRIPTEN_KEEPALIVE float get_camera_fov(TCamera *camera, bool horizontal)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
return cam->getFieldOfViewInDegrees(horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
return cam->getFieldOfViewInDegrees(horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(CameraPtr *const camera)
|
EMSCRIPTEN_KEEPALIVE double get_camera_focal_length(TCamera *const camera)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
return cam->getFocalLength();
|
return cam->getFocalLength();
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(CameraPtr *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal)
|
EMSCRIPTEN_KEEPALIVE void set_camera_projection_from_fov(TCamera *camera, double fovInDegrees, double aspect, double near, double far, bool horizontal)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
cam->setProjection(fovInDegrees, aspect, near, far, horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
cam->setProjection(fovInDegrees, aspect, near, far, horizontal ? Camera::Fov::HORIZONTAL : Camera::Fov::VERTICAL);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE CameraPtr *get_camera(const void *const viewer, EntityId entity)
|
EMSCRIPTEN_KEEPALIVE TCamera *get_camera(const void *const viewer, EntityId entity)
|
||||||
{
|
{
|
||||||
auto filamentCamera = ((FilamentViewer *)viewer)->getCamera(entity);
|
auto filamentCamera = ((FilamentViewer *)viewer)->getCamera(entity);
|
||||||
return reinterpret_cast<CameraPtr *>(filamentCamera);
|
return reinterpret_cast<TCamera *>(filamentCamera);
|
||||||
}
|
}
|
||||||
|
|
||||||
double4x4 get_camera_model_matrix(CameraPtr *camera)
|
double4x4 get_camera_model_matrix(TCamera *camera)
|
||||||
{
|
{
|
||||||
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getModelMatrix();
|
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getModelMatrix();
|
||||||
return convert_mat4_to_double4x4(mat);
|
return convert_mat4_to_double4x4(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
double4x4 get_camera_view_matrix(CameraPtr *camera)
|
double4x4 get_camera_view_matrix(TCamera *camera)
|
||||||
{
|
{
|
||||||
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getViewMatrix();
|
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getViewMatrix();
|
||||||
return convert_mat4_to_double4x4(mat);
|
return convert_mat4_to_double4x4(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
double4x4 get_camera_projection_matrix(CameraPtr *camera)
|
double4x4 get_camera_projection_matrix(TCamera *camera)
|
||||||
{
|
{
|
||||||
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getProjectionMatrix();
|
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getProjectionMatrix();
|
||||||
return convert_mat4_to_double4x4(mat);
|
return convert_mat4_to_double4x4(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
double4x4 get_camera_culling_projection_matrix(CameraPtr *camera)
|
double4x4 get_camera_culling_projection_matrix(TCamera *camera)
|
||||||
{
|
{
|
||||||
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getCullingProjectionMatrix();
|
const auto &mat = reinterpret_cast<filament::Camera *>(camera)->getCullingProjectionMatrix();
|
||||||
return convert_mat4_to_double4x4(mat);
|
return convert_mat4_to_double4x4(mat);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_camera_projection_matrix(CameraPtr *camera, double4x4 matrix, double near, double far)
|
void set_camera_projection_matrix(TCamera *camera, double4x4 matrix, double near, double far)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
const auto &mat = convert_double4x4_to_mat4(matrix);
|
const auto &mat = convert_double4x4_to_mat4(matrix);
|
||||||
cam->setCustomProjection(mat, near, far);
|
cam->setCustomProjection(mat, near, far);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_camera_lens_projection(CameraPtr *camera, double near, double far, double aspect, double focalLength)
|
void set_camera_lens_projection(TCamera *camera, double near, double far, double aspect, double focalLength)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
cam->setLensProjection(focalLength, aspect, near, far);
|
cam->setLensProjection(focalLength, aspect, near, far);
|
||||||
}
|
}
|
||||||
|
|
||||||
double get_camera_near(CameraPtr *camera)
|
double get_camera_near(TCamera *camera)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
return cam->getNear();
|
return cam->getNear();
|
||||||
}
|
}
|
||||||
|
|
||||||
double get_camera_culling_far(CameraPtr *camera)
|
double get_camera_culling_far(TCamera *camera)
|
||||||
{
|
{
|
||||||
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
auto cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
return cam->getCullingFar();
|
return cam->getCullingFar();
|
||||||
}
|
}
|
||||||
|
|
||||||
const double *const get_camera_frustum(CameraPtr *camera)
|
const double *const get_camera_frustum(TCamera *camera)
|
||||||
{
|
{
|
||||||
|
|
||||||
const auto frustum = reinterpret_cast<filament::Camera *>(camera)->getFrustum();
|
const auto frustum = reinterpret_cast<filament::Camera *>(camera)->getFrustum();
|
||||||
@@ -319,19 +319,19 @@ extern "C"
|
|||||||
((FilamentViewer *)viewer)->setViewFrustumCulling(enabled);
|
((FilamentViewer *)viewer)->setViewFrustumCulling(enabled);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(CameraPtr *camera, float distance)
|
EMSCRIPTEN_KEEPALIVE void set_camera_focus_distance(TCamera *camera, float distance)
|
||||||
{
|
{
|
||||||
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
cam->setFocusDistance(distance);
|
cam->setFocusDistance(distance);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_exposure(CameraPtr *camera, float aperture, float shutterSpeed, float sensitivity)
|
EMSCRIPTEN_KEEPALIVE void set_camera_exposure(TCamera *camera, float aperture, float shutterSpeed, float sensitivity)
|
||||||
{
|
{
|
||||||
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
cam->setExposure(aperture, shutterSpeed, sensitivity);
|
cam->setExposure(aperture, shutterSpeed, sensitivity);
|
||||||
}
|
}
|
||||||
|
|
||||||
EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(CameraPtr *camera, double4x4 matrix)
|
EMSCRIPTEN_KEEPALIVE void set_camera_model_matrix(TCamera *camera, double4x4 matrix)
|
||||||
{
|
{
|
||||||
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
auto *cam = reinterpret_cast<filament::Camera *>(camera);
|
||||||
const filament::math::mat4 &mat = convert_double4x4_to_mat4(matrix);
|
const filament::math::mat4 &mat = convert_double4x4_to_mat4(matrix);
|
||||||
|
|||||||
@@ -92,7 +92,7 @@ void main() async {
|
|||||||
print(frustum.plane5.normal);
|
print(frustum.plane5.normal);
|
||||||
print(frustum.plane5.constant);
|
print(frustum.plane5.constant);
|
||||||
|
|
||||||
await viewer.setCameraLensProjection(10.0, 1000.0, 1.0, 28.0);
|
await viewer.setCameraLensProjection(near:10.0, far:1000.0, aspect:1.0, focalLength:28.0);
|
||||||
frustum = await viewer.getCameraFrustum();
|
frustum = await viewer.getCameraFrustum();
|
||||||
print(frustum.plane5.normal);
|
print(frustum.plane5.normal);
|
||||||
print(frustum.plane5.constant);
|
print(frustum.plane5.constant);
|
||||||
|
|||||||
Reference in New Issue
Block a user