![]() |
Visual Servoing Platform version 3.7.0
|
#include <vpPanda3DRendererSet.h>
Public Member Functions | |
| vpPanda3DRendererSet () | |
| vpPanda3DRendererSet (const vpPanda3DRenderParameters &renderParameters) | |
| virtual | ~vpPanda3DRendererSet ()=default |
| void | initFramework () VP_OVERRIDE |
| void | initFromParent (PointerTo< WindowFramework > window) VP_OVERRIDE |
| void | initFromParent (const vpPanda3DBaseRenderer &renderer) VP_OVERRIDE |
| void | clearScene () VP_OVERRIDE |
| void | setCameraPose (const vpHomogeneousMatrix &wTc) VP_OVERRIDE |
| vpHomogeneousMatrix | getCameraPose () VP_OVERRIDE |
| void | setNodePose (const std::string &name, const vpHomogeneousMatrix &wTo) VP_OVERRIDE |
| void | setNodePose (NodePath &object, const vpHomogeneousMatrix &wTo) VP_OVERRIDE |
| vpHomogeneousMatrix | getNodePose (const std::string &name) VP_OVERRIDE |
| vpHomogeneousMatrix | getNodePose (NodePath &object) VP_OVERRIDE |
| void | addNodeToScene (const NodePath &object) VP_OVERRIDE |
| virtual void | setRenderParameters (const vpPanda3DRenderParameters ¶ms) VP_OVERRIDE |
| void | addLight (const vpPanda3DLight &light) VP_OVERRIDE |
| void | addSubRenderer (std::shared_ptr< vpPanda3DBaseRenderer > renderer) |
| void | enableSharedDepthBuffer (vpPanda3DBaseRenderer &sourceBuffer) VP_OVERRIDE |
| template<typename RendererType> | |
| std::shared_ptr< RendererType > | getRenderer () |
| template<typename RendererType> | |
| std::shared_ptr< RendererType > | getRenderer (const std::string &name) |
| virtual void | beforeFrameRendered () VP_OVERRIDE |
| virtual void | afterFrameRendered () VP_OVERRIDE |
| virtual void | renderFrame () |
| const std::string & | getName () const |
| void | setName (const std::string &name) |
| NodePath & | getRenderRoot () |
| virtual bool | isRendering3DScene () const |
| int | getRenderOrder () const |
| void | setRenderOrder (int order) |
| void | computeNearAndFarPlanesFromNode (const std::string &name, float &nearV, float &farV, bool fast) |
| NodePath | loadObject (const std::string &nodeName, const std::string &modelPath) |
| virtual void | addObjectToScene (const std::string &name, const std::string &path) |
| void | setVerticalSyncEnabled (bool useVsync) |
| void | setAbortOnPandaError (bool abort) |
| void | enableDebugLog () |
| void | printStructure () |
| virtual PointerTo< GraphicsOutput > | getMainOutputBuffer () |
| PointerTo< WindowFramework > & | getWindowFramework () |
Static Public Member Functions | |
| static vpColVector | vispPointToPanda (const vpColVector &point) |
| static vpColVector | vispVectorToPanda (const vpColVector &vec) |
| static const vpHomogeneousMatrix & | pandaToVisp () |
| static const vpHomogeneousMatrix & | vispToPanda () |
Protected Member Functions | |
| void | setupScene () VP_OVERRIDE |
| void | setupCamera () VP_OVERRIDE |
| virtual void | setupRenderTarget () |
Protected Attributes | |
| std::vector< std::shared_ptr< vpPanda3DBaseRenderer > > | m_subRenderers |
| std::string | m_name |
| int | m_renderOrder |
| PointerTo< WindowFramework > | m_window |
| vpPanda3DRenderParameters | m_renderParameters |
| NodePath | m_renderRoot |
| PointerTo< Camera > | m_camera |
| NodePath | m_cameraPath |
| std::vector< PointerTo< GraphicsOutput > > | m_buffers |
| bool | m_isWindowOwner |
Static Protected Attributes | |
| static const vpHomogeneousMatrix | VISP_T_PANDA |
| static const vpHomogeneousMatrix | PANDA_T_VISP |
Class that renders multiple datatypes, in a single pass. A renderer set contains multiple subrenderers, all inheriting from vpPanda3DBaseRenderer. The renderer set synchronizes all scene properties for the different subrenderers. This includes:
The overall usage workflow is the following:
Tutorials
If you are interested in using Panda3D in Augmented Reality applications, you may have a look at:
Definition at line 74 of file vpPanda3DRendererSet.h.
| BEGIN_VISP_NAMESPACE vpPanda3DRendererSet::vpPanda3DRendererSet | ( | ) |
Definition at line 39 of file vpPanda3DRendererSet.cpp.
References vpPanda3DBaseRenderer::vpPanda3DBaseRenderer().
Referenced by vpObjectCentricRenderer::vpObjectCentricRenderer().
| vpPanda3DRendererSet::vpPanda3DRendererSet | ( | const vpPanda3DRenderParameters & | renderParameters | ) |
Definition at line 44 of file vpPanda3DRendererSet.cpp.
References vpPanda3DBaseRenderer::m_renderParameters, and vpPanda3DBaseRenderer::vpPanda3DBaseRenderer().
|
virtualdefault |
References initFromParent(), and vpPanda3DBaseRenderer::vpPanda3DBaseRenderer().
|
virtual |
Light this lightable object with a new light.
| light |
Implements vpPanda3DLightable.
Definition at line 163 of file vpPanda3DRendererSet.cpp.
References vpPanda3DLightable::addLight(), and m_subRenderers.
|
virtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 146 of file vpPanda3DRendererSet.cpp.
References m_subRenderers.
|
virtualinherited |
Load and and an object to the scene.
| name | |
| path |
Definition at line 357 of file vpPanda3DBaseRenderer.cpp.
References addNodeToScene(), and loadObject().
| void vpPanda3DRendererSet::addSubRenderer | ( | std::shared_ptr< vpPanda3DBaseRenderer > | renderer | ) |
Add a new subrenderer: This subrenderer should have a unique name, not present in the set.
| if | the subrenderer's name is already present in the set. |
| renderer | the renderer to add |
Definition at line 173 of file vpPanda3DRendererSet.cpp.
References vpException::badValue, getCameraPose(), vpPanda3DBaseRenderer::m_renderParameters, m_subRenderers, and vpPanda3DBaseRenderer::m_window.
|
inlinevirtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 223 of file vpPanda3DRendererSet.h.
References m_subRenderers.
|
inlinevirtual |
Reimplemented from vpPanda3DBaseRenderer.
Reimplemented in vpObjectCentricRenderer.
Definition at line 216 of file vpPanda3DRendererSet.h.
References m_subRenderers.
Referenced by vpObjectCentricRenderer::beforeFrameRendered().
|
inlinevirtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 93 of file vpPanda3DRendererSet.h.
References clearScene(), and m_subRenderers.
Referenced by clearScene().
|
inherited |
Compute the near and far planes for the camera at the current pose, given a certain node/part of the graph.
The near clipping value will be set to the distance to the closest point of the object. The far clipping value will be set to the distance to farthest vertex of the object.
| name | name of the node that should be used to compute near and far values. |
| nearV | resulting near clipping plane distance |
| farV | resulting far clipping plane distance |
| fast | Whether to use the axis align bounding box to compute the clipping planes. This is faster than reprojecting the full geometry in the camera frame |
Definition at line 239 of file vpPanda3DBaseRenderer.cpp.
References vpException::badValue, vpException::fatalError, getCameraPose(), getNodePose(), vpHomogeneousMatrix::inverse(), m_camera, m_cameraPath, m_renderRoot, vpMath::maximum(), vpException::notInitialized, and PANDA_T_VISP.
|
inherited |
Definition at line 381 of file vpPanda3DBaseRenderer.cpp.
|
virtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 196 of file vpPanda3DRendererSet.cpp.
References m_subRenderers, and vpPanda3DBaseRenderer::vpPanda3DBaseRenderer().
|
virtual |
Retrieve the pose of the camera. As this renderer contains multiple other renderers.
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 105 of file vpPanda3DRendererSet.cpp.
References vpException::fatalError, vpPanda3DBaseRenderer::isRendering3DScene(), and m_subRenderers.
Referenced by addSubRenderer(), vpObjectCentricRenderer::computeBoundingBox(), and vpObjectCentricRenderer::computeClipping().
|
inlinevirtualinherited |
Reimplemented in vpPanda3DGeometryRenderer, vpPanda3DPostProcessFilter, and vpPanda3DRGBRenderer.
Definition at line 253 of file vpPanda3DBaseRenderer.h.
Referenced by afterFrameRendered(), and enableSharedDepthBuffer().
|
inlineinherited |
Get the name of the renderer.
Definition at line 98 of file vpPanda3DBaseRenderer.h.
References m_name.
|
virtual |
Retrieve the pose of a scene node. The pose is in the world frame, using a ViSP convention.
| name | name of the node |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 130 of file vpPanda3DRendererSet.cpp.
References vpException::fatalError, vpPanda3DBaseRenderer::isRendering3DScene(), and m_subRenderers.
Referenced by vpObjectCentricRenderer::computeBoundingBox(), and vpObjectCentricRenderer::computeClipping().
|
virtual |
This method is not supported for this renderer type. Use the std::string version.
| vpException,as | this method is not supported |
| object |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 141 of file vpPanda3DRendererSet.cpp.
References vpException::badValue.
|
inline |
Retrieve the first subrenderer with the specified template type.
| RendererType | The type of the renderer to find |
Definition at line 184 of file vpPanda3DRendererSet.h.
References getRenderer(), and m_subRenderers.
Referenced by getRenderer().
|
inline |
Retrieve the subrenderer with the specified template type and the given name.
| name | the name of the subrenderer to find |
| RendererType | The type of the renderer to find |
Definition at line 203 of file vpPanda3DRendererSet.h.
References m_subRenderers.
|
inlineinherited |
Get the rendering order of this renderer. If a renderer A has a lower order value than B, it will be rendered before B. This is useful, if for instance, B is a postprocessing filter that depends on the result of B.
Definition at line 134 of file vpPanda3DBaseRenderer.h.
References m_renderOrder.
|
inlineinherited |
Get the scene root.
Definition at line 106 of file vpPanda3DBaseRenderer.h.
References m_renderRoot.
|
inlineinherited |
Definition at line 261 of file vpPanda3DBaseRenderer.h.
References m_window.
Referenced by vpPanda3DFrameworkManager::enableSingleRenderer().
|
virtual |
Initialize the framework and propagate the created panda3D framework to the subrenderers.
The subrenderers will be initialized in the order of their priority as defined by vpPanda3DBaseRenderer::getRenderOrder Thus, if a renderer B depends on A for its render, and if B.getRenderOrder() > A.getRenderOrder() it can rely on A being initialized when B.initFromParent is called (along with the setupCamera, setupRenderTarget).
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 49 of file vpPanda3DRendererSet.cpp.
References vpException::badValue, vpException::fatalError, vpPanda3DFrameworkManager::getFramework(), vpPanda3DFrameworkManager::getInstance(), vpPanda3DFrameworkManager::initFramework(), vpPanda3DBaseRenderer::m_isWindowOwner, vpPanda3DBaseRenderer::m_renderParameters, m_subRenderers, and vpPanda3DBaseRenderer::m_window.
|
virtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 88 of file vpPanda3DRendererSet.cpp.
References vpPanda3DBaseRenderer::initFromParent(), m_subRenderers, and vpPanda3DBaseRenderer::vpPanda3DBaseRenderer().
|
virtual |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 80 of file vpPanda3DRendererSet.cpp.
References vpPanda3DBaseRenderer::initFromParent(), m_subRenderers, and vpPanda3DBaseRenderer::m_window.
Referenced by ~vpPanda3DRendererSet().
|
inlinevirtualinherited |
Returns true if this renderer process 3D data and its scene root can be interacted with.
This value could be false, if for instance it is redefined in a subclass that performs postprocessing on a texture.
Reimplemented in vpPanda3DPostProcessFilter.
Definition at line 125 of file vpPanda3DBaseRenderer.h.
Referenced by enableSharedDepthBuffer(), vpPanda3DRendererSet::getCameraPose(), and vpPanda3DRendererSet::getNodePose().
|
inherited |
Load a 3D object. To load an .obj file, Panda3D must be compiled with assimp support.
Once loaded, the object will not be visible, it should be added to the scene.
| nodeName | the name that will be used when inserting the node in the scene graph |
| modelPath | Path to the model file |
Definition at line 331 of file vpPanda3DBaseRenderer.cpp.
References vpPanda3DFrameworkManager::getFramework(), vpPanda3DFrameworkManager::getInstance(), vpException::ioError, and m_window.
Referenced by addObjectToScene().
|
staticinherited |
Definition at line 56 of file vpPanda3DBaseRenderer.cpp.
References VISP_T_PANDA.
|
inherited |
Definition at line 399 of file vpPanda3DBaseRenderer.cpp.
References m_renderRoot.
|
virtualinherited |
Definition at line 146 of file vpPanda3DBaseRenderer.cpp.
References afterFrameRendered(), beforeFrameRendered(), vpPanda3DFrameworkManager::disableAllOtherRenderers(), vpPanda3DFrameworkManager::enableAllRenderers(), vpPanda3DFrameworkManager::getInstance(), and m_window.
|
inherited |
Set the behaviour when a Panda3D assertion fails. If abort is true, the program will stop. Otherwise, an error will be displayed in the console.
| abort | whether to abort (true) or display a message when an assertion fails. |
Definition at line 371 of file vpPanda3DBaseRenderer.cpp.
|
virtual |
Set the pose of the camera, using the ViSP convention. This change is propagated to all subrenderers.
| wTc | Pose of the camera |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 96 of file vpPanda3DRendererSet.cpp.
References m_subRenderers.
|
inlineinherited |
Definition at line 100 of file vpPanda3DBaseRenderer.h.
References m_name.
|
virtual |
Set the pose of an object for all the subrenderers. The pose is specified using the ViSP convention This method may fail if a subrenderer does not have a node with the given name.
| name | |
| wTo |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 116 of file vpPanda3DRendererSet.cpp.
References m_subRenderers.
|
virtual |
This method is not supported for this renderer type. Use the std::string version.
| vpException,as | this method is not supported |
| object | |
| wTo |
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 125 of file vpPanda3DRendererSet.cpp.
References vpException::badValue.
|
inherited |
Definition at line 322 of file vpPanda3DBaseRenderer.cpp.
References m_buffers, and m_renderOrder.
|
virtual |
Set new rendering parameters. If the scene has already been initialized, the renderer camera is updated.
| params | the new rendering parameters |
Reimplemented from vpPanda3DBaseRenderer.
Reimplemented in vpObjectCentricRenderer.
Definition at line 155 of file vpPanda3DRendererSet.cpp.
References vpPanda3DBaseRenderer::m_renderParameters, and m_subRenderers.
Referenced by vpObjectCentricRenderer::setRenderParameters().
|
inlineprotectedvirtual |
Initialize camera. Should be called when the scene root of this render has already been created.
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 233 of file vpPanda3DRendererSet.h.
|
inlineprotectedvirtualinherited |
Initialize buffers and other objects that are required to save the render.
Reimplemented in vpPanda3DGeometryRenderer, vpPanda3DPostProcessFilter, and vpPanda3DRGBRenderer.
Definition at line 283 of file vpPanda3DBaseRenderer.h.
Referenced by initFramework(), and initFromParent().
|
inlineprotectedvirtual |
Initialize the scene for this specific renderer.
Creates a root scene for this node and applies shaders. that will be used for rendering
Reimplemented from vpPanda3DBaseRenderer.
Definition at line 231 of file vpPanda3DRendererSet.h.
|
inherited |
set whether vertical sync is enabled. When vertical sync is enabled, render speed will be limited by the display's refresh rate
| useVsync | Whether to use vsync or not |
Definition at line 362 of file vpPanda3DBaseRenderer.cpp.
Referenced by vpPanda3DBaseRenderer().
|
staticinherited |
Definition at line 387 of file vpPanda3DBaseRenderer.cpp.
References PANDA_T_VISP.
|
staticinherited |
Definition at line 58 of file vpPanda3DBaseRenderer.cpp.
References PANDA_T_VISP.
Referenced by vpObjectCentricRenderer::computeBoundingBox(), and vpObjectCentricRenderer::computeClipping().
|
staticinherited |
Definition at line 393 of file vpPanda3DBaseRenderer.cpp.
References PANDA_T_VISP.
Referenced by vpPanda3DDirectionalLight::addToScene().
|
protectedinherited |
NodePath of the camera.
Definition at line 296 of file vpPanda3DBaseRenderer.h.
Referenced by setRenderOrder(), setRenderParameters(), vpPanda3DPostProcessFilter::setRenderParameters(), vpPanda3DGeometryRenderer::setupRenderTarget(), vpPanda3DPostProcessFilter::setupRenderTarget(), vpPanda3DRGBRenderer::setupRenderTarget(), and ~vpPanda3DBaseRenderer().
|
protectedinherited |
Node containing all the objects and the camera for this renderer.
Definition at line 294 of file vpPanda3DBaseRenderer.h.
Referenced by addNodeToScene(), computeNearAndFarPlanesFromNode(), getCameraPose(), setCameraPose(), setRenderParameters(), setupCamera(), vpPanda3DPostProcessFilter::setupCamera(), and vpPanda3DBaseRenderer().
|
protectedinherited |
Definition at line 295 of file vpPanda3DBaseRenderer.h.
Referenced by computeNearAndFarPlanesFromNode(), getCameraPose(), setCameraPose(), setupCamera(), vpPanda3DPostProcessFilter::setupCamera(), vpPanda3DGeometryRenderer::setupRenderTarget(), vpPanda3DPostProcessFilter::setupRenderTarget(), and vpPanda3DRGBRenderer::setupRenderTarget().
|
protectedinherited |
Set of buffers that this renderer uses. This storage contains weak refs to those buffers and should not deallocate them.
Definition at line 297 of file vpPanda3DBaseRenderer.h.
Referenced by initFramework(), vpPanda3DRendererSet::initFramework(), initFromParent(), initFromParent(), vpPanda3DBaseRenderer(), and ~vpPanda3DBaseRenderer().
|
protectedinherited |
Inverse of VISP_T_PANDA.
Definition at line 289 of file vpPanda3DBaseRenderer.h.
Referenced by getName(), setName(), vpPanda3DPostProcessFilter::setupRenderTarget(), setupScene(), vpPanda3DGeometryRenderer::setupScene(), and vpPanda3DBaseRenderer().
|
protectedinherited |
name of the renderer
Definition at line 290 of file vpPanda3DBaseRenderer.h.
Referenced by getRenderOrder(), setRenderOrder(), vpPanda3DGeometryRenderer::setupRenderTarget(), vpPanda3DPostProcessFilter::setupRenderTarget(), vpPanda3DRGBRenderer::setupRenderTarget(), vpPanda3DBaseRenderer(), and vpPanda3DPostProcessFilter::vpPanda3DPostProcessFilter().
|
protectedinherited |
Pointer to owning window, which can create buffers etc. It is not necessarily visible.
Definition at line 292 of file vpPanda3DBaseRenderer.h.
Referenced by vpPanda3DRendererSet::addSubRenderer(), vpObjectCentricRenderer::beforeFrameRendered(), vpPanda3DGeometryRenderer::beforeFrameRendered(), vpObjectCentricRenderer::computeBoundingBox(), vpPanda3DDepthCannyFilter::getRender(), vpPanda3DDepthCannyFilter::getRender(), vpPanda3DGeometryRenderer::getRender(), vpPanda3DGeometryRenderer::getRender(), vpPanda3DGeometryRenderer::getRender(), vpPanda3DGeometryRenderer::getRender(), vpPanda3DPostProcessFilter::getRenderBasic(), vpPanda3DPostProcessFilter::getRenderBasic(), initFramework(), vpPanda3DRendererSet::initFramework(), vpObjectCentricRenderer::placeRenderInto(), vpPanda3DDepthCannyFilter::setEdgeThreshold(), setRenderParameters(), vpPanda3DPostProcessFilter::setRenderParameters(), vpPanda3DRendererSet::setRenderParameters(), setupCamera(), vpPanda3DGeometryRenderer::setupRenderTarget(), vpPanda3DPostProcessFilter::setupRenderTarget(), vpPanda3DRGBRenderer::setupRenderTarget(), vpObjectCentricRenderer::vpObjectCentricRenderer(), and vpPanda3DRendererSet::vpPanda3DRendererSet().
|
protectedinherited |
Rendering parameters.
Definition at line 293 of file vpPanda3DBaseRenderer.h.
Referenced by addNodeToScene(), vpPanda3DRGBRenderer::addNodeToScene(), vpPanda3DGeometryRenderer::beforeFrameRendered(), clearScene(), computeNearAndFarPlanesFromNode(), getNodePose(), getRenderRoot(), printStructure(), vpPanda3DCanny::setEdgeThreshold(), vpPanda3DDepthCannyFilter::setEdgeThreshold(), setNodePose(), vpPanda3DPostProcessFilter::setRenderParameters(), setupCamera(), vpPanda3DPostProcessFilter::setupCamera(), setupScene(), vpPanda3DCanny::setupScene(), vpPanda3DDepthCannyFilter::setupScene(), vpPanda3DGeometryRenderer::setupScene(), vpPanda3DPostProcessFilter::setupScene(), and vpPanda3DRGBRenderer::setupScene().
|
protected |
Definition at line 235 of file vpPanda3DRendererSet.h.
Referenced by addLight(), addNodeToScene(), addSubRenderer(), afterFrameRendered(), vpObjectCentricRenderer::beforeFrameRendered(), beforeFrameRendered(), clearScene(), vpObjectCentricRenderer::computeBoundingBox(), vpObjectCentricRenderer::computeBoundingBox3DPoints(), vpObjectCentricRenderer::computeClipping(), enableSharedDepthBuffer(), getCameraPose(), getNodePose(), getRenderer(), getRenderer(), initFramework(), initFromParent(), initFromParent(), setCameraPose(), setNodePose(), and setRenderParameters().
|
protectedinherited |
Rendering priority for this renderer and its buffers. A lower value will be rendered first. Should be used when calling make_output in setupRenderTarget().
Definition at line 291 of file vpPanda3DBaseRenderer.h.
Referenced by vpPanda3DRendererSet::addSubRenderer(), getWindowFramework(), initFramework(), vpPanda3DRendererSet::initFramework(), initFromParent(), initFromParent(), vpPanda3DRendererSet::initFromParent(), loadObject(), renderFrame(), vpPanda3DPostProcessFilter::setRenderParameters(), setupCamera(), vpPanda3DPostProcessFilter::setupCamera(), vpPanda3DGeometryRenderer::setupRenderTarget(), vpPanda3DPostProcessFilter::setupRenderTarget(), vpPanda3DRGBRenderer::setupRenderTarget(), setupScene(), vpPanda3DGeometryRenderer::setupScene(), vpPanda3DBaseRenderer(), and ~vpPanda3DBaseRenderer().
|
staticprotectedinherited |
Homogeneous transformation matrix to convert from the Panda coordinate system (right-handed Z-up) to the ViSP coordinate system (right-handed Y-Down).
Definition at line 286 of file vpPanda3DBaseRenderer.h.
Referenced by computeNearAndFarPlanesFromNode(), getNodePose(), vispPointToPanda(), vispToPanda(), and vispVectorToPanda().
|
staticprotectedinherited |
Definition at line 285 of file vpPanda3DBaseRenderer.h.
Referenced by pandaToVisp(), and setNodePose().