C++ 为什么可以';我不能使用球体来缩放图示符吗?

C++ 为什么可以';我不能使用球体来缩放图示符吗?,c++,vtk,C++,Vtk,我有一个点云数据集,我想根据点的属性值缩放点的大小。我遵循以下示例:。但是当我构建项目时,发生了一个错误:调用了abort()。我试过CubeSource,ArrowSource,CylinderSource,他们都成功了。我真的很困惑为什么我不能使用SphereSource 如果有人能帮忙,我将不胜感激。提前谢谢 这是我的密码: void ScalePoints::draw() { //load data vtkSmartPointer<vtkXMLPolyDataRe

我有一个点云数据集,我想根据点的属性值缩放点的大小。我遵循以下示例:。但是当我构建项目时,发生了一个错误:调用了abort()。我试过CubeSource,ArrowSource,CylinderSource,他们都成功了。我真的很困惑为什么我不能使用SphereSource

如果有人能帮忙,我将不胜感激。提前谢谢

这是我的密码:

void ScalePoints::draw() {

    //load data
    vtkSmartPointer<vtkXMLPolyDataReader> currentReader = readers[currentId];
    vtkSmartPointer<vtkPolyData> polyData = currentReader->GetOutput();

    //set a scalar
    vtkDataArray* scalar = polyData->GetPointData()->GetArray("hh");
    int numPoints = scalar->GetNumberOfValues();  
    polyData->GetPointData()->SetScalars(scalar);

    //create spheres
    vtkSmartPointer<vtkSphereSource> SphereSource = vtkSmartPointer<vtkSphereSource>::New();
    vtkSmartPointer<vtkGlyph3D> glyph3D = vtkSmartPointer<vtkGlyph3D>::New();
    glyph3D->SetScaleModeToScaleByScalar();
    glyph3D->SetSourceConnection(SphereSource->GetOutputPort());
    glyph3D->SetInputData(polyData);
    glyph3D->SetScaleFactor(0.01);
    //glyph3D->SetRange(0.01, 0.05);
    glyph3D->Update();

    //visualize 
    vtkSmartPointer<vtkPolyDataMapper> sMapper = vtkSmartPointer<vtkPolyDataMapper>::New();
    sMapper->SetInputConnection(glyph3D->GetOutputPort());
    actor->SetMapper(sMapper);
    actor->GetProperty()->SetOpacity(0.7);
    renderer->AddActor(actor);
}
void ScalePoints::draw(){
//加载数据
vtkSmartPointer currentReader=读卡器[currentId];
vtkSmartPointer polyData=currentReader->GetOutput();
//设置标量
vtkDataArray*scalar=polyData->GetPointData()->GetArray(“hh”);
int numPoints=标量->GetNumberOfValues();
polyData->GetPointData()->SetScalars(标量);
//创建球体
vtkSmartPointer SphereSource=vtkSmartPointer::New();
vtkSmartPointer glyph3D=vtkSmartPointer::New();
glyph3D->SetScaleModeToScaleByScalar();
glyph3D->SetSourceConnection(SphereSource->GetOutputPort());
glyph3D->SetInputData(polyData);
glyph3D->SetScaleFactor(0.01);
//glyph3D->SetRange(0.01,0.05);
glyph3D->Update();
//想象
vtkSmartPointer sMapper=vtkSmartPointer::New();
sMapper->SetInputConnection(glyph3D->GetOutputPort());
actor->SetMapper(sMapper);
actor->GetProperty()->SetOpacity(0.7);
渲染器->AddActor(actor);
}
这听起来像个bug。。 如果您改为:

SphereSource->Update();
glyph3D->SetSourceData(SphereSource->GetOutput());