15 #ifndef niftkVLMapper_h
16 #define niftkVLMapper_h
18 #include <niftkVLExports.h>
21 #include <vlCore/Vector3.hpp>
22 #include <vlCore/Vector4.hpp>
23 #include <vlCore/vlnamespace.hpp>
24 #include <vlGraphics/Texture.hpp>
25 #include <vlVivid/VividRendering.hpp>
27 #include <mitkDataNode.h>
28 #include <mitkBaseData.h>
36 #include <cuda_gl_interop.h>
39 #define VL_CUDA_STREAM_NAME "VL-CUDA-STREAM"
51 class CoordinateAxesData;
65 class NIFTKVL_EXPORT
VLMapper :
public vl::Object
78 static vl::ref<VLMapper> create(
const mitk::DataNode* node,
VLSceneView*);
83 virtual bool init() = 0;
88 virtual void update() = 0;
93 virtual void remove() {
94 m_VividRendering->sceneManager()->tree()->eraseActor(m_Actor.get());
108 vl::Actor*
actor() {
return m_Actor.get(); }
109 const vl::Actor*
actor()
const {
return m_Actor.get(); }
145 actor()->effect()->shader()->getUniform(
"vl_Vivid.renderMode")->setUniformI( mode );
148 return (vl::Vivid::ERenderingMode)actor()->effect()->shader()->getUniform(
"vl_Vivid.renderMode")->getUniformI();
157 actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.color")->setUniform( color );
160 return actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.color")->getUniform4F();
167 actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.width")->setUniformF( width );
170 return actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.width")->getUniformF();
177 actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.slicePlane")->setUniform( plane );
180 return actor()->effect()->shader()->getUniform(
"vl_Vivid.outline.slicePlane")->getUniform4F();
190 std::vector< vl::ref<vl::Actor> >::iterator it = std::find( m_VividRendering->stencilActors().begin(), m_VividRendering->stencilActors().end(), actor() );
191 if ( ! is_stencil && it != m_VividRendering->stencilActors().end() ) {
192 m_VividRendering->stencilActors().erase( it );
194 if ( is_stencil && it == m_VividRendering->stencilActors().end() ) {
195 m_VividRendering->stencilActors().push_back( m_Actor );
199 return std::find( m_VividRendering->stencilActors().begin(), m_VividRendering->stencilActors().end(), actor() ) != m_VividRendering->stencilActors().end();
214 actor()->effect()->shader()->getUniform(
"vl_Vivid.enableLighting" )->setUniformI( enable );
217 return actor()->effect()->shader()->getUniform(
"vl_Vivid.enableLighting" )->getUniformI();
226 actor()->effect()->shader()->getMaterial()->setFrontDiffuse( rgba );
229 return actor()->effect()->shader()->getMaterial()->frontDiffuse();
236 actor()->effect()->shader()->getMaterial()->setFrontSpecular( color );
239 return actor()->effect()->shader()->getMaterial()->frontSpecular();
246 actor()->effect()->shader()->getMaterial()->setFrontShininess( shininess );
249 return actor()->effect()->shader()->getMaterial()->frontShininess();
259 actor()->effect()->shader()->getUniform(
"vl_Vivid.enableTextureMapping" )->setUniformI( enable );
262 return actor()->effect()->shader()->getUniform(
"vl_Vivid.enableTextureMapping" )->getUniformI();
270 actor()->effect()->shader()->gocTextureSampler( vl::Vivid::UserTexture )->setTexture( tex );
273 return actor()->effect()->shader()->getTextureSampler( vl::Vivid::UserTexture )->texture();
276 return actor()->effect()->shader()->getTextureSampler( vl::Vivid::UserTexture )->texture();
285 actor()->effect()->shader()->getUniform(
"vl_Vivid.enablePointSprite" )->setUniformI( enable );
288 return actor()->effect()->shader()->getUniform(
"vl_Vivid.enablePointSprite" )->getUniformI();
294 vl::PointSize*
pointSize() {
return actor()->effect()->shader()->getPointSize(); }
295 const vl::PointSize*
pointSize()
const {
return actor()->effect()->shader()->getPointSize(); }
302 vl::PolygonMode*
polygonMode() {
return actor()->effect()->shader()->getPolygonMode(); }
303 const vl::PolygonMode*
polygonMode()
const {
return actor()->effect()->shader()->getPolygonMode(); }
313 actor()->effect()->shader()->getUniform(
"vl_Vivid.smartFog.mode")->setUniformI( mode );
316 return (vl::Vivid::EFogMode)actor()->effect()->shader()->getUniform(
"vl_Vivid.smartFog.mode")->getUniformI();
323 actor()->effect()->shader()->getUniform(
"vl_Vivid.smartFog.target")->setUniformI( target );
326 return (vl::Vivid::ESmartTarget)actor()->effect()->shader()->getUniform(
"vl_Vivid.smartFog.target")->getUniformI();
333 actor()->effect()->shader()->gocFog()->setColor( color );
336 return actor()->effect()->shader()->getFog()->color();
343 actor()->effect()->shader()->gocFog()->setStart( start );
346 return actor()->effect()->shader()->getFog()->start();
353 actor()->effect()->shader()->gocFog()->setEnd( end );
356 return actor()->effect()->shader()->getFog()->end();
363 actor()->effect()->shader()->gocFog()->setDensity( density );
366 return actor()->effect()->shader()->getFog()->density();
371 #define VL_SMARTCLIP(var) (std::string("vl_Vivid.smartClip[") + (char)('0' + i) + "]." + var).c_str()
385 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"mode"))->setUniformI( mode );
388 return (vl::Vivid::EClipMode)actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"mode"))->getUniformI();
395 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"target"))->setUniformI( target );
398 return (vl::Vivid::ESmartTarget)actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"target"))->getUniformI();
405 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"fadeRange"))->setUniformF( fadeRange );
408 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"fadeRange"))->getUniformF();
415 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"color"))->setUniform( color );
418 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"color"))->getUniform4F();
425 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"plane"))->setUniform( plane );
428 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"plane"))->getUniform4F();
435 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"sphere"))->setUniform( sphere );
438 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"sphere"))->getUniform4F();
445 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"boxMin"))->setUniform( boxMin );
448 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"boxMin"))->getUniform3F();
455 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"boxMax"))->setUniform( boxMax );
458 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"boxMax"))->getUniform3F();
465 actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"reverse"))->setUniformI( reverse );
468 return actor()->effect()->shader()->getUniform(
VL_SMARTCLIP(
"reverse"))->getUniformI();
475 vl::ref<vl::Actor> initActor(vl::Geometry* geom, vl::Effect* fx = NULL, vl::Transform* tr = NULL);
496 virtual void update();
498 virtual void updateVLGlobalSettings();
510 virtual void update();
525 virtual void update();
529 const vl::ArrayFloat3*
vertexArray()
const {
return m_VertexArray.get(); }
533 const vl::ArrayFloat3*
texCoordarray()
const {
return m_TexCoordArray.get(); }
549 virtual void update();
564 virtual void update();
577 virtual void updatePoints(
const vl::vec4&
color ) = 0 ;
579 void initPointSetProps();
583 virtual void update();
609 virtual void updatePoints(
const vl::vec4&
color );
622 VLMapperPCL(
const mitk::DataNode* node,
VLSceneView* sv );
624 virtual void updatePoints(
const vl::vec4& );
636 class NIFTKVL_EXPORT VLMapperCUDAImage:
public VLMapper
639 VLMapperCUDAImage(
const mitk::DataNode* node, VLSceneView* sv );
645 virtual void update();
647 virtual void remove();
650 cudaGraphicsResource_t m_CudaResource;
651 vl::ref<vl::Texture> m_Texture;
void setMaterialSpecularColor(const vl::vec4 &color)
Definition: niftkVLMapper.h:235
void setOutlineSlicePlane(const vl::vec4 &plane)
Definition: niftkVLMapper.h:176
GLboolean enable
Definition: glew.h:2642
Definition: niftkVLMapper.h:573
vl::vec4 outlineColor() const
Definition: niftkVLMapper.h:159
void setFogStart(float start)
Definition: niftkVLMapper.h:342
vl::ref< vl::ArrayFloat3 > m_VertexArray
Definition: niftkVLMapper.h:537
const CoordinateAxesData * m_MitkAxes
Definition: niftkVLMapper.h:567
void setRenderingMode(vl::Vivid::ERenderingMode mode)
Definition: niftkVLMapper.h:144
float fogDensity() const
Definition: niftkVLMapper.h:365
bool isDataNodeVividUpdateEnabled() const
Definition: niftkVLMapper.h:121
void setClipMode(int i, vl::Vivid::EClipMode mode)
Definition: niftkVLMapper.h:384
bool m_3DSphereMode
Definition: niftkVLMapper.h:592
const vl::Texture * texture() const
Definition: niftkVLMapper.h:275
vl::vec4 clipSphere(int i) const
Definition: niftkVLMapper.h:437
mitk::Image * m_MitkImage
Definition: niftkVLMapper.h:536
void setClipSphere(int i, const vl::vec4 &sphere)
Definition: niftkVLMapper.h:434
Definition: niftkVLMapper.h:489
void setLightingEnabled(bool enable)
Definition: niftkVLMapper.h:213
#define VIVID_CHECK(expr)
Definition: niftkVLUtils.h:40
vl::ref< vl::Geometry > m_3DSphereGeom
Definition: niftkVLMapper.h:594
vl::ref< vl::ArrayFloat3 > m_Vertices
Definition: niftkVLMapper.h:568
float fogEnd() const
Definition: niftkVLMapper.h:355
const vl::PolygonMode * polygonMode() const
Definition: niftkVLMapper.h:303
Definition: ReceptorMemberCommandTest.cxx:25
vl::vec3 clipBoxMin(int i) const
Definition: niftkVLMapper.h:447
void setFogTarget(vl::Vivid::ESmartTarget target)
Definition: niftkVLMapper.h:322
mitk::DataStorage * m_DataStorage
Definition: niftkVLMapper.h:480
GLenum mode
Definition: glew.h:2404
vl::ArrayFloat3 * texCoordarray()
This texture coordinates array contains 4 3D texture coordinates one for each plane corner...
Definition: niftkVLMapper.h:532
vl::OpenGLContext * m_OpenGLContext
Definition: niftkVLMapper.h:478
void setFogColor(const vl::vec4 &color)
Definition: niftkVLMapper.h:332
vl::ref< vl::Geometry > m_2DGeometry
Definition: niftkVLMapper.h:596
vl::Vivid::ESmartTarget fogTarget() const
Definition: niftkVLMapper.h:325
vl::ref< vl::Effect > m_Point2DFX
Definition: niftkVLMapper.h:595
vl::vec3 clipBoxMax(int i) const
Definition: niftkVLMapper.h:457
void setMaterialDiffuseRGBA(const vl::vec4 &rgba)
Definition: niftkVLMapper.h:225
bool clipReverse(int i) const
Definition: niftkVLMapper.h:467
GLuint GLuint end
Definition: glew.h:1237
void setIsStencil(bool is_stencil)
Definition: niftkVLMapper.h:188
Definition: niftkVLMapper.h:518
bool isTextureMappingEnabled() const
Definition: niftkVLMapper.h:261
const vl::vec4 & fogColor() const
Definition: niftkVLMapper.h:335
A vl::UIEventListener bound to a QGLWidget (niftk::VLWidget) managing all VL/Vivid rendering and opti...
Definition: niftkVLSceneView.h:70
vl::ref< vl::ActorTree > m_SphereActors
Definition: niftkVLMapper.h:593
const vl::ArrayFloat3 * vertexArray() const
Definition: niftkVLMapper.h:529
void setClipBoxMin(int i, const vl::vec3 &boxMin)
Definition: niftkVLMapper.h:444
GLuint start
Definition: glew.h:1237
vl::vec4 clipColor(int i) const
Definition: niftkVLMapper.h:417
void setClipColor(int i, const vl::vec4 &color)
Definition: niftkVLMapper.h:414
bool isPointSpriteEnabled() const
Definition: niftkVLMapper.h:287
A VL representation of a mitk::DataNode for rendering purposes.
Definition: niftkVLMapper.h:65
float fogStart() const
Definition: niftkVLMapper.h:345
void setClipReverse(int i, bool reverse)
Definition: niftkVLMapper.h:464
vl::ref< vl::ArrayFloat3 > m_PositionArray
Definition: niftkVLMapper.h:597
void setFogDensity(float density)
Definition: niftkVLMapper.h:362
void setClipPlane(int i, const vl::vec4 &plane)
Definition: niftkVLMapper.h:424
int isLightingEnabled() const
Definition: niftkVLMapper.h:216
void setOutlineColor(const vl::vec4 &color)
Definition: niftkVLMapper.h:156
void setTextureMappingEnabled(bool enable)
Definition: niftkVLMapper.h:258
GLuint color
Definition: glew.h:6687
Class to enable the data to represent coordinate axes to be added as a mitk::BaseData to the mitk::Da...
Definition: niftkCoordinateAxesData.h:33
bool m_DataNodeVividUpdateEnabled
Definition: niftkVLMapper.h:484
float outlineWidth() const
Definition: niftkVLMapper.h:169
vl::Vivid::EFogMode fogMode() const
Definition: niftkVLMapper.h:315
bool isStencil() const
Definition: niftkVLMapper.h:198
#define VL_SMARTCLIP(var)
Definition: niftkVLMapper.h:371
Definition: niftkVLMapper.h:558
void setFogMode(vl::Vivid::EFogMode mode)
Definition: niftkVLMapper.h:312
const mitk::PointSet * m_MitkPointSet
Definition: niftkVLMapper.h:612
Definition: niftkPCLData.h:27
vl::PointSize * pointSize()
Definition: niftkVLMapper.h:294
Definition: niftkVLMapper.h:543
const vl::vec4 & materialSpecularColor() const
Definition: niftkVLMapper.h:238
vl::ref< vl::ArrayFloat3 > m_TexCoordArray
Definition: niftkVLMapper.h:538
void setDataNodeVividUpdateEnabled(bool enable)
Definition: niftkVLMapper.h:120
VLSceneView * m_VLSceneView
Definition: niftkVLMapper.h:481
void setFogEnd(float end)
Definition: niftkVLMapper.h:352
vl::ref< vl::VividVolume > m_VividVolume
Definition: niftkVLMapper.h:553
const mitk::DataNode * m_DataNode
Definition: niftkVLMapper.h:482
void setOutlineWidth(float width)
Definition: niftkVLMapper.h:166
vl::ArrayFloat3 * vertexArray()
This vertex array contains 4 points representing the plane.
Definition: niftkVLMapper.h:528
const mitk::Surface * m_MitkSurf
Definition: niftkVLMapper.h:513
float clipFadeRange(int i) const
Definition: niftkVLMapper.h:407
const vl::Actor * actor() const
Definition: niftkVLMapper.h:109
void setClipBoxMax(int i, const vl::vec3 &boxMax)
Definition: niftkVLMapper.h:454
const vl::ArrayFloat3 * texCoordarray() const
Definition: niftkVLMapper.h:533
vl::Texture * texture()
Definition: niftkVLMapper.h:272
vl::Vivid::EClipMode clipMode(int i) const
Definition: niftkVLMapper.h:387
vl::vec4 clipPlane(int i) const
Definition: niftkVLMapper.h:427
Definition: niftkVLMapper.h:604
Definition: niftkVLMapper.h:503
vl::ref< vl::DrawArrays > m_DrawPoints
Definition: niftkVLMapper.h:599
GLint GLint GLint GLint GLint GLint GLsizei width
Definition: glew.h:1236
vl::Actor * actor()
Definition: niftkVLMapper.h:108
void setPointSpriteEnabled(bool enable)
Definition: niftkVLMapper.h:284
vl::VividRendering * m_VividRendering
Definition: niftkVLMapper.h:479
vl::PolygonMode * polygonMode()
Definition: niftkVLMapper.h:302
vl::ref< vl::Actor > m_Actor
Definition: niftkVLMapper.h:483
void setTexture(vl::Texture *tex)
Definition: niftkVLMapper.h:269
vl::vec4 outlineSlicePlane() const
Definition: niftkVLMapper.h:179
Definition: niftkLightweightCUDAImage.h:33
const vl::vec4 & materialDiffuseRGBA() const
Definition: niftkVLMapper.h:228
vl::Vivid::ESmartTarget clipTarget(int i) const
Definition: niftkVLMapper.h:397
Definition: niftkExceptionObject.h:21
vl::Vivid::ERenderingMode renderingMode() const
Definition: niftkVLMapper.h:147
const mitk::Image * m_MitkImage
Definition: niftkVLMapper.h:552
vl::ref< vl::ArrayFloat4 > m_ColorArray
Definition: niftkVLMapper.h:598
void setClipFadeRange(int i, float fadeRange)
Definition: niftkVLMapper.h:404
float materialSpecularShininess() const
Definition: niftkVLMapper.h:248
const vl::PointSize * pointSize() const
Definition: niftkVLMapper.h:295
virtual ~VLMapper()
Definition: niftkVLMapper.h:73
GLenum target
Definition: glew.h:5584
void setClipTarget(int i, vl::Vivid::ESmartTarget target)
Definition: niftkVLMapper.h:394
void setMaterialSpecularShininess(float shininess)
Definition: niftkVLMapper.h:245