![]() |
ACloudViewer
3.9.4
A Modern Library for 3D Data Processing
|
#include <SceneWidget.h>


Classes | |
| struct | Impl |
| class | MouseInteractor |
| struct | PickableGeometry |
Public Types | |
| enum | Controls { ROTATE_CAMERA , ROTATE_CAMERA_SPHERE , FLY , ROTATE_SUN , ROTATE_IBL , ROTATE_MODEL , PICK_POINTS } |
| enum class | Quality { FAST , BEST } |
| enum class | CameraPreset { PLUS_X , PLUS_Y , PLUS_Z } |
| enum class | PolygonPickAction { CANCEL = 0 , SELECT } |
Public Types inherited from cloudViewer::visualization::gui::Widget | |
| enum class | DrawResult { NONE , REDRAW , RELAYOUT } |
| enum class | EventResult { IGNORED , CONSUMED , DISCARD } |
Public Member Functions | |
| SceneWidget () | |
| ~SceneWidget () override | |
| void | SetFrame (const Rect &f) override |
| void | SetViewControls (Controls mode) |
| void | SetupCamera (float verticalFoV, const ccBBox &scene_bounds, const Eigen::Vector3f ¢er_of_rotation) |
| void | SetupCamera (const camera::PinholeCameraIntrinsic &intrinsic, const Eigen::Matrix4d &extrinsic, const ccBBox &scene_bounds) |
| void | SetupCamera (const Eigen::Matrix3d &intrinsic, const Eigen::Matrix4d &extrinsic, int intrinsic_width_px, int intrinsic_height_px, const ccBBox &scene_bounds) |
| void | LookAt (const Eigen::Vector3f ¢er, const Eigen::Vector3f &eye, const Eigen::Vector3f &up) |
| void | SetOnCameraChanged (std::function< void(visualization::rendering::Camera *)> on_cam_changed) |
| Eigen::Vector3f | GetCenterOfRotation () const |
| void | SetCenterOfRotation (const Eigen::Vector3f ¢er) |
| void | SetOnSunDirectionChanged (std::function< void(const Eigen::Vector3f &)> on_dir_changed) |
| void | SetScene (std::shared_ptr< rendering::CloudViewerScene > scene) |
| std::shared_ptr< rendering::CloudViewerScene > | GetScene () const |
| rendering::View * | GetRenderView () const |
| void | EnableSceneCaching (bool enable) |
| void | ForceRedraw () |
| void | SetRenderQuality (Quality level) |
| Quality | GetRenderQuality () const |
| void | GoToCameraPreset (CameraPreset preset) |
| void | SetSunInteractorEnabled (bool enable) |
| void | SetPickableGeometry (const std::vector< PickableGeometry > &geometry) |
| void | SetPickablePointSize (int px) |
| void | SetOnPointsPicked (std::function< void(const std::map< std::string, std::vector< std::pair< size_t, Eigen::Vector3d >>> &, int)> on_picked) |
| void | SetOnStartedPolygonPicking (std::function< void()> on_poly_pick) |
| void | DoPolygonPick (PolygonPickAction action) |
| std::shared_ptr< Label3D > | AddLabel (const Eigen::Vector3f &pos, const char *text) |
| void | RemoveLabel (std::shared_ptr< Label3D > label) |
| void | ClearLabels () |
| Widget::DrawResult | Draw (const DrawContext &context) override |
| Widget::EventResult | Mouse (const MouseEvent &e) override |
| Widget::EventResult | Key (const KeyEvent &e) override |
| Widget::DrawResult | Tick (const TickEvent &e) override |
Public Member Functions inherited from cloudViewer::visualization::gui::Widget | |
| Widget () | |
| Widget (const std::vector< std::shared_ptr< Widget >> &children) | |
| virtual | ~Widget () |
| virtual void | AddChild (std::shared_ptr< Widget > child) |
| virtual const std::vector< std::shared_ptr< Widget > > | GetChildren () const |
| virtual const Rect & | GetFrame () const |
| Returns the frame size in pixels. More... | |
| virtual const Color & | GetBackgroundColor () const |
| virtual bool | IsDefaultBackgroundColor () const |
| virtual void | SetBackgroundColor (const Color &color) |
| virtual bool | IsVisible () const |
| virtual void | SetVisible (bool vis) |
| virtual bool | IsEnabled () const |
| virtual void | SetEnabled (bool enabled) |
| virtual void | SetTooltip (const char *text) |
| virtual const char * | GetTooltip () const |
| virtual Size | CalcPreferredSize (const LayoutContext &context, const Constraints &constraints) const |
| virtual Size | CalcMinimumSize (const LayoutContext &context) const |
| virtual void | Layout (const LayoutContext &context) |
Additional Inherited Members | |
Static Public Attributes inherited from cloudViewer::visualization::gui::Widget | |
| static constexpr int | DIM_GROW = 10000 |
Protected Member Functions inherited from cloudViewer::visualization::gui::Widget | |
| void | DrawImGuiPushEnabledState () |
| void | DrawImGuiPopEnabledState () |
| void | DrawImGuiTooltip () |
Definition at line 46 of file SceneWidget.h.
| Enumerator | |
|---|---|
| PLUS_X | |
| PLUS_Y | |
| PLUS_Z | |
Definition at line 121 of file SceneWidget.h.
| Enumerator | |
|---|---|
| ROTATE_CAMERA | |
| ROTATE_CAMERA_SPHERE | |
| FLY | |
| ROTATE_SUN | |
| ROTATE_IBL | |
| ROTATE_MODEL | |
| PICK_POINTS | |
Definition at line 66 of file SceneWidget.h.
| Enumerator | |
|---|---|
| CANCEL | |
| SELECT | |
Definition at line 159 of file SceneWidget.h.
| Enumerator | |
|---|---|
| FAST | |
| BEST | |
Definition at line 117 of file SceneWidget.h.
|
explicit |
Definition at line 798 of file SceneWidget.cpp.
References patch::to_string().
Referenced by cloudViewer::visualization::gui::pybind_gui_classes().
|
override |
Definition at line 803 of file SceneWidget.cpp.
References SetScene().
| std::shared_ptr< Label3D > cloudViewer::visualization::gui::SceneWidget::AddLabel | ( | const Eigen::Vector3f & | pos, |
| const char * | text | ||
| ) |
Definition at line 1066 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::Add3DLabel(), and cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::ClearLabels | ( | ) |
Definition at line 1080 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::Clear3DLabels().
| void cloudViewer::visualization::gui::SceneWidget::DoPolygonPick | ( | PolygonPickAction | action | ) |
Definition at line 944 of file SceneWidget.cpp.
|
overridevirtual |
Draws the widget. If this is a Dear ImGUI widget, this is where the actual event processing happens. Return NONE if no action needs to be taken, REDRAW if the widget needs to be redrawn (e.g. its value changed), and RELAYOUT if the widget wishes to change size.
Reimplemented from cloudViewer::visualization::gui::Widget.
Definition at line 1082 of file SceneWidget.cpp.
References color, cloudViewer::visualization::gui::colorToImguiRGBA(), context, ForceRedraw(), cloudViewer::visualization::gui::Widget::GetFrame(), cloudViewer::visualization::rendering::Camera::GetNDC(), and cloudViewer::visualization::gui::Widget::NONE.
| void cloudViewer::visualization::gui::SceneWidget::EnableSceneCaching | ( | bool | enable | ) |
Enable (or disable) caching of scene to improve UI responsiveness when dealing with large scenes (especially point clouds)
Definition at line 989 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ExportCurrentImage(), and cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::ForceRedraw | ( | ) |
Forces the scene to redraw regardless of Renderer caching settings.
Definition at line 997 of file SceneWidget.cpp.
Referenced by Draw(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableBasicMode(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableWireframeMode(), GoToCameraPreset(), cloudViewer::visualization::gui::pybind_gui_classes(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::RemoveGeometry(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ResetCameraToDefault(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SelectSelectionSet(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetBackground(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetGroundPlane(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetIBL(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetLineWidth(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetOnAnimationTick(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetPointSize(), SetScene(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetShader(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetUIState(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetupCamera(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowAxes(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowGround(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowSkybox(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometry(), and cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometryVisibility().
| Eigen::Vector3f cloudViewer::visualization::gui::SceneWidget::GetCenterOfRotation | ( | ) | const |
Definition at line 879 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::gui::pybind_gui_classes().
| SceneWidget::Quality cloudViewer::visualization::gui::SceneWidget::GetRenderQuality | ( | ) | const |
Definition at line 1026 of file SceneWidget.cpp.
Referenced by SetRenderQuality(), and Tick().
| rendering::View * cloudViewer::visualization::gui::SceneWidget::GetRenderView | ( | ) | const |
Definition at line 959 of file SceneWidget.cpp.
| std::shared_ptr< rendering::CloudViewerScene > cloudViewer::visualization::gui::SceneWidget::GetScene | ( | ) | const |
Definition at line 955 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableBasicMode(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableSunFollowsCamera(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableWireframeMode(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ExportCurrentImage(), cloudViewer::visualization::visualizer::O3DVisualizerSelections::MakeActive(), cloudViewer::visualization::visualizer::O3DVisualizerSelections::MakeInactive(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ModifyGeometryMaterial(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::OverrideMaterial(), cloudViewer::visualization::gui::pybind_gui_classes(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::RemoveGeometry(), cloudViewer::visualization::visualizer::O3DVisualizerSelections::RemoveSet(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ResetCameraToDefault(), cloudViewer::visualization::visualizer::O3DVisualizerSelections::SelectSet(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetBackground(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetGroundPlane(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetIBL(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetLightingProfile(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetPointSize(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetUIState(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetupCamera(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowAxes(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowGround(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ShowSkybox(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometry(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometryForInspectionMode(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometryForWireframeMode(), and cloudViewer::visualization::visualizer::O3DVisualizer::Impl::UpdateGeometryVisibility().
| void cloudViewer::visualization::gui::SceneWidget::GoToCameraPreset | ( | CameraPreset | preset | ) |
Definition at line 1030 of file SceneWidget.cpp.
References ForceRedraw(), cloudViewer::visualization::rendering::Camera::LookAt(), PLUS_X, PLUS_Y, and PLUS_Z.
Referenced by SetupCamera().
|
overridevirtual |
Widgets that use Dear ImGUI should not need to override this, as Dear ImGUI will take care of all the key handling during the Draw().
Reimplemented from cloudViewer::visualization::gui::Widget.
Reimplemented in cloudViewer::visualization::gui::PySceneWidget.
Definition at line 1198 of file SceneWidget.cpp.
References cloudViewer::visualization::gui::Widget::CONSUMED.
Referenced by cloudViewer::visualization::gui::PySceneWidget::Key(), and cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::LookAt | ( | const Eigen::Vector3f & | center, |
| const Eigen::Vector3f & | eye, | ||
| const Eigen::Vector3f & | up | ||
| ) |
Definition at line 871 of file SceneWidget.cpp.
References cloudViewer::visualization::gui::Widget::GetFrame(), and cloudViewer::visualization::rendering::Camera::LookAt().
Referenced by cloudViewer::visualization::gui::pybind_gui_classes(), and cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetupCamera().
|
overridevirtual |
Widgets that use Dear ImGUI should not need to override this, as Dear ImGUI will take care of all the mouse handling during the Draw().
Reimplemented from cloudViewer::visualization::gui::Widget.
Reimplemented in cloudViewer::visualization::gui::PySceneWidget.
Definition at line 1166 of file SceneWidget.cpp.
References cloudViewer::visualization::gui::MouseEvent::button, cloudViewer::visualization::gui::MouseEvent::BUTTON_DOWN, cloudViewer::visualization::gui::MouseEvent::BUTTON_UP, cloudViewer::visualization::gui::Widget::CONSUMED, cloudViewer::visualization::gui::MouseEvent::DRAG, FAST, frame, cloudViewer::visualization::gui::Widget::GetFrame(), cloudViewer::visualization::gui::Application::GetInstance(), local, cloudViewer::visualization::gui::MouseEvent::MOVE, cloudViewer::visualization::gui::Application::Now(), SetRenderQuality(), cloudViewer::visualization::gui::MouseEvent::type, and cloudViewer::visualization::gui::MouseEvent::WHEEL.
Referenced by cloudViewer::visualization::gui::PySceneWidget::Mouse(), and cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::RemoveLabel | ( | std::shared_ptr< Label3D > | label | ) |
Definition at line 1073 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::SetCenterOfRotation | ( | const Eigen::Vector3f & | center | ) |
Definition at line 883 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::gui::pybind_gui_classes().
|
overridevirtual |
The frame is in pixels. The size of a pixel varies on different and operating systems now frequently scale text sizes on high DPI monitors. Prefer using a Layout to using this function, but if you must use it, it is best to use a multiple of Window::GetTheme().fontSize, which represents 1em and is scaled according to the scaling factor of the window.
Reimplemented from cloudViewer::visualization::gui::Widget.
Definition at line 807 of file SceneWidget.cpp.
References cloudViewer::visualization::gui::Widget::GetFrame(), cloudViewer::visualization::gui::Rect::height, cloudViewer::visualization::gui::Widget::SetFrame(), and cloudViewer::visualization::gui::Rect::width.
| void cloudViewer::visualization::gui::SceneWidget::SetOnCameraChanged | ( | std::function< void(visualization::rendering::Camera *)> | on_cam_changed | ) |
Definition at line 887 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableSunFollowsCamera().
| void cloudViewer::visualization::gui::SceneWidget::SetOnPointsPicked | ( | std::function< void(const std::map< std::string, std::vector< std::pair< size_t, Eigen::Vector3d >>> &, int)> | on_picked | ) |
Definition at line 916 of file SceneWidget.cpp.
| void cloudViewer::visualization::gui::SceneWidget::SetOnStartedPolygonPicking | ( | std::function< void()> | on_poly_pick | ) |
Definition at line 939 of file SceneWidget.cpp.
| void cloudViewer::visualization::gui::SceneWidget::SetOnSunDirectionChanged | ( | std::function< void(const Eigen::Vector3f &)> | on_dir_changed | ) |
Enables changing the directional light with the mouse. SceneWidget will update the light's direction, so onDirChanged is only needed if other things need to be updated (like a UI).
Definition at line 892 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::gui::pybind_gui_classes().
| void cloudViewer::visualization::gui::SceneWidget::SetPickableGeometry | ( | const std::vector< PickableGeometry > & | geometry | ) |
Definition at line 907 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizerSelections::SetSelectableGeometry().
| void cloudViewer::visualization::gui::SceneWidget::SetPickablePointSize | ( | int | px | ) |
Definition at line 912 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetPointSize().
| void cloudViewer::visualization::gui::SceneWidget::SetRenderQuality | ( | Quality | level | ) |
Definition at line 1005 of file SceneWidget.cpp.
References FAST, cloudViewer::visualization::rendering::CloudViewerScene::FAST, GetRenderQuality(), and cloudViewer::visualization::rendering::CloudViewerScene::HIGH_DETAIL.
| void cloudViewer::visualization::gui::SceneWidget::SetScene | ( | std::shared_ptr< rendering::CloudViewerScene > | scene | ) |
Definition at line 925 of file SceneWidget.cpp.
References ForceRedraw().
Referenced by cloudViewer::visualization::gui::pybind_gui_classes(), and ~SceneWidget().
| void cloudViewer::visualization::gui::SceneWidget::SetSunInteractorEnabled | ( | bool | enable | ) |
Definition at line 903 of file SceneWidget.cpp.
Referenced by cloudViewer::visualization::visualizer::O3DVisualizer::Impl::EnableSunFollowsCamera().
| void cloudViewer::visualization::gui::SceneWidget::SetupCamera | ( | const camera::PinholeCameraIntrinsic & | intrinsic, |
| const Eigen::Matrix4d & | extrinsic, | ||
| const ccBBox & | scene_bounds | ||
| ) |
Definition at line 836 of file SceneWidget.cpp.
References cloudViewer::camera::PinholeCameraIntrinsic::height_, cloudViewer::camera::PinholeCameraIntrinsic::intrinsic_matrix_, SetupCamera(), and cloudViewer::camera::PinholeCameraIntrinsic::width_.
| void cloudViewer::visualization::gui::SceneWidget::SetupCamera | ( | const Eigen::Matrix3d & | intrinsic, |
| const Eigen::Matrix4d & | extrinsic, | ||
| int | intrinsic_width_px, | ||
| int | intrinsic_height_px, | ||
| const ccBBox & | scene_bounds | ||
| ) |
Definition at line 843 of file SceneWidget.cpp.
References dist(), ccBBox::GetCenter(), and cloudViewer::visualization::rendering::Camera::SetupCameraAsPinholeCamera().
| void cloudViewer::visualization::gui::SceneWidget::SetupCamera | ( | float | verticalFoV, |
| const ccBBox & | scene_bounds, | ||
| const Eigen::Vector3f & | center_of_rotation | ||
| ) |
Definition at line 823 of file SceneWidget.cpp.
References cloudViewer::visualization::gui::Widget::GetFrame(), GoToCameraPreset(), and PLUS_Z.
Referenced by cloudViewer::visualization::gui::pybind_gui_classes(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::ResetCameraToDefault(), cloudViewer::visualization::visualizer::O3DVisualizer::Impl::SetupCamera(), and SetupCamera().
| void cloudViewer::visualization::gui::SceneWidget::SetViewControls | ( | Controls | mode | ) |
|
overridevirtual |
Tick events are sent regularly and allow for things like smoothly moving the camera based on keys that are pressed, or animations. Return DrawResult::REDRAW if you want to be redrawn.
Reimplemented from cloudViewer::visualization::gui::Widget.
Definition at line 1207 of file SceneWidget.cpp.
References BEST, cloudViewer::visualization::gui::DELAY_FOR_BEST_RENDERING_SECS, FAST, cloudViewer::visualization::gui::Application::GetInstance(), GetRenderQuality(), cloudViewer::visualization::gui::Application::Now(), cloudViewer::visualization::gui::Widget::REDRAW, result, and SetRenderQuality().