cloud collection merges data only on rendering
This commit is contained in:
parent
975a6299fa
commit
998aefd1d1
@ -211,13 +211,16 @@ void cv::viz::WCloudCollection::addCloud(InputArray cloud, InputArray colors, co
|
|||||||
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
|
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkPolyDataMapper::SafeDownCast(actor->GetMapper());
|
||||||
if (!mapper)
|
if (!mapper)
|
||||||
{
|
{
|
||||||
|
vtkSmartPointer<vtkAppendPolyData> append_filter = vtkSmartPointer<vtkAppendPolyData>::New();
|
||||||
|
VtkUtils::AddInputData(append_filter, polydata);
|
||||||
|
|
||||||
// This is the first cloud
|
// This is the first cloud
|
||||||
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
|
||||||
mapper->SetScalarRange(0, 255);
|
mapper->SetScalarRange(0, 255);
|
||||||
mapper->SetScalarModeToUsePointData();
|
mapper->SetScalarModeToUsePointData();
|
||||||
mapper->ScalarVisibilityOn();
|
mapper->ScalarVisibilityOn();
|
||||||
mapper->ImmediateModeRenderingOff();
|
mapper->ImmediateModeRenderingOff();
|
||||||
VtkUtils::SetInputData(mapper, polydata);
|
mapper->SetInputConnection(append_filter->GetOutputPort());
|
||||||
|
|
||||||
actor->SetNumberOfCloudPoints(std::max<vtkIdType>(1, polydata->GetNumberOfPoints()/10));
|
actor->SetNumberOfCloudPoints(std::max<vtkIdType>(1, polydata->GetNumberOfPoints()/10));
|
||||||
actor->GetProperty()->SetInterpolationToFlat();
|
actor->GetProperty()->SetInterpolationToFlat();
|
||||||
@ -226,15 +229,10 @@ void cv::viz::WCloudCollection::addCloud(InputArray cloud, InputArray colors, co
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
vtkPolyData *currdata = vtkPolyData::SafeDownCast(mapper->GetInput());
|
vtkSmartPointer<vtkAlgorithm> producer = mapper->GetInputConnection(0, 0)->GetProducer();
|
||||||
CV_Assert("Cloud Widget without data" && currdata);
|
vtkSmartPointer<vtkAppendPolyData> append_filter = vtkAppendPolyData::SafeDownCast(producer);
|
||||||
|
|
||||||
vtkSmartPointer<vtkAppendPolyData> append_filter = vtkSmartPointer<vtkAppendPolyData>::New();
|
|
||||||
VtkUtils::AddInputData(append_filter, currdata);
|
|
||||||
VtkUtils::AddInputData(append_filter, polydata);
|
VtkUtils::AddInputData(append_filter, polydata);
|
||||||
append_filter->Update();
|
append_filter->Modified();
|
||||||
|
|
||||||
VtkUtils::SetInputData(mapper, append_filter->GetOutput());
|
|
||||||
|
|
||||||
actor->SetNumberOfCloudPoints(std::max<vtkIdType>(1, actor->GetNumberOfCloudPoints() + polydata->GetNumberOfPoints()/10));
|
actor->SetNumberOfCloudPoints(std::max<vtkIdType>(1, actor->GetNumberOfCloudPoints() + polydata->GetNumberOfPoints()/10));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user