void iA3DColoredPolyObjectVis::setupBoundingBox() { m_outlineFilter->SetInputData(getPolyData()); m_outlineMapper->SetInputConnection(m_outlineFilter->GetOutputPort()); m_outlineActor->GetProperty()->SetColor(0, 0, 0); m_outlineActor->PickableOff(); m_outlineActor->SetMapper(m_outlineMapper); }
void iA3DColoredPolyObjectVis::setupOriginalIds() { auto ids = vtkSmartPointer<vtkIdTypeArray>::New(); ids->SetName("OriginalIds"); vtkIdType numPoints = m_objectTable->GetNumberOfRows() * m_pointsPerObject; ids->SetNumberOfTuples(numPoints); for (vtkIdType id = 0; id < m_objectTable->GetNumberOfRows(); ++id) for (vtkIdType objectPoints = 0; objectPoints < m_pointsPerObject; ++objectPoints) ids->SetTuple1(id*m_pointsPerObject + objectPoints, id); getPolyData()->GetPointData()->AddArray(ids); }
void cv::viz::computeNormals(const Mesh& mesh, OutputArray _normals) { vtkSmartPointer<vtkPolyData> polydata = getPolyData(WMesh(mesh)); vtkSmartPointer<vtkPolyData> with_normals = VtkUtils::ComputeNormals(polydata); vtkSmartPointer<vtkDataArray> generic_normals = with_normals->GetPointData()->GetNormals(); if(generic_normals) { Mat normals(1, generic_normals->GetNumberOfTuples(), CV_64FC3); Vec3d *optr = normals.ptr<Vec3d>(); for(int i = 0; i < generic_normals->GetNumberOfTuples(); ++i, ++optr) generic_normals->GetTuple(i, optr->val); normals.convertTo(_normals, mesh.cloud.type()); } else _normals.release(); }
double const * iA3DColoredPolyObjectVis::bounds() { return getPolyData()->GetBounds(); }