Open3D (C++ API)  0.20.0
Loading...
Searching...
No Matches
FilamentCamera.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// Copyright (c) 2018-2026 www.open3d.org
5// SPDX-License-Identifier: MIT
6// ----------------------------------------------------------------------------
7
8#pragma once
9
10#include <utils/Entity.h>
11
13
15namespace filament {
16class Camera;
17class Engine;
18} // namespace filament
20
21namespace open3d {
22namespace visualization {
23namespace rendering {
24
25class FilamentCamera : public Camera {
26public:
27 explicit FilamentCamera(filament::Engine& engine);
29
30 void SetProjection(double fov,
31 double aspect,
32 double near,
33 double far,
34 FovType fov_type) override;
35
36 void SetProjection(Projection projection,
37 double left,
38 double right,
39 double bottom,
40 double top,
41 double near,
42 double far) override;
43
44 void SetProjection(const Eigen::Matrix3d& intrinsics,
45 double near,
46 double far,
47 double width,
48 double height) override;
49
50 void LookAt(const Eigen::Vector3f& center,
51 const Eigen::Vector3f& eye,
52 const Eigen::Vector3f& up) override;
53
54 void SetModelMatrix(const Transform& view) override;
55 void SetModelMatrix(const Eigen::Vector3f& forward,
56 const Eigen::Vector3f& left,
57 const Eigen::Vector3f& up) override;
58
59 double GetNear() const override;
60 double GetFar() const override;
62 double GetFieldOfView() const override;
64 FovType GetFieldOfViewType() const override;
65
66 Eigen::Vector3f GetPosition() const override;
67 Eigen::Vector3f GetForwardVector() const override;
68 Eigen::Vector3f GetLeftVector() const override;
69 Eigen::Vector3f GetUpVector() const override;
70 Transform GetModelMatrix() const override;
71 Transform GetViewMatrix() const override;
74 const ProjectionInfo& GetProjection() const override;
75
76 Eigen::Vector3f Unproject(float x,
77 float y,
78 float z,
79 float view_width,
80 float view_height) const override;
81
82 Eigen::Vector2f GetNDC(const Eigen::Vector3f& pt) const override;
83 double GetViewZ(float z_buffer) const override;
84
85 void CopyFrom(const Camera* camera) override;
86
87 filament::Camera* GetNativeCamera() const { return camera_; }
88
89private:
90 filament::Camera* camera_ = nullptr;
91 utils::Entity camera_entity_;
92 filament::Engine& engine_;
93 Camera::ProjectionInfo projection_;
94};
95
96} // namespace rendering
97} // namespace visualization
98} // namespace open3d
std::int64_t y
Definition NormalDistributionsTransform.cpp:43
std::int64_t x
Definition NormalDistributionsTransform.cpp:42
std::int64_t z
Definition NormalDistributionsTransform.cpp:44
Eigen::Transform< float, 3, Eigen::Projective > ProjectionMatrix
Definition Camera.h:26
Eigen::Transform< float, 3, Eigen::Affine > Transform
Definition Camera.h:25
~FilamentCamera()
Definition FilamentCamera.cpp:77
double GetFar() const override
Definition FilamentCamera.cpp:205
ProjectionMatrix GetProjectionMatrix() const override
Definition FilamentCamera.cpp:278
double GetFieldOfView() const override
only valid if fov was passed to SetProjection()
Definition FilamentCamera.cpp:207
Transform GetCullingProjectionMatrix() const override
Definition FilamentCamera.cpp:288
Transform GetViewMatrix() const override
Definition FilamentCamera.cpp:273
Eigen::Vector3f Unproject(float x, float y, float z, float view_width, float view_height) const override
Definition FilamentCamera.cpp:337
filament::Camera * GetNativeCamera() const
Definition FilamentCamera.h:87
double GetViewZ(float z_buffer) const override
Definition FilamentCamera.cpp:306
Eigen::Vector3f GetUpVector() const override
Definition FilamentCamera.cpp:263
void SetProjection(double fov, double aspect, double near, double far, FovType fov_type) override
Definition FilamentCamera.cpp:110
Eigen::Vector3f GetForwardVector() const override
Definition FilamentCamera.cpp:253
void SetModelMatrix(const Transform &view) override
Definition FilamentCamera.cpp:332
Eigen::Vector2f GetNDC(const Eigen::Vector3f &pt) const override
Definition FilamentCamera.cpp:294
Eigen::Vector3f GetPosition() const override
Definition FilamentCamera.cpp:247
void CopyFrom(const Camera *camera) override
Definition FilamentCamera.cpp:83
Eigen::Vector3f GetLeftVector() const override
Definition FilamentCamera.cpp:258
const ProjectionInfo & GetProjection() const override
Definition FilamentCamera.cpp:315
Transform GetModelMatrix() const override
Definition FilamentCamera.cpp:268
double GetNear() const override
Definition FilamentCamera.cpp:203
FovType GetFieldOfViewType() const override
only valid if fov was passed to SetProjection()
Definition FilamentCamera.cpp:223
void LookAt(const Eigen::Vector3f &center, const Eigen::Vector3f &eye, const Eigen::Vector3f &up) override
Definition FilamentCamera.cpp:233
int width
Definition FilePCD.cpp:53
int height
Definition FilePCD.cpp:54
Definition FilamentEngine.h:15
Definition PinholeCameraIntrinsic.cpp:16