PointCloudLibrary / PointCloudLibrary/pcl
Add AABB and better documentation to `pcl::visualizer`
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 11.1k
- Forks
- 4.7k
- Avg merge
- 4d 10h
- Merged PRs (30d)
- 6
Description
Background
I am trying to implement a segmentation algorithm with the aid of PCL and to visualize them locally in my c++ projects. I have already implemented a cross-platform WebGL based "game engine" to visualize pcd data layer but it will save my time if I can have rich scene management tool locally in my c++ projects.
I have scanned through sources code of "PCL/visualization/pcl_visualizer.h" and found that it brings much more functionalities than I expected:
- add a camera
- multi viewports
- draw primitive geometries
- event handling
But I cannot find details on how to use them besides the scope of source codes. I am familiar with openGL3.0 but not that good at Qt or VTK UI for desktop projects (I am good at HTML5 based solutions for the cross-platform product). Hence I would like to reuse any codes written by PCL.
It is not easy. For example, if I want to add a grid, do I need to use addLine to draw them from scratch?
Or another example, If I want add an AABB, do need to add routines like using OpenGL? Or, even better, you cool guys have done something for me already!
I have little idea on how to use or extend something like PCL::visualization::PCLVisualizerInteractorStyle which might be important to visualizer.
Look at some toolkits installation file:
# pcl_outofcore_process
PCL_ADD_EXECUTABLE(pcl_outofcore_process "${SUBSYS_NAME}" outofcore_process.cpp)
target_link_libraries(pcl_outofcore_process pcl_common pcl_filters pcl_io pcl_octree pcl_outofcore)
PCL_ADD_EXECUTABLE(pcl_outofcore_print "${SUBSYS_NAME}" outofcore_print.cpp)
target_link_libraries(pcl_outofcore_print pcl_common pcl_filters pcl_io pcl_octree pcl_outofcore)
if(NOT VTK_FOUND)
set(DEFAULT FALSE)
set(REASON "VTK was not found.")
else(NOT VTK_FOUND)
set(DEFAULT TRUE)
set(REASON)
set(VTK_USE_FILE "${VTK_USE_FILE}" CACHE INTERNAL "VTK_USE_FILE")
include("${VTK_USE_FILE}")
include_directories("${CMAKE_CURRENT_SOURCE_DIR}/include")
if("${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}" VERSION_GREATER "5.8")
# pcl_outofcore_viewer uses some functions not present in vtk 5.8
set(srcs outofcore_viewer.cpp
../src/visualization/camera.cpp
../src/visualization/common.cpp
../src/visualization/object.cpp
../src/visualization/grid.cpp
../src/visualization/outofcore_cloud.cpp
../src/visualization/scene.cpp
../src/visualization/viewport.cpp)
# pcl_outofcore_viewer
PCL_ADD_EXECUTABLE_OPT_BUNDLE(pcl_outofcore_viewer "${SUBSYS_NAME}" ${srcs})
target_link_libraries(pcl_outofcore_viewer pcl_common pcl_io pcl_outofcore pcl_visualization pcl_octree pcl_filters)
endif("${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}" VERSION_GREATER "5.8")
endif(NOT VTK_FOUND)
Where I can find the usage of them?
Subject
Detailed information on existing functionalities to enrich the visualizer like:
- adding AABB
- adding grid
- using scene graph inside the PCL visualizer
- provided that scene graph available, event handler enhancement for each object added into scene graph in PCL visualizer.
- I do really need some examples, detailed documentation and starter instead of reading source codes because adding functionalities into PCL visualizer,
exceeds beyondmy duties or performance in this project.
Guide to answer the question
If we don't have such utilities do those things, I will consider contributing the relevant codes into the PCL code base even though It has little influence upon the main line of the project.
Current behavior
I cannot find official documentation and starter projects to verify whether the functionalities available.
Expected behavior
Visualizer seems to be implemented with great efforts from the PCL developers, we need finer details to utilize the codes they wrote.
@clockwise9 @rbrusu @stevefox @elfring
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with pcl/visualization/pcl_visualizer.h and PCLVisualizerInteractorStyle to inventory the existing visualizer APIs. Compare them with the visualization sources listed for pcl_outofcore_viewer, including grid.cpp, scene.cpp, and viewport.cpp. Done means documenting the existing capabilities and determining the scope for AABB, grid, scene-graph, and object event support.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- cpp
- Domain
- computer-vision, desktop-dev
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100