29 #include <Eigen/Geometry> 39 class AxisAlignedBoundingBox;
49 namespace visualization {
54 struct TriangleMeshModel;
62 static const uint32_t kUpdatePointsFlag = (1 << 0);
63 static const uint32_t kUpdateNormalsFlag = (1 << 1);
64 static const uint32_t kUpdateColorsFlag = (1 << 2);
65 static const uint32_t kUpdateUv0Flag = (1 << 3);
67 using Transform = Eigen::Transform<float, 3, Eigen::Affine>;
70 virtual ~
Scene() =
default;
81 virtual void SetViewActive(
const ViewHandle& view_id,
bool is_active) = 0;
82 virtual void SetRenderOnce(
const ViewHandle& view_id) = 0;
83 virtual void RemoveView(
const ViewHandle& view_id) = 0;
86 virtual void AddCamera(
const std::string& camera_name,
87 std::shared_ptr<Camera> cam) = 0;
88 virtual void RemoveCamera(
const std::string& camera_name) = 0;
92 virtual bool AddGeometry(
const std::string& object_name,
95 const std::string& downsampled_name =
"",
96 size_t downsample_threshold = SIZE_MAX) = 0;
97 virtual bool AddGeometry(
const std::string& object_name,
100 const std::string& downsampled_name =
"",
101 size_t downsample_threshold = SIZE_MAX) = 0;
102 virtual bool AddGeometry(
const std::string& object_name,
104 virtual bool HasGeometry(
const std::string& object_name)
const = 0;
105 virtual void UpdateGeometry(
const std::string& object_name,
108 virtual void RemoveGeometry(
const std::string& object_name) = 0;
109 virtual void ShowGeometry(
const std::string& object_name,
bool show) = 0;
110 virtual bool GeometryIsVisible(
const std::string& object_name) = 0;
111 virtual void OverrideMaterial(
const std::string& object_name,
113 virtual void GeometryShadows(
const std::string& object_name,
115 bool receive_shadows) = 0;
116 virtual void SetGeometryCulling(
const std::string& object_name,
118 virtual void SetGeometryPriority(
const std::string& object_name,
119 uint8_t priority) = 0;
120 virtual void QueryGeometry(std::vector<std::string>& geometry) = 0;
121 virtual void SetGeometryTransform(
const std::string& object_name,
123 virtual Transform GetGeometryTransform(
const std::string& object_name) = 0;
125 const std::string& object_name) = 0;
126 virtual void OverrideMaterialAll(
const Material& material,
127 bool shader_only =
true) = 0;
130 virtual bool AddPointLight(
const std::string& light_name,
131 const Eigen::Vector3f&
color,
135 bool cast_shadows) = 0;
136 virtual bool AddSpotLight(
const std::string& light_name,
137 const Eigen::Vector3f& color,
138 const Eigen::Vector3f& position,
139 const Eigen::Vector3f& direction,
142 float inner_cone_angle,
143 float outer_cone_angle,
144 bool cast_shadows) = 0;
145 virtual bool AddDirectionalLight(
const std::string& light_name,
146 const Eigen::Vector3f& color,
147 const Eigen::Vector3f& direction,
149 bool cast_shadows) = 0;
150 virtual Light& GetLight(
const std::string& light_name) = 0;
151 virtual void RemoveLight(
const std::string& light_name) = 0;
152 virtual void UpdateLight(
const std::string& light_name,
153 const Light& light) = 0;
154 virtual void UpdateLightColor(
const std::string& light_name,
155 const Eigen::Vector3f& color) = 0;
156 virtual void UpdateLightPosition(
const std::string& light_name,
157 const Eigen::Vector3f& position) = 0;
158 virtual void UpdateLightDirection(
const std::string& light_name,
159 const Eigen::Vector3f& direction) = 0;
160 virtual void UpdateLightIntensity(
const std::string& light_name,
161 float intensity) = 0;
162 virtual void UpdateLightFalloff(
const std::string& light_name,
164 virtual void UpdateLightConeAngles(
const std::string& light_name,
165 float inner_cone_angle,
166 float outer_cone_angle) = 0;
167 virtual void EnableLightShadow(
const std::string& light_name,
168 bool cast_shadows) = 0;
170 virtual void SetSunLight(
const Eigen::Vector3f& direction,
171 const Eigen::Vector3f& color,
172 float intensity) = 0;
173 virtual void EnableSunLight(
bool enable) = 0;
174 virtual void EnableSunLightShadows(
bool enable) = 0;
175 virtual void SetSunLightColor(
const Eigen::Vector3f& color) = 0;
176 virtual Eigen::Vector3f GetSunLightColor() = 0;
177 virtual void SetSunLightIntensity(
float intensity) = 0;
178 virtual float GetSunLightIntensity() = 0;
179 virtual void SetSunLightDirection(
const Eigen::Vector3f& direction) = 0;
180 virtual Eigen::Vector3f GetSunLightDirection() = 0;
181 virtual void SetSunAngularRadius(
float radius) = 0;
182 virtual void SetSunHaloSize(
float size) = 0;
183 virtual void SetSunHaloFalloff(
float falloff) = 0;
185 virtual bool SetIndirectLight(
const std::string& ibl_name) = 0;
186 virtual const std::string& GetIndirectLight() = 0;
187 virtual void EnableIndirectLight(
bool enable) = 0;
188 virtual void SetIndirectLightIntensity(
float intensity) = 0;
189 virtual float GetIndirectLightIntensity() = 0;
190 virtual void SetIndirectLightRotation(
const Transform& rotation) = 0;
191 virtual Transform GetIndirectLightRotation() = 0;
192 virtual void ShowSkybox(
bool show) = 0;
193 virtual bool GetSkyboxVisible()
const = 0;
194 virtual void SetBackground(
195 const Eigen::Vector4f& color,
196 const std::shared_ptr<geometry::Image>
image =
nullptr) = 0;
200 virtual void EnableGroundPlane(
bool enable,
GroundPlane plane) = 0;
201 virtual void SetGroundPlaneColor(
const Eigen::Vector4f& color) = 0;
204 virtual void RenderToImage(
205 std::function<
void(std::shared_ptr<geometry::Image>)>
callback) = 0;
208 virtual void RenderToDepthImage(
209 std::function<
void(std::shared_ptr<geometry::Image>)>
callback) = 0;
void Copy(const Tensor &src, Tensor &dst)
Definition: UnaryEW.cpp:65
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:67
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
int size
Definition: FilePCD.cpp:59
Renderer & renderer_
Definition: Scene.h:212
math::float4 color
Definition: LineSetBuffers.cpp:64
Definition: Renderer.h:74
The base geometry class for 3D geometries.
Definition: Geometry3D.h:46
math::float3 position
Definition: LineSetBuffers.cpp:62
A pointcloud contains a set of 3D points.
Definition: PointCloud.h:95
GroundPlane
Definition: Scene.h:199
Definition: Material.h:41
Definition: PinholeCameraIntrinsic.cpp:35
Scene(Renderer &renderer)
Definition: Scene.h:69
std::shared_ptr< core::Tensor > image
Definition: FilamentRenderer.cpp:228
bool SetActiveCamera(const std::string &path, std::shared_ptr< ConnectionBase > connection)
Definition: RemoteFunctions.cpp:391
std::function< void(std::shared_ptr< core::Tensor >)> callback
Definition: FilamentRenderer.cpp:227