Open3D (C++ API)  0.19.0
FilamentScene.h
Go to the documentation of this file.
1 // ----------------------------------------------------------------------------
2 // - Open3D: www.open3d.org -
3 // ----------------------------------------------------------------------------
4 // Copyright (c) 2018-2024 www.open3d.org
5 // SPDX-License-Identifier: MIT
6 // ----------------------------------------------------------------------------
7 
8 #pragma once
9 
10 // 4068: Filament has some clang-specific vectorizing pragma's that MSVC flags
11 // 4146: Filament's utils/algorithm.h utils::details::ctz() tries to negate
12 // an unsigned int.
13 // 4293: Filament's utils/algorithm.h utils::details::clz() does strange
14 // things with MSVC. Somehow sizeof(unsigned int) > 4, but its size is
15 // 32 so that x >> 32 gives a warning. (Or maybe the compiler can't
16 // determine the if statement does not run.)
17 // 4305: LightManager.h needs to specify some constants as floats
18 #ifdef _MSC_VER
19 #pragma warning(push)
20 #pragma warning(disable : 4068 4146 4293 4305)
21 #endif // _MSC_VER
22 
23 #include <filament/LightManager.h>
24 #include <filament/RenderableManager.h>
25 #include <utils/Entity.h>
26 
27 #ifdef _MSC_VER
28 #pragma warning(pop)
29 #endif // _MSC_VER
30 
31 #include <Eigen/Geometry>
32 #include <cstdint>
33 #include <functional>
34 #include <memory>
35 #include <unordered_map>
36 #include <vector>
37 
45 
47 namespace filament {
48 class Box;
49 class Engine;
50 class IndirectLight;
51 class Renderer;
52 class Scene;
53 class Skybox;
54 class TransformManager;
55 class VertexBuffer;
56 } // namespace filament
58 
59 namespace open3d {
60 namespace visualization {
61 namespace rendering {
62 
63 class FilamentView;
64 class GeometryBuffersBuilder;
65 class Renderer;
66 class View;
67 
68 // Contains renderable objects like geometry and lights
69 // Can have multiple views
70 class FilamentScene : public Scene {
71 public:
72  using Transform = Eigen::Transform<float, 3, Eigen::Affine>;
73 
74  FilamentScene(filament::Engine& engine,
75  FilamentResourceManager& resource_mgr,
76  Renderer& renderer);
78 
79  Scene* Copy() override;
80 
81  // NOTE: Temporarily needed to support old View interface for ImGUI
83  std::int32_t y,
84  std::uint32_t w,
85  std::uint32_t h) override;
86 
87  View* GetView(const ViewHandle& view_id) const override;
88  void SetViewActive(const ViewHandle& view_id, bool is_active) override;
89  void SetRenderOnce(const ViewHandle& view_id) override;
90  void RemoveView(const ViewHandle& view_id) override;
91 
92  // Camera
93  void AddCamera(const std::string& camera_name,
94  std::shared_ptr<Camera> cam) override;
95  void RemoveCamera(const std::string& camera_name) override;
96  void SetActiveCamera(const std::string& camera_name) override;
97 
98  // Scene geometry
99  bool AddGeometry(const std::string& object_name,
100  const geometry::Geometry3D& geometry,
101  const MaterialRecord& material,
102  const std::string& downsampled_name = "",
103  size_t downsample_threshold = SIZE_MAX) override;
104  bool AddGeometry(const std::string& object_name,
105  const t::geometry::Geometry& geometry,
106  const MaterialRecord& material,
107  const std::string& downsampled_name = "",
108  size_t downsample_threshold = SIZE_MAX) override;
109  bool AddGeometry(const std::string& object_name,
110  const TriangleMeshModel& model) override;
111  bool HasGeometry(const std::string& object_name) const override;
112  void UpdateGeometry(const std::string& object_name,
113  const t::geometry::PointCloud& point_cloud,
114  uint32_t update_flags) override;
115  void RemoveGeometry(const std::string& object_name) override;
116  void ShowGeometry(const std::string& object_name, bool show) override;
117  bool GeometryIsVisible(const std::string& object_name) override;
118  void SetGeometryTransform(const std::string& object_name,
119  const Transform& transform) override;
120  Transform GetGeometryTransform(const std::string& object_name) override;
122  const std::string& object_name) override;
123  void GeometryShadows(const std::string& object_name,
124  bool cast_shadows,
125  bool receive_shadows) override;
126  void SetGeometryCulling(const std::string& object_name,
127  bool enable) override;
128  void SetGeometryPriority(const std::string& object_name,
129  uint8_t priority) override;
130  void OverrideMaterial(const std::string& object_name,
131  const MaterialRecord& material) override;
132  void OverrideMaterial(const std::string& object_name,
133  const TriangleMeshModel& model) override;
134  void QueryGeometry(std::vector<std::string>& geometry) override;
136 
137  void OverrideMaterialAll(const MaterialRecord& material,
138  bool shader_only = true) override;
139 
140  // Lighting Environment
141  bool AddPointLight(const std::string& light_name,
142  const Eigen::Vector3f& color,
143  const Eigen::Vector3f& position,
144  float intensity,
145  float falloff,
146  bool cast_shadows) override;
147  bool AddSpotLight(const std::string& light_name,
148  const Eigen::Vector3f& color,
149  const Eigen::Vector3f& position,
150  const Eigen::Vector3f& direction,
151  float intensity,
152  float falloff,
153  float inner_cone_angle,
154  float outer_cone_angle,
155  bool cast_shadows) override;
156  bool AddDirectionalLight(const std::string& light_name,
157  const Eigen::Vector3f& color,
158  const Eigen::Vector3f& direction,
159  float intensity,
160  bool cast_shadows) override;
161  Light& GetLight(const std::string& light_name) override;
162  void RemoveLight(const std::string& light_name) override;
163  void UpdateLight(const std::string& light_name,
164  const Light& light) override;
165  void UpdateLightColor(const std::string& light_name,
166  const Eigen::Vector3f& color) override;
167  void UpdateLightPosition(const std::string& light_name,
168  const Eigen::Vector3f& position) override;
169  void UpdateLightDirection(const std::string& light_name,
170  const Eigen::Vector3f& direction) override;
171  void UpdateLightIntensity(const std::string& light_name,
172  float intensity) override;
173  void UpdateLightFalloff(const std::string& light_name,
174  float falloff) override;
175  void UpdateLightConeAngles(const std::string& light_name,
176  float inner_cone_angle,
177  float outer_cone_angle) override;
178  void EnableLightShadow(const std::string& light_name,
179  bool cast_shadows) override;
180 
181  void SetSunLight(const Eigen::Vector3f& direction,
182  const Eigen::Vector3f& color,
183  float intensity) override;
184  void EnableSunLight(bool enable) override;
185  void EnableSunLightShadows(bool enable) override;
186  void SetSunLightColor(const Eigen::Vector3f& color) override;
187  Eigen::Vector3f GetSunLightColor() override;
188  void SetSunLightIntensity(float intensity) override;
189  float GetSunLightIntensity() override;
190  void SetSunLightDirection(const Eigen::Vector3f& direction) override;
191  Eigen::Vector3f GetSunLightDirection() override;
192  void SetSunAngularRadius(float radius) override;
193  void SetSunHaloSize(float size) override;
194  void SetSunHaloFalloff(float falloff) override;
195 
196  bool SetIndirectLight(const std::string& ibl_name) override;
197  const std::string& GetIndirectLight() override;
198  void EnableIndirectLight(bool enable) override;
199  void SetIndirectLightIntensity(float intensity) override;
200  float GetIndirectLightIntensity() override;
201  void SetIndirectLightRotation(const Transform& rotation) override;
203  void ShowSkybox(bool show) override;
204  bool GetSkyboxVisible() const override;
205  void SetBackground(
206  const Eigen::Vector4f& color,
207  const std::shared_ptr<geometry::Image> image = nullptr) override;
208  void SetBackground(TextureHandle image) override;
209  void EnableGroundPlane(bool enable, GroundPlane plane) override;
210  void SetGroundPlaneColor(const Eigen::Vector4f& color) override;
211 
212  void RenderToImage(std::function<void(std::shared_ptr<geometry::Image>)>
213  callback) override;
214  void RenderToDepthImage(
215  std::function<void(std::shared_ptr<geometry::Image>)> callback)
216  override;
217 
218  void ForEachActiveView(const std::function<void(FilamentView&)>& callback);
220  void ForEachView(const std::function<void(FilamentView&)>& callback) const;
221  bool HasGaussianSplatGeometry() const;
224  bool HasNonGaussianVisibleGeometry() const;
225  bool UsesGaussianSplatOutput(const FilamentView& view) const;
233 
234  void Draw(filament::Renderer& renderer);
235 
236  // NOTE: This method is to work around Filament limitation when rendering to
237  // depth buffer. Materials with SSR require multiple passes which causes a
238  // crash with render to depth since we must disable multiple passes (i.e.,
239  // post-processing) in order to get back valid, un-modified depth values.
240  void HideRefractedMaterials(bool hide = true);
241 
242  // NOTE: Can GetNativeScene be removed?
243  filament::Scene* GetNativeScene() const { return scene_; }
244 
245 private:
246  void MarkGeometryChanged();
247 
248  MaterialInstanceHandle AssignMaterialToFilamentGeometry(
249  filament::RenderableManager::Builder& builder,
250  const MaterialRecord& material);
251  enum BufferReuse { kNo, kYes };
252  bool CreateAndAddFilamentEntity(
253  const std::string& object_name,
254  GeometryBuffersBuilder& buffer_builder,
255  filament::Box& aabb,
258  const MaterialRecord& material,
259  BufferReuse reusing_vertex_buffer = BufferReuse::kNo);
260 
261  filament::Engine& engine_;
262  FilamentResourceManager& resource_mgr_;
263  filament::Scene* scene_ = nullptr;
264  std::uint64_t geometry_change_id_ = 1;
265 
266  struct TextureMaps {
267  rendering::TextureHandle albedo_map =
269  rendering::TextureHandle normal_map =
271  rendering::TextureHandle ao_rough_metal_map =
273  rendering::TextureHandle reflectance_map =
275  rendering::TextureHandle clear_coat_map =
277  rendering::TextureHandle clear_coat_roughness_map =
279  rendering::TextureHandle anisotropy_map =
281  rendering::TextureHandle gradient_texture =
283  };
284 
285  struct GeometryMaterialInstance {
286  TextureMaps maps;
287  MaterialRecord properties;
288  MaterialInstanceHandle mat_instance;
289  };
290 
291  struct RenderableGeometry {
292  std::string name;
293  bool visible = true;
294  bool was_hidden_before_picking = false;
295  bool cast_shadows = true;
296  bool receive_shadows = true;
297  bool culling_enabled = true;
298  int priority = -1; // default priority
299 
300  GeometryMaterialInstance mat;
301  // Stored AABB for geometry registered without a Filament entity
302  // (e.g. Gaussian splats rendered via compute, not raster).
303  geometry::AxisAlignedBoundingBox aabb;
304 
305  // Range within the merged Gaussian splat packed-attrs buffer.
306  // Both are zero for non-Gaussian geometry.
307  std::uint32_t gs_splat_start = 0;
308  std::uint32_t gs_splat_count = 0;
309 
310  // Filament resources — filament_entity is null for compute-only
311  // geometry.
312  utils::Entity filament_entity;
313  filament::RenderableManager::PrimitiveType primitive_type;
316  void ReleaseResources(filament::Engine& engine,
317  FilamentResourceManager& manager);
318  };
319 
320  struct LightEntity {
321  bool enabled = true;
322  utils::Entity filament_entity;
323  };
324 
325  // NOTE: ViewContainer and views_ are temporary
326  struct ViewContainer {
327  std::unique_ptr<FilamentView> view;
328  bool is_active = true;
329  int render_count = -1;
330  };
331  std::unordered_map<REHandle_abstract, ViewContainer> views_;
332 
333  std::vector<RenderableGeometry*> GetGeometry(const std::string& object_name,
334  bool warn_if_not_found = true);
335  bool GeometryIsModel(const std::string& object_name) const;
336  LightEntity* GetLightInternal(const std::string& light_name,
337  bool warn_if_not_found = true);
338  void OverrideMaterialInternal(RenderableGeometry* geom,
339  const MaterialRecord& material,
340  bool shader_only = false);
341  void UpdateMaterialProperties(RenderableGeometry& geom);
342  void UpdateDefaultLit(GeometryMaterialInstance& geom_mi);
343  void UpdateDefaultLitSSR(GeometryMaterialInstance& geom_mi);
344  void UpdateDefaultUnlit(GeometryMaterialInstance& geom_mi);
345  void UpdateNormalShader(GeometryMaterialInstance& geom_mi);
346  void UpdateDepthShader(GeometryMaterialInstance& geom_mi);
347  void UpdateDepthValueShader(GeometryMaterialInstance& geom_mi);
348  void UpdateGradientShader(GeometryMaterialInstance& geom_mi);
349  void UpdateSolidColorShader(GeometryMaterialInstance& geom_mi);
350  void UpdateBackgroundShader(GeometryMaterialInstance& geom_mi);
351  void UpdateGroundPlaneShader(GeometryMaterialInstance& geom_mi);
352  void UpdateLineShader(GeometryMaterialInstance& geom_mi);
353  void UpdateUnlitPolygonOffsetShader(GeometryMaterialInstance& geom_mi);
354  utils::EntityInstance<filament::TransformManager>
355  GetGeometryTransformInstance(RenderableGeometry* geom);
356  void CreateSunDirectionalLight();
357  void CreateBackgroundGeometry();
358  void CreateGroundPlaneGeometry();
359 
360  std::unordered_map<std::string, RenderableGeometry> geometries_;
361  std::unordered_map<std::string, LightEntity> lights_;
362  std::unordered_map<std::string, std::vector<std::string>> model_geometries_;
363 
364  Eigen::Vector4f background_color_;
365  std::shared_ptr<geometry::Image> background_image_;
366  std::string ibl_name_;
367  bool ibl_enabled_ = false;
368  bool skybox_enabled_ = false;
369  std::weak_ptr<filament::IndirectLight> indirect_light_;
370  std::weak_ptr<filament::Skybox> skybox_;
371  IndirectLightHandle ibl_handle_;
372  SkyboxHandle skybox_handle_;
373  LightEntity sun_;
375  std::unordered_map<std::string, GaussianSplatPackedAttrs>
376  per_object_gs_attrs_;
379  std::unique_ptr<GaussianSplatPackedAttrs> merged_gs_attrs_;
380 
382  void CacheGaussianSplatData(const std::string& name,
383  const t::geometry::PointCloud& cloud,
384  const MaterialRecord& material);
387  void RebuildMergedGaussianData();
388 };
389 
390 } // namespace rendering
391 } // namespace visualization
392 } // namespace open3d
std::shared_ptr< core::Tensor > image
Definition: FilamentRenderer.cpp:302
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition: FilamentRenderer.cpp:301
math::float4 color
Definition: LineSetBuffers.cpp:45
math::float3 position
Definition: LineSetBuffers.cpp:43
std::vector< UVAtlasVertex > vb
Definition: UVUnwrapping.cpp:27
std::vector< uint8_t > ib
Definition: UVUnwrapping.cpp:29
A bounding box that is aligned along the coordinate axes and defined by the min_bound and max_bound.
Definition: BoundingVolume.h:285
The base geometry class for 3D geometries.
Definition: Geometry3D.h:29
The base geometry class.
Definition: Geometry.h:23
A point cloud contains a list of 3D points.
Definition: PointCloud.h:81
Definition: FilamentResourceManager.h:50
static const TextureHandle kDefaultNormalMap
Definition: FilamentResourceManager.h:71
static const TextureHandle kDefaultTexture
Definition: FilamentResourceManager.h:69
void UpdateLightDirection(const std::string &light_name, const Eigen::Vector3f &direction) override
Definition: FilamentScene.cpp:1917
Eigen::Vector3f GetSunLightColor() override
Definition: FilamentScene.cpp:2038
void UpdateLightIntensity(const std::string &light_name, float intensity) override
Definition: FilamentScene.cpp:1929
const std::string & GetIndirectLight() override
Definition: FilamentScene.cpp:2125
void EnableIndirectLight(bool enable) override
Definition: FilamentScene.cpp:2127
~FilamentScene()
Definition: FilamentScene.cpp:251
void SetActiveCamera(const std::string &camera_name) override
Definition: FilamentScene.cpp:635
void SetSunLightColor(const Eigen::Vector3f &color) override
Definition: FilamentScene.cpp:2031
void RenderToDepthImage(std::function< void(std::shared_ptr< geometry::Image >)> callback) override
Size of image is the size of the window.
Definition: FilamentScene.cpp:2358
void SetGeometryTransform(const std::string &object_name, const Transform &transform) override
Definition: FilamentScene.cpp:1195
Eigen::Vector3f GetSunLightDirection() override
Definition: FilamentScene.cpp:2074
bool AddPointLight(const std::string &light_name, const Eigen::Vector3f &color, const Eigen::Vector3f &position, float intensity, float falloff, bool cast_shadows) override
Definition: FilamentScene.cpp:1759
void SetSunLightDirection(const Eigen::Vector3f &direction) override
Definition: FilamentScene.cpp:2046
void Draw(filament::Renderer &renderer)
Definition: FilamentScene.cpp:2445
void HideRefractedMaterials(bool hide=true)
Definition: FilamentScene.cpp:2461
void RenderToImage(std::function< void(std::shared_ptr< geometry::Image >)> callback) override
Size of image is the size of the window.
Definition: FilamentScene.cpp:2352
void EnableSunLight(bool enable) override
Definition: FilamentScene.cpp:1999
void SetBackground(const Eigen::Vector4f &color, const std::shared_ptr< geometry::Image > image=nullptr) override
Definition: FilamentScene.cpp:2218
void UpdateLightColor(const std::string &light_name, const Eigen::Vector3f &color) override
Definition: FilamentScene.cpp:1892
Transform GetIndirectLightRotation() override
Definition: FilamentScene.cpp:2160
void EnableLightShadow(const std::string &light_name, bool cast_shadows) override
Definition: FilamentScene.cpp:1957
bool AddDirectionalLight(const std::string &light_name, const Eigen::Vector3f &color, const Eigen::Vector3f &direction, float intensity, bool cast_shadows) override
Definition: FilamentScene.cpp:1837
void SetSunLightIntensity(float intensity) override
Definition: FilamentScene.cpp:2017
geometry::AxisAlignedBoundingBox GetGeometryBoundingBox(const std::string &object_name) override
Definition: FilamentScene.cpp:1230
void UpdateLightPosition(const std::string &light_name, const Eigen::Vector3f &position) override
Definition: FilamentScene.cpp:1903
TextureHandle GetColorBufferForView(const FilamentView &view) const
Definition: FilamentScene.cpp:438
Transform GetGeometryTransform(const std::string &object_name) override
Definition: FilamentScene.cpp:1215
bool HasNonGaussianVisibleGeometry() const
Definition: FilamentScene.cpp:409
void ForEachActiveView(const std::function< void(FilamentView &)> &callback)
Definition: FilamentScene.cpp:380
void RemoveGeometry(const std::string &object_name) override
Definition: FilamentScene.cpp:1091
bool HasGaussianSplatGeometry() const
Definition: FilamentScene.cpp:400
bool SetIndirectLight(const std::string &ibl_name) override
Definition: FilamentScene.cpp:2082
void SetGroundPlaneColor(const Eigen::Vector4f &color) override
Definition: FilamentScene.cpp:2326
bool GeometryIsVisible(const std::string &object_name) override
Definition: FilamentScene.cpp:1164
Light & GetLight(const std::string &light_name) override
Definition: FilamentScene.cpp:1872
void SetIndirectLightIntensity(float intensity) override
Definition: FilamentScene.cpp:2140
ViewHandle AddView(std::int32_t x, std::int32_t y, std::uint32_t w, std::uint32_t h) override
Definition: FilamentScene.cpp:352
void SetSunAngularRadius(float radius) override
Definition: FilamentScene.cpp:2053
void ForEachView(const std::function< void(FilamentView &)> &callback) const
Iterate over ALL views (including inactive/cached ones).
Definition: FilamentScene.cpp:391
float GetSunLightIntensity() override
Definition: FilamentScene.cpp:2024
void UpdateLightFalloff(const std::string &light_name, float falloff) override
Definition: FilamentScene.cpp:1940
void EnableSunLightShadows(bool enable) override
Definition: FilamentScene.cpp:2010
void RemoveView(const ViewHandle &view_id) override
Definition: FilamentScene.cpp:626
const GaussianSplatPackedAttrs * GetGaussianSplatPackedAttrs() const
Definition: FilamentScene.cpp:459
bool UsesGaussianSplatOutput(const FilamentView &view) const
Definition: FilamentScene.cpp:421
bool GetSkyboxVisible() const override
Definition: FilamentScene.cpp:2184
View * GetView(const ViewHandle &view_id) const override
Definition: FilamentScene.cpp:371
void OverrideMaterialAll(const MaterialRecord &material, bool shader_only=true) override
Definition: FilamentScene.cpp:1744
void SetRenderOnce(const ViewHandle &view_id) override
Definition: FilamentScene.cpp:618
Scene * Copy() override
Definition: FilamentScene.cpp:291
void AddCamera(const std::string &camera_name, std::shared_ptr< Camera > cam) override
Definition: FilamentScene.cpp:630
void SetGeometryCulling(const std::string &object_name, bool enable) override
Definition: FilamentScene.cpp:1277
void EnableGroundPlane(bool enable, GroundPlane plane) override
Definition: FilamentScene.cpp:2307
void SetSunHaloSize(float size) override
Definition: FilamentScene.cpp:2060
filament::Scene * GetNativeScene() const
Definition: FilamentScene.h:243
std::uint64_t GetGeometryChangeId() const
Definition: FilamentScene.cpp:236
void ShowSkybox(bool show) override
Definition: FilamentScene.cpp:2170
FilamentScene(filament::Engine &engine, FilamentResourceManager &resource_mgr, Renderer &renderer)
Definition: FilamentScene.cpp:240
bool AddGeometry(const std::string &object_name, const geometry::Geometry3D &geometry, const MaterialRecord &material, const std::string &downsampled_name="", size_t downsample_threshold=SIZE_MAX) override
Definition: FilamentScene.cpp:652
void UpdateGeometry(const std::string &object_name, const t::geometry::PointCloud &point_cloud, uint32_t update_flags) override
Definition: FilamentScene.cpp:936
void SetGeometryPriority(const std::string &object_name, uint8_t priority) override
Definition: FilamentScene.cpp:1295
void SetViewActive(const ViewHandle &view_id, bool is_active) override
Definition: FilamentScene.cpp:610
void ShowGeometry(const std::string &object_name, bool show) override
Definition: FilamentScene.cpp:1125
void RemoveLight(const std::string &light_name) override
Definition: FilamentScene.cpp:1883
void SetSunHaloFalloff(float falloff) override
Definition: FilamentScene.cpp:2067
void QueryGeometry(std::vector< std::string > &geometry) override
Definition: FilamentScene.cpp:1738
void SetSunLight(const Eigen::Vector3f &direction, const Eigen::Vector3f &color, float intensity) override
Definition: FilamentScene.cpp:1988
void SetIndirectLightRotation(const Transform &rotation) override
Definition: FilamentScene.cpp:2153
float GetIndirectLightIntensity() override
Definition: FilamentScene.cpp:2146
void GeometryShadows(const std::string &object_name, bool cast_shadows, bool receive_shadows) override
Definition: FilamentScene.cpp:1258
Eigen::Transform< float, 3, Eigen::Affine > Transform
Definition: FilamentScene.h:72
void UpdateLightConeAngles(const std::string &light_name, float inner_cone_angle, float outer_cone_angle) override
Definition: FilamentScene.cpp:1951
void RemoveCamera(const std::string &camera_name) override
Definition: FilamentScene.cpp:633
bool HasGeometry(const std::string &object_name) const override
Definition: FilamentScene.cpp:928
void UpdateLight(const std::string &light_name, const Light &light) override
Definition: FilamentScene.cpp:1878
TextureHandle GetDepthBufferForView(const FilamentView &view) const
Definition: FilamentScene.cpp:445
void OverrideMaterial(const std::string &object_name, const MaterialRecord &material) override
Definition: FilamentScene.cpp:1698
void InvalidateGaussianSplatOutput(FilamentView &view)
Definition: FilamentScene.cpp:452
bool AddSpotLight(const std::string &light_name, const Eigen::Vector3f &color, const Eigen::Vector3f &position, const Eigen::Vector3f &direction, float intensity, float falloff, float inner_cone_angle, float outer_cone_angle, bool cast_shadows) override
Definition: FilamentScene.cpp:1795
int size
Definition: FilePCD.cpp:40
std::string name
Definition: FilePCD.cpp:39
Definition: FilamentEngine.h:15
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:548
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 uint64_t
Definition: K4aPlugin.cpp:343
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:395
REHandle< EntityType::IndexBuffer > IndexBufferHandle
Definition: RendererHandle.h:139
REHandle< EntityType::VertexBuffer > VertexBufferHandle
Definition: RendererHandle.h:138
REHandle< EntityType::MaterialInstance > MaterialInstanceHandle
Definition: RendererHandle.h:135
REHandle< EntityType::Skybox > SkyboxHandle
Definition: RendererHandle.h:132
REHandle< EntityType::IndirectLight > IndirectLightHandle
Definition: RendererHandle.h:131
Definition: PinholeCameraIntrinsic.cpp:16
Definition: GaussianSplatDataPacking.h:122