Visual Servoing Platform version 3.7.0
Loading...
Searching...
No Matches
vpPanda3DDepthGaussianBlur Class Reference

#include <vpPanda3DDepthFilters.h>

Inheritance diagram for vpPanda3DDepthGaussianBlur:

Public Member Functions

 vpPanda3DDepthGaussianBlur (const std::string &name, std::shared_ptr< vpPanda3DBaseRenderer > inputRenderer, bool isOutput)
FrameBufferProperties getBufferProperties () const VP_OVERRIDE
void getRender (vpImage< unsigned char > &I) const
bool isRendering3DScene () const VP_OVERRIDE
PointerTo< GraphicsOutput > getMainOutputBuffer () VP_OVERRIDE
void afterFrameRendered () VP_OVERRIDE
virtual void initFramework ()
virtual void initFromParent (PointerTo< WindowFramework > window)
virtual void initFromParent (const vpPanda3DBaseRenderer &renderer)
virtual void beforeFrameRendered ()
virtual void renderFrame ()
const std::string & getName () const
void setName (const std::string &name)
NodePath & getRenderRoot ()
virtual void clearScene ()
int getRenderOrder () const
void setRenderOrder (int order)
virtual void setCameraPose (const vpHomogeneousMatrix &wTc)
virtual vpHomogeneousMatrix getCameraPose ()
virtual void setNodePose (const std::string &name, const vpHomogeneousMatrix &wTo)
virtual void setNodePose (NodePath &object, const vpHomogeneousMatrix &wTo)
virtual vpHomogeneousMatrix getNodePose (const std::string &name)
virtual vpHomogeneousMatrix getNodePose (NodePath &object)
void computeNearAndFarPlanesFromNode (const std::string &name, float &nearV, float &farV, bool fast)
NodePath loadObject (const std::string &nodeName, const std::string &modelPath)
virtual void addNodeToScene (const NodePath &object)
virtual void addObjectToScene (const std::string &name, const std::string &path)
void setVerticalSyncEnabled (bool useVsync)
void setAbortOnPandaError (bool abort)
void enableDebugLog ()
void printStructure ()
virtual void enableSharedDepthBuffer (vpPanda3DBaseRenderer &sourceBuffer)
PointerTo< WindowFramework > & getWindowFramework ()

Static Public Member Functions

static vpColVector vispPointToPanda (const vpColVector &point)
static vpColVector vispVectorToPanda (const vpColVector &vec)
static const vpHomogeneousMatrixpandaToVisp ()
static const vpHomogeneousMatrixvispToPanda ()

Protected Member Functions

virtual void setupScene () VP_OVERRIDE
void setupCamera () VP_OVERRIDE
void setupRenderTarget () VP_OVERRIDE
void setRenderParameters (const vpPanda3DRenderParameters &params) VP_OVERRIDE
void getRenderBasic (vpImage< unsigned char > &I) const
void getRenderBasic (vpImage< vpRGBf > &I) const
virtual PointerTo< Texture > setupTexture (const FrameBufferProperties &fbp) const

Protected Attributes

std::shared_ptr< vpPanda3DBaseRendererm_inputRenderer
bool m_isOutput
std::string m_fragmentShader
PointerTo< Shader > m_shader
PointerTo< Texture > m_texture
PointerTo< GraphicsOutput > m_buffer
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 std::string FILTER_VERTEX_SHADER
static const vpHomogeneousMatrix VISP_T_PANDA
static const vpHomogeneousMatrix PANDA_T_VISP

Detailed Description

Tutorials & Examples

Tutorials
If you want to have an in-depth presentation of the Render-Based Tracker (RBT), you may have a look at:

Definition at line 60 of file vpPanda3DDepthFilters.h.

Constructor & Destructor Documentation

◆ vpPanda3DDepthGaussianBlur()

vpPanda3DDepthGaussianBlur::vpPanda3DDepthGaussianBlur ( const std::string & name,
std::shared_ptr< vpPanda3DBaseRenderer > inputRenderer,
bool isOutput )

Member Function Documentation

◆ addNodeToScene()

void vpPanda3DBaseRenderer::addNodeToScene ( const NodePath & object)
virtualinherited

Add a node to the scene. Its pose is set as the identity matrix.

Parameters
object

Reimplemented in vpPanda3DRendererSet, and vpPanda3DRGBRenderer.

Definition at line 347 of file vpPanda3DBaseRenderer.cpp.

References m_camera, m_renderRoot, vpException::notInitialized, and setNodePose().

Referenced by addObjectToScene().

◆ addObjectToScene()

void vpPanda3DBaseRenderer::addObjectToScene ( const std::string & name,
const std::string & path )
virtualinherited

Load and and an object to the scene.

Parameters
name
path

Definition at line 357 of file vpPanda3DBaseRenderer.cpp.

References addNodeToScene(), and loadObject().

◆ afterFrameRendered()

void vpPanda3DPostProcessFilter::afterFrameRendered ( )
inlinevirtualinherited

Reimplemented from vpPanda3DBaseRenderer.

Definition at line 82 of file vpPanda3DPostProcessFilter.h.

References vpPanda3DBaseRenderer::afterFrameRendered(), and m_isOutput.

◆ beforeFrameRendered()

virtual void vpPanda3DBaseRenderer::beforeFrameRendered ( )
inlinevirtualinherited

Reimplemented in vpObjectCentricRenderer, vpPanda3DGeometryRenderer, and vpPanda3DRendererSet.

Definition at line 89 of file vpPanda3DBaseRenderer.h.

Referenced by renderFrame().

◆ clearScene()

virtual void vpPanda3DBaseRenderer::clearScene ( )
inlinevirtualinherited

Reimplemented in vpPanda3DRendererSet.

Definition at line 108 of file vpPanda3DBaseRenderer.h.

References m_renderRoot.

◆ computeNearAndFarPlanesFromNode()

void vpPanda3DBaseRenderer::computeNearAndFarPlanesFromNode ( const std::string & name,
float & nearV,
float & farV,
bool fast )
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.

Warning
Depending on geometry complexity, this may be an expensive operation.
if the object lies partly behind the camera, the near plane value will be zero. If it fully behind, the far plane will also be zero. If these near/far values are used to update the rendering parameters of the camera, this may result in an invalid projection matrix.
Parameters
namename of the node that should be used to compute near and far values.
nearVresulting near clipping plane distance
farVresulting far clipping plane distance
fastWhether 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.

◆ enableDebugLog()

void vpPanda3DBaseRenderer::enableDebugLog ( )
inherited
Examples
tutorial-panda3d-renderer.cpp.

Definition at line 381 of file vpPanda3DBaseRenderer.cpp.

◆ enableSharedDepthBuffer()

void vpPanda3DBaseRenderer::enableSharedDepthBuffer ( vpPanda3DBaseRenderer & sourceBuffer)
virtualinherited

◆ getBufferProperties()

FrameBufferProperties vpPanda3DDepthGaussianBlur::getBufferProperties ( ) const
virtual

Implements vpPanda3DPostProcessFilter.

Definition at line 86 of file vpPanda3DDepthFilters.cpp.

◆ getCameraPose()

vpHomogeneousMatrix vpPanda3DBaseRenderer::getCameraPose ( )
virtualinherited

Retrieve the camera's pose, in the world frame. The pose is specified using the ViSP convention (Y-down right handed).

Reimplemented in vpPanda3DRendererSet.

Definition at line 198 of file vpPanda3DBaseRenderer.cpp.

References getNodePose(), m_camera, m_cameraPath, and vpException::notInitialized.

Referenced by computeNearAndFarPlanesFromNode().

◆ getMainOutputBuffer()

PointerTo< GraphicsOutput > vpPanda3DPostProcessFilter::getMainOutputBuffer ( )
inlinevirtualinherited

Reimplemented from vpPanda3DBaseRenderer.

Definition at line 80 of file vpPanda3DPostProcessFilter.h.

References m_buffer.

◆ getName()

const std::string & vpPanda3DBaseRenderer::getName ( ) const
inlineinherited

Get the name of the renderer.

Returns
const std::string&

Definition at line 98 of file vpPanda3DBaseRenderer.h.

References m_name.

◆ getNodePose() [1/2]

vpHomogeneousMatrix vpPanda3DBaseRenderer::getNodePose ( const std::string & name)
virtualinherited

Get the pose of a Panda node, in world frame in the ViSP convention (Y-down right handed).

Parameters
nameNode path to search for.
See also
setNodePose(const std::string &, const vpHomogeneousMatrix &) for more info
Returns
wTo, the pose of the object in world frame
Exceptions
ifno node can be found from the given path.

Reimplemented in vpPanda3DRendererSet.

Definition at line 221 of file vpPanda3DBaseRenderer.cpp.

References vpException::badValue, getNodePose(), and m_renderRoot.

Referenced by computeNearAndFarPlanesFromNode(), getCameraPose(), and getNodePose().

◆ getNodePose() [2/2]

vpHomogeneousMatrix vpPanda3DBaseRenderer::getNodePose ( NodePath & object)
virtualinherited

Get the pose of a Panda node, in world frame in the ViSP convention (Y-down right handed). This version of the method directly uses the Panda Nodepath.

Reimplemented in vpPanda3DRendererSet.

Definition at line 230 of file vpPanda3DBaseRenderer.cpp.

References PANDA_T_VISP.

◆ getRender()

void vpPanda3DDepthGaussianBlur::getRender ( vpImage< unsigned char > & I) const

◆ getRenderBasic() [1/2]

void vpPanda3DPostProcessFilter::getRenderBasic ( vpImage< unsigned char > & I) const
protectedinherited

◆ getRenderBasic() [2/2]

void vpPanda3DPostProcessFilter::getRenderBasic ( vpImage< vpRGBf > & I) const
protectedinherited

◆ getRenderOrder()

int vpPanda3DBaseRenderer::getRenderOrder ( ) const
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.

Returns
int

Definition at line 134 of file vpPanda3DBaseRenderer.h.

References m_renderOrder.

◆ getRenderRoot()

NodePath & vpPanda3DBaseRenderer::getRenderRoot ( )
inlineinherited

Get the scene root.

Definition at line 106 of file vpPanda3DBaseRenderer.h.

References m_renderRoot.

◆ getWindowFramework()

PointerTo< WindowFramework > & vpPanda3DBaseRenderer::getWindowFramework ( )
inlineinherited

Definition at line 261 of file vpPanda3DBaseRenderer.h.

References m_window.

Referenced by vpPanda3DFrameworkManager::enableSingleRenderer().

◆ initFramework()

void vpPanda3DBaseRenderer::initFramework ( )
virtualinherited

Initialize the whole Panda3D framework. Create a new PandaFramework object and a new window.

Will also perform the renderer setup (scene, camera and render targets)

Reimplemented in vpPanda3DRendererSet.

Definition at line 81 of file vpPanda3DBaseRenderer.cpp.

References vpException::badValue, vpPanda3DFrameworkManager::getFramework(), vpPanda3DFrameworkManager::getInstance(), vpPanda3DFrameworkManager::initFramework(), m_isWindowOwner, m_renderParameters, m_window, vpException::notInitialized, setupCamera(), setupRenderTarget(), and setupScene().

◆ initFromParent() [1/2]

void vpPanda3DBaseRenderer::initFromParent ( const vpPanda3DBaseRenderer & renderer)
virtualinherited

◆ initFromParent() [2/2]

void vpPanda3DBaseRenderer::initFromParent ( PointerTo< WindowFramework > window)
virtualinherited

◆ isRendering3DScene()

bool vpPanda3DPostProcessFilter::isRendering3DScene ( ) const
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 from vpPanda3DBaseRenderer.

Definition at line 75 of file vpPanda3DPostProcessFilter.h.

◆ loadObject()

NodePath vpPanda3DBaseRenderer::loadObject ( const std::string & nodeName,
const std::string & modelPath )
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.

Parameters
nodeNamethe name that will be used when inserting the node in the scene graph
modelPathPath to the model file
Returns
NodePath The NodePath containing the 3D model, which can now be added to the scene graph.
Examples
tutorial-panda3d-renderer.cpp.

Definition at line 331 of file vpPanda3DBaseRenderer.cpp.

References vpPanda3DFrameworkManager::getFramework(), vpPanda3DFrameworkManager::getInstance(), vpException::ioError, and m_window.

Referenced by addObjectToScene().

◆ pandaToVisp()

const vpHomogeneousMatrix & vpPanda3DBaseRenderer::pandaToVisp ( )
staticinherited

Definition at line 56 of file vpPanda3DBaseRenderer.cpp.

References VISP_T_PANDA.

◆ printStructure()

void vpPanda3DBaseRenderer::printStructure ( )
inherited

Definition at line 399 of file vpPanda3DBaseRenderer.cpp.

References m_renderRoot.

◆ renderFrame()

◆ setAbortOnPandaError()

void vpPanda3DBaseRenderer::setAbortOnPandaError ( bool abort)
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.

Parameters
abortwhether to abort (true) or display a message when an assertion fails.
Examples
tutorial-panda3d-renderer.cpp.

Definition at line 371 of file vpPanda3DBaseRenderer.cpp.

◆ setCameraPose()

void vpPanda3DBaseRenderer::setCameraPose ( const vpHomogeneousMatrix & wTc)
virtualinherited

Set the camera's pose. The pose is specified using the ViSP convention (Y-down right handed).

Parameters
wTcthe new pose of the camera, in world frame

Reimplemented in vpPanda3DRendererSet.

Definition at line 190 of file vpPanda3DBaseRenderer.cpp.

References m_camera, m_cameraPath, vpException::notInitialized, and setNodePose().

◆ setName()

void vpPanda3DBaseRenderer::setName ( const std::string & name)
inlineinherited

Definition at line 100 of file vpPanda3DBaseRenderer.h.

References m_name.

◆ setNodePose() [1/2]

void vpPanda3DBaseRenderer::setNodePose ( const std::string & name,
const vpHomogeneousMatrix & wTo )
virtualinherited

Set the pose of a node. This node can be any Panda object (light, mesh, camera). The pose is specified using the ViSP convention (Y-down right handed).

Parameters
nameNode path to search for, from the render root. This is the object that will be modified See https://docs.panda3d.org/1.10/python/programming/scene-graph/searching-scene-graph
wToPose of the object in the world frame
Exceptions
ifthe corresponding node cannot be found.

Reimplemented in vpPanda3DRendererSet.

Definition at line 206 of file vpPanda3DBaseRenderer.cpp.

References m_renderRoot, and setNodePose().

Referenced by addNodeToScene(), vpPanda3DRGBRenderer::addNodeToScene(), setCameraPose(), and setNodePose().

◆ setNodePose() [2/2]

void vpPanda3DBaseRenderer::setNodePose ( NodePath & object,
const vpHomogeneousMatrix & wTo )
virtualinherited

Set the pose of a node. The pose is specified using the ViSP convention (Y-down right handed). This node can be any Panda object (light, mesh, camera).

Parameters
objectThe object for which to set the pose
wToPose of the object in the world frame

Reimplemented in vpPanda3DRendererSet.

Definition at line 212 of file vpPanda3DBaseRenderer.cpp.

References vpHomogeneousMatrix::getRotationMatrix(), vpHomogeneousMatrix::getTranslationVector(), VISP_T_PANDA, vpQuaternionVector::w(), vpQuaternionVector::x(), vpQuaternionVector::y(), and vpQuaternionVector::z().

◆ setRenderOrder()

void vpPanda3DBaseRenderer::setRenderOrder ( int order)
inherited

Definition at line 322 of file vpPanda3DBaseRenderer.cpp.

References m_buffers, and m_renderOrder.

◆ setRenderParameters()

void vpPanda3DPostProcessFilter::setRenderParameters ( const vpPanda3DRenderParameters & params)
protectedvirtualinherited

Set new rendering parameters. If the scene has already been initialized, the renderer camera is updated.

Parameters
paramsthe new rendering parameters

Reimplemented from vpPanda3DBaseRenderer.

Definition at line 136 of file vpPanda3DPostProcessFilter.cpp.

References vpException::fatalError, vpPanda3DRenderParameters::getImageHeight(), vpPanda3DRenderParameters::getImageWidth(), vpPanda3DBaseRenderer::m_buffers, m_inputRenderer, vpPanda3DBaseRenderer::m_renderParameters, vpPanda3DBaseRenderer::m_renderRoot, and vpPanda3DBaseRenderer::m_window.

◆ setupCamera()

void vpPanda3DPostProcessFilter::setupCamera ( )
protectedvirtualinherited

Initialize camera. Should be called when the scene root of this render has already been created.

Reimplemented from vpPanda3DBaseRenderer.

Definition at line 75 of file vpPanda3DPostProcessFilter.cpp.

References vpPanda3DBaseRenderer::m_camera, vpPanda3DBaseRenderer::m_cameraPath, vpPanda3DBaseRenderer::m_renderRoot, and vpPanda3DBaseRenderer::m_window.

◆ setupRenderTarget()

void vpPanda3DPostProcessFilter::setupRenderTarget ( )
protectedvirtualinherited

◆ setupScene()

void vpPanda3DPostProcessFilter::setupScene ( )
protectedvirtualinherited

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.

Reimplemented in vpPanda3DCanny, and vpPanda3DDepthCannyFilter.

Definition at line 54 of file vpPanda3DPostProcessFilter.cpp.

References vpException::fatalError, FILTER_VERTEX_SHADER, m_fragmentShader, m_inputRenderer, vpPanda3DBaseRenderer::m_renderRoot, and m_shader.

Referenced by vpPanda3DCanny::setupScene(), and vpPanda3DDepthCannyFilter::setupScene().

◆ setupTexture()

PointerTo< Texture > vpPanda3DPostProcessFilter::setupTexture ( const FrameBufferProperties & fbp) const
protectedvirtualinherited

Reimplemented in vpPanda3DDepthCannyFilter.

Definition at line 88 of file vpPanda3DPostProcessFilter.cpp.

Referenced by getBufferProperties(), and setupRenderTarget().

◆ setVerticalSyncEnabled()

void vpPanda3DBaseRenderer::setVerticalSyncEnabled ( bool useVsync)
inherited

set whether vertical sync is enabled. When vertical sync is enabled, render speed will be limited by the display's refresh rate

Parameters
useVsyncWhether to use vsync or not
Examples
tutorial-panda3d-renderer.cpp.

Definition at line 362 of file vpPanda3DBaseRenderer.cpp.

Referenced by vpPanda3DBaseRenderer().

◆ vispPointToPanda()

vpColVector vpPanda3DBaseRenderer::vispPointToPanda ( const vpColVector & point)
staticinherited

Definition at line 387 of file vpPanda3DBaseRenderer.cpp.

References PANDA_T_VISP.

◆ vispToPanda()

const vpHomogeneousMatrix & vpPanda3DBaseRenderer::vispToPanda ( )
staticinherited

◆ vispVectorToPanda()

vpColVector vpPanda3DBaseRenderer::vispVectorToPanda ( const vpColVector & vec)
staticinherited

Definition at line 393 of file vpPanda3DBaseRenderer.cpp.

References PANDA_T_VISP.

Referenced by vpPanda3DDirectionalLight::addToScene().

Member Data Documentation

◆ FILTER_VERTEX_SHADER

BEGIN_VISP_NAMESPACE const std::string vpPanda3DPostProcessFilter::FILTER_VERTEX_SHADER
staticprotectedinherited
Initial value:
=
"#version 330\n"
"in vec4 p3d_Vertex;\n"
"uniform mat4 p3d_ModelViewProjectionMatrix;\n"
"in vec2 p3d_MultiTexCoord0;\n"
"out vec2 texcoords;\n"
"void main()\n"
"{\n"
" gl_Position = p3d_ModelViewProjectionMatrix * p3d_Vertex;\n"
" texcoords = p3d_MultiTexCoord0;\n"
"}\n"

Definition at line 111 of file vpPanda3DPostProcessFilter.h.

Referenced by setupScene().

◆ m_buffer

PointerTo<GraphicsOutput> vpPanda3DPostProcessFilter::m_buffer
protectedinherited

Definition at line 109 of file vpPanda3DPostProcessFilter.h.

Referenced by getMainOutputBuffer(), and setupRenderTarget().

◆ m_buffers

◆ m_camera

PointerTo<Camera> vpPanda3DBaseRenderer::m_camera
protectedinherited

◆ m_cameraPath

◆ m_fragmentShader

std::string vpPanda3DPostProcessFilter::m_fragmentShader
protectedinherited

Whether this filter is an output to be used and should be copied to ram.

Definition at line 106 of file vpPanda3DPostProcessFilter.h.

Referenced by setupScene(), and vpPanda3DPostProcessFilter().

◆ m_inputRenderer

std::shared_ptr<vpPanda3DBaseRenderer> vpPanda3DPostProcessFilter::m_inputRenderer
protectedinherited

◆ m_isOutput

◆ m_isWindowOwner

bool vpPanda3DBaseRenderer::m_isWindowOwner
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().

◆ m_name

std::string vpPanda3DBaseRenderer::m_name
protectedinherited

◆ m_renderOrder

◆ m_renderParameters

◆ m_renderRoot

◆ m_shader

PointerTo<Shader> vpPanda3DPostProcessFilter::m_shader
protectedinherited

Definition at line 107 of file vpPanda3DPostProcessFilter.h.

Referenced by setupScene().

◆ m_texture

PointerTo<Texture> vpPanda3DPostProcessFilter::m_texture
protectedinherited

◆ m_window

◆ PANDA_T_VISP

const vpHomogeneousMatrix vpPanda3DBaseRenderer::PANDA_T_VISP
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().

◆ VISP_T_PANDA

BEGIN_VISP_NAMESPACE const vpHomogeneousMatrix vpPanda3DBaseRenderer::VISP_T_PANDA
staticprotectedinherited

Definition at line 285 of file vpPanda3DBaseRenderer.h.

Referenced by pandaToVisp(), and setNodePose().