ACloudViewer  3.9.4
A Modern Library for 3D Data Processing
cloudViewer::visualization::gui::SceneWidget Class Reference

#include <SceneWidget.h>

Inheritance diagram for cloudViewer::visualization::gui::SceneWidget:
Collaboration diagram for cloudViewer::visualization::gui::SceneWidget:

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 &center_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 &center, 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 &center)
 
void SetOnSunDirectionChanged (std::function< void(const Eigen::Vector3f &)> on_dir_changed)
 
void SetScene (std::shared_ptr< rendering::CloudViewerScene > scene)
 
std::shared_ptr< rendering::CloudViewerSceneGetScene () const
 
rendering::ViewGetRenderView () 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< Label3DAddLabel (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 RectGetFrame () const
 Returns the frame size in pixels. More...
 
virtual const ColorGetBackgroundColor () 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 ()
 

Detailed Description

Definition at line 46 of file SceneWidget.h.

Member Enumeration Documentation

◆ CameraPreset

Enumerator
PLUS_X 
PLUS_Y 
PLUS_Z 

Definition at line 121 of file SceneWidget.h.

◆ Controls

Enumerator
ROTATE_CAMERA 
ROTATE_CAMERA_SPHERE 
FLY 
ROTATE_SUN 
ROTATE_IBL 
ROTATE_MODEL 
PICK_POINTS 

Definition at line 66 of file SceneWidget.h.

◆ PolygonPickAction

Enumerator
CANCEL 
SELECT 

Definition at line 159 of file SceneWidget.h.

◆ Quality

Enumerator
FAST 
BEST 

Definition at line 117 of file SceneWidget.h.

Constructor & Destructor Documentation

◆ SceneWidget()

cloudViewer::visualization::gui::SceneWidget::SceneWidget ( )
explicit

Definition at line 798 of file SceneWidget.cpp.

References patch::to_string().

Referenced by cloudViewer::visualization::gui::pybind_gui_classes().

◆ ~SceneWidget()

cloudViewer::visualization::gui::SceneWidget::~SceneWidget ( )
override

Definition at line 803 of file SceneWidget.cpp.

References SetScene().

Member Function Documentation

◆ AddLabel()

std::shared_ptr< Label3D > cloudViewer::visualization::gui::SceneWidget::AddLabel ( const Eigen::Vector3f &  pos,
const char *  text 
)

◆ ClearLabels()

void cloudViewer::visualization::gui::SceneWidget::ClearLabels ( )

◆ DoPolygonPick()

void cloudViewer::visualization::gui::SceneWidget::DoPolygonPick ( PolygonPickAction  action)

Definition at line 944 of file SceneWidget.cpp.

References CANCEL, and SELECT.

◆ Draw()

Widget::DrawResult cloudViewer::visualization::gui::SceneWidget::Draw ( const DrawContext context)
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.

◆ EnableSceneCaching()

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().

◆ ForceRedraw()

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().

◆ GetCenterOfRotation()

Eigen::Vector3f cloudViewer::visualization::gui::SceneWidget::GetCenterOfRotation ( ) const

◆ GetRenderQuality()

SceneWidget::Quality cloudViewer::visualization::gui::SceneWidget::GetRenderQuality ( ) const

Definition at line 1026 of file SceneWidget.cpp.

Referenced by SetRenderQuality(), and Tick().

◆ GetRenderView()

rendering::View * cloudViewer::visualization::gui::SceneWidget::GetRenderView ( ) const

Definition at line 959 of file SceneWidget.cpp.

◆ GetScene()

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().

◆ GoToCameraPreset()

void cloudViewer::visualization::gui::SceneWidget::GoToCameraPreset ( CameraPreset  preset)

◆ Key()

Widget::EventResult cloudViewer::visualization::gui::SceneWidget::Key ( const KeyEvent e)
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().

◆ LookAt()

void cloudViewer::visualization::gui::SceneWidget::LookAt ( const Eigen::Vector3f &  center,
const Eigen::Vector3f &  eye,
const Eigen::Vector3f &  up 
)

◆ Mouse()

◆ RemoveLabel()

void cloudViewer::visualization::gui::SceneWidget::RemoveLabel ( std::shared_ptr< Label3D label)

◆ SetCenterOfRotation()

void cloudViewer::visualization::gui::SceneWidget::SetCenterOfRotation ( const Eigen::Vector3f &  center)

◆ SetFrame()

void cloudViewer::visualization::gui::SceneWidget::SetFrame ( const Rect f)
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.

◆ SetOnCameraChanged()

void cloudViewer::visualization::gui::SceneWidget::SetOnCameraChanged ( std::function< void(visualization::rendering::Camera *)>  on_cam_changed)

◆ SetOnPointsPicked()

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.

◆ SetOnStartedPolygonPicking()

void cloudViewer::visualization::gui::SceneWidget::SetOnStartedPolygonPicking ( std::function< void()>  on_poly_pick)

Definition at line 939 of file SceneWidget.cpp.

◆ SetOnSunDirectionChanged()

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().

◆ SetPickableGeometry()

void cloudViewer::visualization::gui::SceneWidget::SetPickableGeometry ( const std::vector< PickableGeometry > &  geometry)

◆ SetPickablePointSize()

void cloudViewer::visualization::gui::SceneWidget::SetPickablePointSize ( int  px)

◆ SetRenderQuality()

void cloudViewer::visualization::gui::SceneWidget::SetRenderQuality ( Quality  level)

◆ SetScene()

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().

◆ SetSunInteractorEnabled()

void cloudViewer::visualization::gui::SceneWidget::SetSunInteractorEnabled ( bool  enable)

◆ SetupCamera() [1/3]

void cloudViewer::visualization::gui::SceneWidget::SetupCamera ( const camera::PinholeCameraIntrinsic intrinsic,
const Eigen::Matrix4d &  extrinsic,
const ccBBox scene_bounds 
)

◆ SetupCamera() [2/3]

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 
)

◆ SetupCamera() [3/3]

void cloudViewer::visualization::gui::SceneWidget::SetupCamera ( float  verticalFoV,
const ccBBox scene_bounds,
const Eigen::Vector3f &  center_of_rotation 
)

◆ SetViewControls()

◆ Tick()

Widget::DrawResult cloudViewer::visualization::gui::SceneWidget::Tick ( const TickEvent e)
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().


The documentation for this class was generated from the following files: