29 #include <Eigen/Geometry> 39 class AxisAlignedBoundingBox;
50 namespace visualization {
55 struct TriangleMeshModel;
56 struct MaterialRecord;
63 static const uint32_t kUpdatePointsFlag = (1 << 0);
64 static const uint32_t kUpdateNormalsFlag = (1 << 1);
65 static const uint32_t kUpdateColorsFlag = (1 << 2);
66 static const uint32_t kUpdateUv0Flag = (1 << 3);
68 using Transform = Eigen::Transform<float, 3, Eigen::Affine>;
71 virtual ~
Scene() =
default;
82 virtual void SetViewActive(
const ViewHandle& view_id,
bool is_active) = 0;
83 virtual void SetRenderOnce(
const ViewHandle& view_id) = 0;
84 virtual void RemoveView(
const ViewHandle& view_id) = 0;
87 virtual void AddCamera(
const std::string& camera_name,
88 std::shared_ptr<Camera> cam) = 0;
89 virtual void RemoveCamera(
const std::string& camera_name) = 0;
93 virtual bool AddGeometry(
const std::string& object_name,
96 const std::string& downsampled_name =
"",
97 size_t downsample_threshold = SIZE_MAX) = 0;
98 virtual bool AddGeometry(
const std::string& object_name,
101 const std::string& downsampled_name =
"",
102 size_t downsample_threshold = SIZE_MAX) = 0;
103 virtual bool AddGeometry(
const std::string& object_name,
105 virtual bool HasGeometry(
const std::string& object_name)
const = 0;
106 virtual void UpdateGeometry(
const std::string& object_name,
109 virtual void RemoveGeometry(
const std::string& object_name) = 0;
110 virtual void ShowGeometry(
const std::string& object_name,
bool show) = 0;
111 virtual bool GeometryIsVisible(
const std::string& object_name) = 0;
112 virtual void OverrideMaterial(
const std::string& object_name,
114 virtual void GeometryShadows(
const std::string& object_name,
116 bool receive_shadows) = 0;
117 virtual void SetGeometryCulling(
const std::string& object_name,
119 virtual void SetGeometryPriority(
const std::string& object_name,
120 uint8_t priority) = 0;
121 virtual void QueryGeometry(std::vector<std::string>& geometry) = 0;
122 virtual void SetGeometryTransform(
const std::string& object_name,
124 virtual Transform GetGeometryTransform(
const std::string& object_name) = 0;
126 const std::string& object_name) = 0;
128 bool shader_only =
true) = 0;
131 virtual bool AddPointLight(
const std::string& light_name,
132 const Eigen::Vector3f&
color,
136 bool cast_shadows) = 0;
137 virtual bool AddSpotLight(
const std::string& light_name,
138 const Eigen::Vector3f& color,
139 const Eigen::Vector3f& position,
140 const Eigen::Vector3f& direction,
143 float inner_cone_angle,
144 float outer_cone_angle,
145 bool cast_shadows) = 0;
146 virtual bool AddDirectionalLight(
const std::string& light_name,
147 const Eigen::Vector3f& color,
148 const Eigen::Vector3f& direction,
150 bool cast_shadows) = 0;
151 virtual Light& GetLight(
const std::string& light_name) = 0;
152 virtual void RemoveLight(
const std::string& light_name) = 0;
153 virtual void UpdateLight(
const std::string& light_name,
154 const Light& light) = 0;
155 virtual void UpdateLightColor(
const std::string& light_name,
156 const Eigen::Vector3f& color) = 0;
157 virtual void UpdateLightPosition(
const std::string& light_name,
158 const Eigen::Vector3f& position) = 0;
159 virtual void UpdateLightDirection(
const std::string& light_name,
160 const Eigen::Vector3f& direction) = 0;
161 virtual void UpdateLightIntensity(
const std::string& light_name,
162 float intensity) = 0;
163 virtual void UpdateLightFalloff(
const std::string& light_name,
165 virtual void UpdateLightConeAngles(
const std::string& light_name,
166 float inner_cone_angle,
167 float outer_cone_angle) = 0;
168 virtual void EnableLightShadow(
const std::string& light_name,
169 bool cast_shadows) = 0;
171 virtual void SetSunLight(
const Eigen::Vector3f& direction,
172 const Eigen::Vector3f& color,
173 float intensity) = 0;
174 virtual void EnableSunLight(
bool enable) = 0;
175 virtual void EnableSunLightShadows(
bool enable) = 0;
176 virtual void SetSunLightColor(
const Eigen::Vector3f& color) = 0;
177 virtual Eigen::Vector3f GetSunLightColor() = 0;
178 virtual void SetSunLightIntensity(
float intensity) = 0;
179 virtual float GetSunLightIntensity() = 0;
180 virtual void SetSunLightDirection(
const Eigen::Vector3f& direction) = 0;
181 virtual Eigen::Vector3f GetSunLightDirection() = 0;
182 virtual void SetSunAngularRadius(
float radius) = 0;
183 virtual void SetSunHaloSize(
float size) = 0;
184 virtual void SetSunHaloFalloff(
float falloff) = 0;
186 virtual bool SetIndirectLight(
const std::string& ibl_name) = 0;
187 virtual const std::string& GetIndirectLight() = 0;
188 virtual void EnableIndirectLight(
bool enable) = 0;
189 virtual void SetIndirectLightIntensity(
float intensity) = 0;
190 virtual float GetIndirectLightIntensity() = 0;
191 virtual void SetIndirectLightRotation(
const Transform& rotation) = 0;
192 virtual Transform GetIndirectLightRotation() = 0;
193 virtual void ShowSkybox(
bool show) = 0;
194 virtual bool GetSkyboxVisible()
const = 0;
195 virtual void SetBackground(
196 const Eigen::Vector4f& color,
197 const std::shared_ptr<geometry::Image>
image =
nullptr) = 0;
201 virtual void EnableGroundPlane(
bool enable,
GroundPlane plane) = 0;
202 virtual void SetGroundPlaneColor(
const Eigen::Vector4f& color) = 0;
205 virtual void RenderToImage(
206 std::function<
void(std::shared_ptr<geometry::Image>)>
callback) = 0;
209 virtual void RenderToDepthImage(
210 std::function<
void(std::shared_ptr<geometry::Image>)>
callback) = 0;
void Copy(const Tensor &src, Tensor &dst)
Definition: UnaryEW.cpp:65
Definition: MaterialRecord.h:41
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:557
Eigen::Transform< float, 3, Eigen::Affine > Transform
Definition: Scene.h:68
A bounding box that is aligned along the coordinate axes.
Definition: BoundingVolume.h:150
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:398
Renderer & renderer_
Definition: Scene.h:213
math::float4 color
Definition: LineSetBuffers.cpp:64
Definition: Renderer.h:74
The base geometry class for 3D geometries.
Definition: Geometry3D.h:47
math::float3 position
Definition: LineSetBuffers.cpp:62
A point cloud contains a list of 3D points.
Definition: PointCloud.h:95
GroundPlane
Definition: Scene.h:200
The base geometry class.
Definition: Geometry.h:38
Definition: PinholeCameraIntrinsic.cpp:35
Scene(Renderer &renderer)
Definition: Scene.h:70
std::shared_ptr< core::Tensor > image
Definition: FilamentRenderer.cpp:228
bool SetActiveCamera(const std::string &path, std::shared_ptr< ConnectionBase > connection)
Definition: RemoteFunctions.cpp:388
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition: FilamentRenderer.cpp:227