[vtkusers] Context vtk-developers Digest, Vol 146, Issue 15

Luis Vieira luis.vieira at vektore.com
Mon Jun 20 10:15:59 EDT 2016


Hi David,

Do you meant this transformation?

vtkSmartPointer<vtkProjectedTexture> projectedTexture =
vtkSmartPointer<vtkProjectedTexture>::New();

David

>> The pick coordinates will be points on the VRML geometry, not 
>> image-space
coordinates. There is an additional transform from texture coordinates to
image coordinates that is being ignored.
>>>

Thank you,

Luis Vieira, Toronto
Consultant, Software Engineer
Vektore Exploration Consulting Corporation
luis.vieira at vektore.com
www.vektore.com

-----Original Message-----
From: Luis Vieira [mailto:luis.vieira at vektore.com]
Sent: June 14, 2016 11:38 AM
To: 'vtk-developers at vtk.org' <vtk-developers at vtk.org>; 'vtkusers at vtk.org'
<vtkusers at vtk.org>
Cc: 'David Thompson' <david.thompson at kitware.com>
Subject: Contents of vtk-developers Digest, Vol 146, Issue 15 

Hi David,


Also, I have tried, unsuccessfully, as well as following:
>> It looks like you are positioning the camera using image parameters...
but you are not mapping the image directly. Instead, you are mapping
geometry from a VRML file and texturing it with the image.
>>
renderer->ComputeVisiblePropBounds(bounds);
vtkCamera* cam = renderer->GetActiveCamera();
cam->SetFocalPoint((bounds[0] + bounds[1]) / 2.0, (bounds[2] +
cam->bounds[3]) / 2.0, (bounds[4] + bounds[5]) / 2.0); 
cam->SetPosition((bounds[0] + bounds[1]) / 2.0, (bounds[2] + bounds[3]) 
cam->/ 2.0, bounds[4] + bounds[5]); SetViewUp(0, 1, 0);

Please, could you be more clear about this?
>> The pick coordinates will be points on the VRML geometry, not 
>> image-space
coordinates. There is an additional transform from texture coordinates to
image coordinates that is being ignored.
>>>

Tks,

Luis Vieira, Toronto - ON
Consultant, Software Engineer
Vektore Exploration Consulting Corporation luis.vieira at vektore.com
www.vektore.com -----Original Message-----
From: David Thompson [mailto:david.thompson at kitware.com]
Sent: June 14, 2016 10:37 AM
To: Luis Vieira <luis.vieira at vektore.com>
Cc: vtk-developers at vtk.org
Subject: Re: [vtk-developers] Rendering Image and Picking Points

Hi Luis,

> ...I am struggling to rendering an Image and set up the camera focal 
> point
to placed that image within the center of the camera.
>  
> 1- I want this because the point is when I am rotating the object and 
> picking point in its surface I got the X, Y and Z world coordinates 
> that doesn't match the real coordinates of the camera;
>  
> 2- When I am trying to use those coordinates once I had picked to
calculate the center of mass between them , the results are not accurately
rights. And everything that I have to derivate/build also are not, as well
as when I make a Plane and the its origin goes away into the camera out of
my cylinder(image). ...

It looks like you are positioning the camera using image parameters... but
you are not mapping the image directly. Instead, you are mapping geometry
from a VRML file and texturing it with the image. The pick coordinates will
be points on the VRML geometry, not image-space coordinates. There is an
additional transform from texture coordinates to image coordinates that is
being ignored.

	David

Hello Guys!!

First of all, I have to say that I appreciate any help!

I am struggling to rendering an Image and set up the camera focal point to
placed that image within the center of the camera.

1- I want this because the point is when I am rotating the object and
picking point in its surface I got the X, Y and Z world coordinates that
doesn't match the real coordinates of the camera;

2- When I am trying to use those coordinates once I had picked to calculate
the center of mass between them , the results are not accurately rights. And
everything that I have to derivate/build also are not, as well as when I
make a Plane and the its origin goes away into the camera out of my
cylinder(image).

Following my code and attached picture. Thank you very much!! Luis
MainWindow.cpp void MainWindow::ProcessImage(QString _model, QString _image)
{
     double bounds[6] = { +1, -1, +1, -1, +1, -1 };
    qvtkWidget->setVisible(true);
              std::string iname = _model.toStdString();//model is a *.obj
Cylinder of Solid rock with h1024xw1024";
              std::string imagename = _image.toStdString() ;//is the texture
*.bmp file that wraps up the cylinder";
              vtkRenderer* renderer = vtkRenderer::New();
             
              vtkRenderWindow* renderWindow = vtkRenderWindow::New();
              renderWindow->StereoCapableWindowOn();
              // Activate 3DConnexion device only on the left render window.
              qvtkWidget->SetUseTDx(true);
              qvtkWidget->SetRenderWindow(renderWindow);
              //renderWindow->Delete();

              const double angleSensitivity = 0.02;
              const double translationSensitivity = 0.001;

              QVTKInteractor *iren = qvtkWidget->GetInteractor();
              vtkInteractorStyle *s =
                      static_cast<vtkInteractorStyle
*>(iren->GetInteractorStyle());
              vtkTDxInteractorStyleCamera *t =
                      static_cast<vtkTDxInteractorStyleCamera
*>(s->GetTDxStyle());

              t->GetSettings()->SetAngleSensitivity(angleSensitivity);
 
t->GetSettings()->SetTranslationXSensitivity(translationSensitivity);
 
t->GetSettings()->SetTranslationYSensitivity(translationSensitivity);
 
t->GetSettings()->SetTranslationZSensitivity(translationSensitivity);
         
              // Read the image which will be the texture

              QMenu* popup1 = new QMenu(qvtkWidget);
              popup1->addAction("Draw Line");
              popup1->addAction("Draw Plane");
              popup1->addAction("Draw Clip");
              popup1->addAction("Background White");
              popup1->addAction("Background Black");
              popup1->addAction("Stereo Rendering");
              connect(popup1, SIGNAL(triggered(QAction*)), this,
SLOT(ProcessUserViewPortInteraction(QAction*)));

              std::cout << "Reading image " << imagename << "..." <<
std::endl;

              vtkBMPReader* bmpReader = vtkBMPReader::New();

              bmpReader->SetFileName(imagename.c_str());

              bmpReader->Update();

              std::cout << "Done" << std::endl;

              // Creating the texture

              std::cout << "Making a texture out of the image... " <<
std::endl;

              vtkTexture* texture = vtkTexture::New();

              texture->SetInputConnection(bmpReader->GetOutputPort());

              std::cout << "Done" << std::endl;

              // Import geometry from a VRML file

              vtkSmartPointer<vtkImageViewer2> imageViewer =
                      vtkSmartPointer<vtkImageViewer2>::New();
              imageViewer->SetInputConnection(bmpReader->GetOutputPort());
              //imageViewer->SetupInteractor(renderWindowInteractor);
              imageViewer->SetSize(600, 600);

              vtkDataSet *pDataset;
              // Import geometry from an OBJ file

              std::cout << "Reading OBJ file " << iname << "..." <<
std::endl;

              vtkOBJReader* reader = vtkOBJReader::New();

              reader->SetFileName(iname.c_str());

              reader->Update();

              vtkPolyData *polyData2 = reader->GetOutput();

              std::cout << "Obj reader = " << polyData2->GetNumberOfPoints()
<< std::endl;

              std::cout << "Obj point data = " <<
polyData2->GetPointData()->GetNumberOfArrays() << std::endl;

              std::cout << "Obj point data tuples = " <<
polyData2->GetPointData()->GetArray(0)->GetNumberOfTuples() << 
polyData2->std::endl;

              std::cout << "Obj point data compon = " <<
polyData2->GetPointData()->GetArray(0)->GetNumberOfComponents() <<
std::endl;

       //     //// Renderer

              vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();

              mapper->SetInputData(polyData2);

              vtkActor* texturedQuad = vtkActor::New();

              texturedQuad->SetMapper(mapper);

              texturedQuad->SetTexture(texture);
              //texturedQuad->SetPosition(0, 0, 0);

              // Create Normal Vectors to enhance smoothness & illumination 
              vtkSmartPointer<vtkPolyDataNormals> normals =
vtkSmartPointer<vtkPolyDataNormals>::New();
              normals->SetInputData(polyData2);
              normals->SetFeatureAngle(60.0);

              // Mapper
              vtkPolyDataMapper *SolidMapper = vtkPolyDataMapper::New();
              SolidMapper->SetInputData(normals->GetOutput());
              SolidMapper->ScalarVisibilityOff();

              // Actor
              vtkActor *SolidActor = vtkActor::New();
              SolidActor->SetMapper(SolidMapper);
              
              vtkImageData* image = imageViewer->GetInput();
              int dim[3]; image->GetDimensions(dim);
              double spacing[3];
              image->GetSpacing(spacing);
              double origin[3];
              image->GetOrigin(origin);

       renderer->ComputeVisiblePropBounds(bounds);
              Renderer->AddActor(SolidActor);
              Renderer->AddActor(texturedQuad);

              float Cx = (dim[0] * spacing[0]) / 2. + origin[0];
              float Cy = (dim[1] * spacing[1]) / 2. + origin[1];

              vtkCamera* m_Camera = vtkCamera::New();
              m_Camera->SetPosition(Cx, Cy, 1);
              m_Camera->SetFocalPoint(Cx, Cy, 0);
              m_Camera->SetViewUp(0, 1, 0);
              m_Camera->GetDirectionOfProjection();
       
              m_Camera->ParallelProjectionOn();
              Renderer->SetActiveCamera(m_Camera);
              Renderer->SetBackground(0, 0, 0); // Background color white
              Renderer->ResetCamera();
              qvtkWidget->GetRenderWindow()->AddRenderer(Renderer);
              
              qvtkWidget->GetRenderWindow()->Render();
              //renderer->ResetCamera();
              vtkIPWCallback* myCallback =
                      vtkIPWCallback::New();
              myCallback->renderer = Renderer;
              myCallback->renderWindowInteractor =
qvtkWidget->GetRenderWindow()->GetInteractor();
              myCallback->readerClip = vtkOBJReader::New();
              myCallback->readerClip = reader;
              this->styleCallback = myCallback;

              //renderer->ResetCamera();
              this->stylePicker->normalsKore =
vtkSmartPointer<vtkPolyDataNormals>::New();
              this->stylePicker->normalsKore = normals;
              this->stylePicker->renderer =
vtkSmartPointer<vtkRenderer>::New();
              this->stylePicker->actor = vtkActor::New();
              
              this->stylePicker->mapper = vtkPolyDataMapper::New();
              this->stylePicker->points = vtkSmartPointer<vtkPoints>::New();
              this->stylePicker->vertices =
vtkSmartPointer<vtkCellArray>::New();
              this->stylePicker->renderer = Renderer;
              this->stylePicker->renderWindowInteractor =
qvtkWidget->GetRenderWindow()->GetInteractor();
              vtkSmartPointer<vtkPointPicker> pointPicker =
                      vtkSmartPointer<vtkPointPicker>::New();
 
qvtkWidget->GetRenderWindow()->GetInteractor()->SetPicker(pointPicker);
 
qvtkWidget->GetRenderWindow()->GetInteractor()->SetInteractorStyle(this-
qvtkWidget->>sty
lePicker);

              Connections = vtkEventQtSlotConnect::New();

 
Connections->Connect(qvtkWidget->GetRenderWindow()->GetInteractor(),
                      vtkCommand::KeyPressEvent,
                      this,
                      SLOT(popup(vtkObject*, unsigned long, void*, void*,
vtkCommand*)),
                      popup1, 1.0);
       }

MainWindow.h
//Point PickFunction
       class MouseInteractorStyle2 : public
vtkInteractorStyleTrackballCamera
       {

       public:
              std::vector<double*> pointList;
              std::vector<double*> pointListPlane;

              vtkSmartPointer<vtkMatrix4x4> matrix;
              vtkSmartPointer<vtkPolyDataNormals> normalsKore =
vtkSmartPointer<vtkPolyDataNormals>::New();
              vtkSmartPointer<vtkSphereSource> spherePickSource;
              vtkSmartPointer<vtkPoints> points =
vtkSmartPointer<vtkPoints>::New();
              vtkSmartPointer<vtkCellArray> vertices =
vtkSmartPointer<vtkCellArray>::New();
              vtkSmartPointer<vtkPolyData> polydata;
              vtkSmartPointer<vtkRenderer> renderer =
                      vtkSmartPointer<vtkRenderer>::New();
              vtkSmartPointer<vtkRenderWindowInteractor>
renderWindowInteractor =
                     vtkSmartPointer<vtkRenderWindowInteractor>::New();
              vtkActor* actor;
              
              vtkPolyDataMapper* mapper;
              static MouseInteractorStyle2* New()
              {
                      return new MouseInteractorStyle2;
              }
              //vtkTypeMacro(MouseInteractorStyle2,
vtkInteractorStyleTrackballCamera);

              virtual void OnRightButtonDown()
              {


                     int* clickPos =
this->renderWindowInteractor->GetEventPosition();

                      // Pick from this location.
                      vtkPropPicker*  picker =
                             vtkPropPicker::New();
                      picker->Pick(clickPos[0], clickPos[1], 0,
this->renderer);
                      

                      picker->Pick(clickPos[0], clickPos[1], 0,
this->renderer);

                      double* pos = picker->GetPickPosition();
                      std::cout << "Pick position (world coordinates) is: "
                             << pos[0] << " " << pos[1]
                             << " " << pos[2] << std::endl;

                             std::cout << "Picked actor: " <<
picker->GetActor() << std::endl;
                             // Add label array.
                             polydata = vtkSmartPointer<vtkPolyData>::New();
                             spherePickSource =
                                    vtkSmartPointer<vtkSphereSource>::New();
                             spherePickSource->SetRadius(0.030);
                             spherePickSource->SetCenter(pos[0], pos[1],
pos[2]);

                             if (pointList.size() < 2)
                             {   //pointList.clear();
                                    pointList.push_back(pos);
                             }
                             if (pointListPlane.size() < 30)
                             {
                                 pointListPlane.push_back(pos);
                             }
                             //Create a mapper and actor
                             mapper =
                                    vtkPolyDataMapper::New();
 
mapper->SetInputConnection(spherePickSource->GetOutputPort());

                             actor =
                                    vtkActor::New();
                             actor->SetMapper(mapper);
                             actor->GetProperty()->SetPointSize(5);
                             actor->GetProperty()->SetColor(1, 1, 1);
                      
                             this->renderer->AddActor(actor);

                     vtkInteractorStyleTrackballCamera::OnRightButtonDown();
              }
       private:
             
       };
   
Luis Vieira, Toronto - ON
Consultant, Software Engineer
Vektore Exploration Consulting Corporation luis.vieira at vektore.com
www.vektore.com



------------------------------

Message: 2
Date: Thu, 16 Jun 2016 16:06:08 -0600
From: David Gobbi <david.gobbi at gmail.com>
To: VTK Developers <vtk-developers at vtk.org>, David Lonie
	<david.lonie at kitware.com>
Subject: [vtk-developers] Wrapping the new arrays
Message-ID:
	<CANwS1=E5Qbe5rEf7LbsdQ1uMaAm_DBs3BHGisdzzxfyYc4NLgA at mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Hi David,

Was it intended to have the new VTK data arrays wrapped in Python?  They're
all wrappable except for the vtkGenericDataArray (it's a special case).

In order to wrap vtkSOADataArrayTemplate and the templated array types,
Python would just have to be fooled into thinking that their superclass is
vtkDataArray, similar to what is already done for the old array classes.
That way, Python wouldn't have to deal with the problematic
vtkGenericDataArray template.

The Python wrappers can be told to instantiate the templates over the usual
set of data types.  This part is easy, it has already done for
vtkArrayIteratorTemplate, vtkDenseArray, and vtkSparseArray.

So I'm just wondering if wrapping these classes was part of the plan.  I get
an itch whenever C++ stuff is added to VTK that can't be used from Python :)

 - David
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://public.kitware.com/pipermail/vtk-developers/attachments/20160616/6e5
39889/attachment-0001.html>

------------------------------

Message: 3
Date: Thu, 16 Jun 2016 23:47:52 -0400
From: Sankhesh Jhaveri <sankhesh.jhaveri at kitware.com>
To: Luis Vieira <luis.vieira at vektore.com>
Cc: vtk-developers <vtk-developers at vtk.org>, vtkusers at vtk.org
Subject: Re: [vtk-developers] Contents of vtk-developers Digest, Vol
	146, Issue 17 -RE:  vtkAxesActor within VTK 7.0 and QVTKWidget
Message-ID:
	<CAEcL5t5X9iOFe8z00FhbAKgm_MC9w4DyNNNkexAfNYhAuYcU_A at mail.gmail.com>
Content-Type: text/plain; charset="utf-8"

Nice! Glad you found it.

Sankhesh


On Thu, Jun 16, 2016 at 4:40 PM, Luis Vieira <luis.vieira at vektore.com>
wrote:

> Hi Sankhesh,
>
>
>
> Got this, was missing those two highlighted yellow lines:
>
>
>
> viewPortOMWidget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
>
> viewPortOMWidget->SetOrientationMarker(viewPortAxActor);
>
> viewPortOMWidget->SetViewport(0.7, 0.0, 1.00, 0.3);
>
> viewPortOMWidget->SetInteractor(mainViewPort->GetInteractor());
>
> *              viewPortOMWidget**->**SetEnabled**(1);* //missing
>
>               *viewPortOMWidget**->**InteractiveOn**();**//*missing
>
>
>
> Thank you,
>
>
>
> *Luis Vieira*, Toronto
>
> Consultant, Software Engineer
>
> Vektore Exploration Consulting Corporation
>
> ca.linkedin.com/in/joaoluisvieira
>
> luis.vieira at vektore.com
>
> www.vektore.com
>
>
>
> *From:* Sankhesh Jhaveri [mailto:sankhesh.jhaveri at kitware.com]
> *Sent:* June 16, 2016 9:54 AM
> *To:* Luis Vieira <luis.vieira at vektore.com>
> *Cc:* vtk-developers <vtk-developers at vtk.org>; vtkusers at vtk.org
> *Subject:* Re: [vtk-developers] vtkAxesActor within VTK 7.0 and 
> QVTKWidget
>
>
>
> Hi Luis,
>
>
>
> I don't see anything obvious but I noticed that you are initializing 
> vtkRenderingOpenGL i.e. using the OpenGL backend. Mind trying the 
> OpenGL2 backend to find out whether the issue is specific to the old
backend.
>
>
>
> Sankhesh
>
>
>
>
>
>
> On Tue, Jun 14, 2016 at 3:20 PM, Luis Vieira <luis.vieira at vektore.com>
> wrote:
>
> Hello everyone,
>
>
>
> I had migrated my VTK platform from 6.1 to 7.0. I had noticed some 
> changes, and one of those is giving me a hard work to do that is to 
> render
> vtkSmartPointer<vtkAxesActor>::New() within QVTWidget. Previously, was 
> easily,  with VTK 6.1. Now, I am trying that and I got the Cone 
> working/rendering well and its interactions. However, I haven't gotten 
> absolutely nothing on my viewport from my vtkAxesActor even been shown .
> Following my code (C++), regarding that this works outside QVTWidget 
> viewport.
>
>
>
> I appreciate any ideas and help.
>
> ????????
>
> #include "vtkRenderWindow.h"
>
> #include "vtkRenderer.h"
>
> #include "vtkRenderWindowInteractor.h"
>
> #include "vtkEventQtSlotConnect.h"
>
> #include "vtkCommand.h"
>
> #include "vtkConeSource.h"
>
> #include "vtkSphereSource.h"
>
> #include "vtkPolyDataMapper.h"
>
> #include "vtkActor.h"
>
> #include "vtkActorCollection.h"
>
> #include "vtkCaptionActor2D.h"
>
> #include "vtkTextActor.h"
>
> #include "vtkTextProperty.h"
>
> #include "vtkActor2D.h"
>
> #include "vtkAxesActor.h"
>
> #include "vtkOrientationMarkerWidget.h"
>
> #include "vtkInteractorStyle.h"
>
> #include "vtkTDxInteractorStyleCamera.h"
>
> #include "vtkTDxInteractorStyleSettings.h"
>
> #include "vtkInteractorStyleRubberBandPick.h"
>
> #include "vtkInteractorStyleTrackballCamera.h"
>
> #include "vtkInteractorStyleTrackball.h"
>
> #include "QVTKInteractorAdapter.h"
>
> #include "QVTKInteractor.h"
>
> #include "QVTKApplication.h"
>
> ??.
>
> .
>
> .
>
> .
>
> #include <vtkAutoInit.h>
>
> VTK_MODULE_INIT(vtkRenderingOpenGL);
>
> VTK_MODULE_INIT(vtkInteractionStyle);
>
> .
>
> .
>
> .
>
>
>
> Mainwindow.cpp
>
>
>
> Void procedure()
>
> {
>
> vtkRenderWindow* renwin = vtkRenderWindow::New();
>
>               renwin->StereoCapableWindowOn();
>
>
>
>               // Activate 3DConnexion device only on the left render 
> window.
>
>               // QVTKWidget
>
>               mainViewPort->SetUseTDx(true); // QVTKWidget = mainViewPort.
>
>
>
>               mainViewPort->SetRenderWindow(renwin);
>
>               renwin->Delete();
>
>
>
>               const double angleSensitivity = 0.02;
>
>               const double translationSensitivity = 0.001;
>
>
>
>               QVTKInteractor *iren = mainViewPort->GetInteractor();
>
>               vtkInteractorStyle *s =
>
>                       static_cast<vtkInteractorStyle *>(iren-> 
> GetInteractorStyle());
>
>               vtkTDxInteractorStyleCamera *t =
>
>                       static_cast<vtkTDxInteractorStyleCamera *>(s-> 
> GetTDxStyle());
>
>
>
>               t->GetSettings()->SetAngleSensitivity(angleSensitivity);
>
>               t->GetSettings()->SetTranslationXSensitivity(
> translationSensitivity);
>
>               t->GetSettings()->SetTranslationYSensitivity(
> translationSensitivity);
>
>               t->GetSettings()->SetTranslationZSensitivity(
> translationSensitivity);
>
>
>
>
>
>
>
>               // add a renderer
>
>               Ren1 = vtkRenderer::New();
>
>               mainViewPort->GetRenderWindow()->AddRenderer(Ren1);
>
>
>
>               vtkConeSource* cone = vtkConeSource::New();
>
>               vtkPolyDataMapper* mapper = vtkPolyDataMapper::New();
>
>               mapper->SetInputConnection(cone->GetOutputPort());
>
>               vtkActor* actor = vtkActor::New();
>
>               actor->SetMapper(mapper);
>
>               Ren1->AddViewProp(actor);
>
>               actor->Delete();
>
>               mapper->Delete();
>
>               cone->Delete();
>
>
>
>
>
>
>
>               mainViewPort->GetRenderWindow()->Render();
>
>
>
> viewPortAxActor = vtkSmartPointer<vtkAxesActor>::New();
>
> viewPortAxActor->GetXAxisCaptionActor2D()->GetCaptionTextProperty()->
> SetColor(0, 0, 0);
>
> viewPortAxActor->GetXAxisCaptionActor2D()->SetWidth(0.05);
>
> viewPortAxActor->GetXAxisCaptionActor2D()->SetHeight(0.05);
>
> viewPortAxActor->GetYAxisCaptionActor2D()->GetCaptionTextProperty()->
> SetColor(0, 0, 0);
>
> viewPortAxActor->GetYAxisCaptionActor2D()->SetWidth(0.05);
>
> viewPortAxActor->GetYAxisCaptionActor2D()->SetHeight(0.05);
>
> viewPortAxActor->GetZAxisCaptionActor2D()->GetCaptionTextProperty()->
> SetColor(0, 0, 0);
>
> viewPortAxActor->GetZAxisCaptionActor2D()->SetWidth(0.05);
>
> viewPortAxActor->GetZAxisCaptionActor2D()->SetHeight(0.05);
>
>
>
> viewPortOMWidget = vtkSmartPointer<vtkOrientationMarkerWidget>::New();
>
> viewPortOMWidget->SetOrientationMarker(viewPortAxActor);
>
> viewPortOMWidget->SetViewport(0.7, 0.0, 1.00, 0.3);
>
> viewPortOMWidget->SetInteractor(mainViewPort->GetInteractor());
>
>
>
> .
>
> .
>
> .
>
> .....
>
> }
>
>
>
> Any ideas?
>
>
>
> Thank you very much.
>
>
>
> *Luis Vieira*, Toronto
>
> Consultant, Software Engineer
>
> Vektore Exploration Consulting Corporation
>
> luis.vieira at vektore.com
>
> www.vektore.com
>
>
>
>
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at 
> http://www.kitware.com/opensource/opensource.html
>
> Search the list archives at: 
> http://markmail.org/search/?q=vtk-developers
>
> Follow this link to subscribe/unsubscribe:
> http://public.kitware.com/mailman/listinfo/vtk-developers
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
<http://public.kitware.com/pipermail/vtk-developers/attachments/20160616/eea
2a4a8/attachment.html>

------------------------------

Subject: Digest Footer

_______________________________________________
Powered by www.kitware.com

Visit other Kitware open-source projects at
http://www.kitware.com/opensource/opensource.html

Search the list archives at: http://markmail.org/search/?q=vtk-developers

Follow this link to subscribe/unsubscribe:
http://public.kitware.com/mailman/listinfo/vtk-developers

------------------------------

End of vtk-developers Digest, Vol 146, Issue 22
***********************************************



More information about the vtkusers mailing list