Open3D (C++ API)  0.16.0
FilamentView.h
Go to the documentation of this file.
1// ----------------------------------------------------------------------------
2// - Open3D: www.open3d.org -
3// ----------------------------------------------------------------------------
4// The MIT License (MIT)
5//
6// Copyright (c) 2018-2021 www.open3d.org
7//
8// Permission is hereby granted, free of charge, to any person obtaining a copy
9// of this software and associated documentation files (the "Software"), to deal
10// in the Software without restriction, including without limitation the rights
11// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
12// copies of the Software, and to permit persons to whom the Software is
13// furnished to do so, subject to the following conditions:
14//
15// The above copyright notice and this permission notice shall be included in
16// all copies or substantial portions of the Software.
17//
18// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
19// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
20// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
21// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
23// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
24// IN THE SOFTWARE.
25// ----------------------------------------------------------------------------
26
27#pragma once
28
29#include <memory>
30#include <numeric>
31
33
35namespace filament {
36class Engine;
37class Scene;
38class View;
39class Viewport;
40class ColorGrading;
41} // namespace filament
43
44namespace open3d {
45namespace visualization {
46namespace rendering {
47
48class FilamentCamera;
49class FilamentResourceManager;
50class FilamentScene;
51
52class FilamentView : public View {
53public:
54 static constexpr std::uint8_t kAllLayersMask =
55 std::numeric_limits<std::uint8_t>::max();
56 static constexpr std::uint8_t kMainLayer = 1; // Default layer for objects
57
58 FilamentView(filament::Engine& engine,
59 FilamentResourceManager& resource_mgr);
60 FilamentView(filament::Engine& engine,
61 FilamentScene& scene,
62 FilamentResourceManager& resource_mgr);
63 ~FilamentView() override;
64
65 void SetDiscardBuffers(const TargetBuffers& buffers) override;
66 Mode GetMode() const override;
67 void SetMode(Mode mode) override;
68 void SetWireframe(bool enable) override;
69
70 void SetSampleCount(int n) override;
71 int GetSampleCount() const override;
72
76 std::uint32_t h) override;
77 std::array<int, 4> GetViewport() const override;
78
79 void SetPostProcessing(bool enabled) override;
80 void SetAmbientOcclusion(bool enabled, bool ssct_enabled = false) override;
81 void SetBloom(bool enabled, float strength = 0.5f, int spread = 6) override;
82 void SetAntiAliasing(bool enabled, bool temporal = false) override;
83 void SetShadowing(bool enabled, ShadowType type) override;
84
85 void SetColorGrading(const ColorGradingParams& color_grading) override;
86
87 void ConfigureForColorPicking() override;
88
89 void EnableViewCaching(bool enable) override;
90 bool IsCached() const override;
92
93 Camera* GetCamera() const override;
94
95 // Copies available settings for view and camera
96 void CopySettingsFrom(const FilamentView& other);
97
98 void SetScene(FilamentScene& scene);
99
100 filament::View* GetNativeView() const { return view_; }
101
102 void PreRender();
103 void PostRender();
104
105private:
106 void SetRenderTarget(const RenderTargetHandle render_target);
107
108 std::unique_ptr<FilamentCamera> camera_;
109 Mode mode_ = Mode::Color;
110 TargetBuffers discard_buffers_;
111 bool caching_enabled_ = false;
112 bool configured_for_picking_ = false;
113 TextureHandle color_buffer_;
114 TextureHandle depth_buffer_;
115 RenderTargetHandle render_target_;
116
117 filament::Engine& engine_;
118 FilamentScene* scene_ = nullptr;
119 FilamentResourceManager& resource_mgr_;
120 filament::View* view_ = nullptr;
121 filament::ColorGrading* color_grading_ = nullptr;
122};
123
124} // namespace rendering
125} // namespace visualization
126} // namespace open3d
Manages.
Definition: ColorGrading.h:37
Definition: FilamentResourceManager.h:69
filament::View * GetNativeView() const
Definition: FilamentView.h:100
void CopySettingsFrom(const FilamentView &other)
Definition: FilamentView.cpp:362
int GetSampleCount() const override
Definition: FilamentView.cpp:164
TextureHandle GetColorBuffer() override
Definition: FilamentView.cpp:342
void SetSampleCount(int n) override
Definition: FilamentView.cpp:162
bool IsCached() const override
Definition: FilamentView.cpp:340
void PreRender()
Definition: FilamentView.cpp:389
void SetShadowing(bool enabled, ShadowType type) override
Definition: FilamentView.cpp:212
Mode GetMode() const override
Definition: FilamentView.cpp:116
void PostRender()
Definition: FilamentView.cpp:477
void ConfigureForColorPicking() override
Definition: FilamentView.cpp:303
void SetPostProcessing(bool enabled) override
Definition: FilamentView.cpp:178
void SetMode(Mode mode) override
Definition: FilamentView.cpp:118
~FilamentView() override
Definition: FilamentView.cpp:107
void SetViewport(std::int32_t x, std::int32_t y, std::uint32_t w, std::uint32_t h) override
Definition: FilamentView.cpp:166
FilamentView(filament::Engine &engine, FilamentResourceManager &resource_mgr)
Definition: FilamentView.cpp:75
std::array< int, 4 > GetViewport() const override
Definition: FilamentView.cpp:173
static constexpr std::uint8_t kMainLayer
Definition: FilamentView.h:56
void SetDiscardBuffers(const TargetBuffers &buffers) override
Definition: FilamentView.cpp:148
void SetColorGrading(const ColorGradingParams &color_grading) override
Definition: FilamentView.cpp:232
static constexpr std::uint8_t kAllLayersMask
Definition: FilamentView.h:54
void SetAntiAliasing(bool enabled, bool temporal=false) override
Definition: FilamentView.cpp:201
void SetAmbientOcclusion(bool enabled, bool ssct_enabled=false) override
Definition: FilamentView.cpp:182
void SetScene(FilamentScene &scene)
Definition: FilamentView.cpp:384
void EnableViewCaching(bool enable) override
Definition: FilamentView.cpp:311
void SetBloom(bool enabled, float strength=0.5f, int spread=6) override
Definition: FilamentView.cpp:190
void SetWireframe(bool enable) override
Definition: FilamentView.cpp:153
Camera * GetCamera() const override
Definition: FilamentView.cpp:360
char type
Definition: FilePCD.cpp:60
Definition: FilamentEngine.h:31
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle uint32_t
Definition: K4aPlugin.cpp:567
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t timeout_in_ms capture_handle capture_handle capture_handle image_handle temperature_c k4a_image_t image_handle uint8_t image_handle image_handle image_handle image_handle image_handle timestamp_usec white_balance image_handle k4a_device_configuration_t config device_handle char size_t serial_number_size bool int32_t int32_t int32_t int32_t k4a_color_control_mode_t default_mode mode
Definition: K4aPlugin.cpp:697
const char const char value recording_handle imu_sample recording_handle uint8_t size_t data_size k4a_record_configuration_t config target_format k4a_capture_t capture_handle k4a_imu_sample_t imu_sample playback_handle k4a_logging_message_cb_t void min_level device_handle k4a_imu_sample_t int32_t
Definition: K4aPlugin.cpp:414
Definition: PinholeCameraIntrinsic.cpp:35