[vtkusers] Change color of displayed mesh in visu of ICP registration
Bill Lorensen
bill.lorensen at gmail.com
Sat Jul 27 17:33:20 EDT 2013
Color values in VTK are from 0,1.
I suspect that
SetColor(2,1,2)
clamps each component to 1,1,1 (white);
On Sat, Jul 27, 2013 at 5:16 PM, agatte <agatakrason at gmail.com> wrote:
> Hi,
>
>
> I have a problem to chanhe display color of mesh in visu of result
> registration icp.
> I followed one of examples from vtk - wiki.
> I was trying to change in :
> sourceActor->GetProperty->SetColor(1,2,3); //
> But it didn't work ;/ It didn't change.
> I need to have different color of meshes to see a difference after applying
> transform.
>
> Could anyone help me please ?
>
> I would appreciate for any help please.
>
> Here I attached a little changed code of this example :
>
> int main(int argc, char *argv[])
> {
>
> vtkSmartPointer<vtkPolyData> source =
> vtkSmartPointer<vtkPolyData>::New();
> vtkSmartPointer<vtkPolyData> target =
> vtkSmartPointer<vtkPolyData>::New();
>
>
> std::cout<<" Reading data ..."<<std::endl;
> std::string strSource = "outputMeshXML.vtp";
> std::string strTarget = "outputMeshXML2.vtp";
>
> vtkSmartPointer<vtkXMLPolyDataReader> sourceReader =
> vtkSmartPointer<vtkXMLPolyDataReader>::New();
> sourceReader->SetFileName(strSource.c_str());
> sourceReader->Update();
> source->ShallowCopy(sourceReader->GetOutput());
>
> vtkSmartPointer<vtkXMLPolyDataReader> targetReader =
> vtkSmartPointer<vtkXMLPolyDataReader>::New();
> targetReader->SetFileName(strTarget.c_str());
> targetReader->Update();
> target->ShallowCopy(targetReader->GetOutput());
>
> // Setup ICP transform
> vtkSmartPointer<vtkIterativeClosestPointTransform> icp =
> vtkSmartPointer<vtkIterativeClosestPointTransform>::New();
> icp->SetSource(source);
> icp->SetTarget(target);
> //icp->GetLandmarkTransform()->SetModeToRigidBody();
> icp->GetLandmarkTransform()->SetModeToAffine();
> icp->SetMaximumNumberOfIterations(20);
> icp->StartByMatchingCentroidsOn();
> icp->Modified();
> icp->Update();
>
> // Get the resulting transformation matrix (this matrix takes the source
> points to the target points)
> vtkSmartPointer<vtkMatrix4x4> m = icp->GetMatrix();
> std::cout<<"The resulting matrix is : "<<*m<<std::endl;
>
> // Transform the source by the ICP solution
> vtkSmartPointer<vtkTransformPolyDataFilter> icpTransformFilter =
> vtkSmartPointer<vtkTransformPolyDataFilter>::New();
>
> #if VTK_MAJOR_VERSION <= 5
> icpTransformFilter->SetInput(source);
> #else
> icpTranformFilter->SetInputData(source);
> #endif
> icpTransformFilter->SetTransform(icp);
> icpTransformFilter->Update();
>
> // Visualize
> vtkSmartPointer<vtkPolyDataMapper> sourceMapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> #if VTK_MAJOR_VERSION <=5
> sourceMapper->SetInputConnection(source->GetProducerPort());
> #else
> sourceMapper->SetInputData(source);
> #endif
>
> vtkSmartPointer<vtkActor> sourceActor =
> vtkSmartPointer<vtkActor>::New();
> sourceActor->SetMapper(sourceMapper);
> sourceActor->GetProperty()->SetColor(1,1,1);
> sourceActor->GetProperty()->SetPointSize(3);
>
> vtkSmartPointer<vtkPolyDataMapper> targetMapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> #if VTK_MAJOR_VERSION <= 5
> targetMapper->SetInputConnection(target->GetProducerPort());
> #else
> targetMapper->SetInputData(target);
> #endif
>
> vtkSmartPointer<vtkActor> targetActor =
> vtkSmartPointer<vtkActor>::New();
> targetActor->SetMapper(targetMapper);
> targetActor->GetProperty()->SetColor(2,1,2);
> targetActor->GetProperty()->SetPointSize(4);
>
> vtkSmartPointer<vtkPolyDataMapper> solutionMapper =
> vtkSmartPointer<vtkPolyDataMapper>::New();
> solutionMapper->SetInputConnection(icpTransformFilter->GetOutputPort());
>
> vtkSmartPointer<vtkActor> solutionActor =
> vtkSmartPointer<vtkActor>::New();
> solutionActor->SetMapper(solutionMapper);
> solutionActor->GetProperty()->SetColor(0.4,0.4,0.4);
> solutionActor->GetProperty()->SetPointSize(3);
>
> // Create a render, render window and interactor
> vtkSmartPointer<vtkRenderer> renderer =
> vtkSmartPointer<vtkRenderer>::New();
> vtkSmartPointer<vtkRenderWindow> renderWindow =
> vtkSmartPointer<vtkRenderWindow>::New();
> renderWindow->AddRenderer(renderer);
> vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor =
> vtkSmartPointer<vtkRenderWindowInteractor>::New();
> renderWindowInteractor->SetRenderWindow(renderWindow);
>
> sourceActor->GetProperty()->SetColor(1.0, 1.0, 1.0);
>
> // Add the actor to the scene
> renderer->AddActor(sourceActor);
> renderer->AddActor(targetActor);
> renderer->AddActor(solutionActor);
>
> renderer->SetBackground(.3, .6, .3);
>
> // Render and interact
> renderWindow->Render();
> renderWindowInteractor->Start();
>
> return EXIT_SUCCESS;
>
>
>
> }
>
>
> agatte
>
> I attached photo.
>
> Skin_mesh_surface.png
> <http://vtk.1045678.n5.nabble.com/file/n5722285/Skin_mesh_surface.png>
>
>
>
>
>
> --
> View this message in context:
> http://vtk.1045678.n5.nabble.com/Change-color-of-displayed-mesh-in-visu-of-ICP-registration-tp5722285.html
> Sent from the VTK - Users mailing list archive at Nabble.com.
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at
> http://www.kitware.com/opensource/opensource.html
>
> Please keep messages on-topic and check the VTK FAQ at:
> http://www.vtk.org/Wiki/VTK_FAQ
>
> Follow this link to subscribe/unsubscribe:
> http://www.vtk.org/mailman/listinfo/vtkusers
>
--
Unpaid intern in BillsBasement at noware dot com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.vtk.org/pipermail/vtkusers/attachments/20130727/dd1c926c/attachment.htm>
More information about the vtkusers
mailing list