为什么我不能使用 Sphere 来缩放字形?
Why can't I use Sphere to scale glyphs?
我有一个点云数据集,我想根据点的属性值缩放点的大小。我遵循了这个例子:https://vtk.org/Wiki/VTK/Examples/Cxx/Visualization/ScaleGlyphs#Download_and_Build_ScaleGlyphs。但是当我构建项目时,发生了一个错误: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);
}
这听起来像是一个错误。 如果您改为这样做,会发生什么情况:
SphereSource->Update();
glyph3D->SetSourceData(SphereSource->GetOutput());
相关文章:
- UE4-如何在给定4个屏幕坐标的情况下缩放纹理或材质
- 计算缩放多边形的比例,得到给定的多边形面积
- QwtPlot具有相等的轴和自动缩放
- 如何在directx/c++中进行平移/缩放操作
- 在Qt中实现无限可缩放的画布
- 是否可以为 QPixmap 派生类嵌入缩放方法?
- 形状对象的旋转和缩放不正确C++
- 如何在 OpenSceneGraph 中缩放/旋转/移动资产
- 如何在OpenGL(GLFW,很高兴)中进行2D缩放?
- 改变或缩放两个正态分布以具有特定的相关系数
- SDL2 调整窗口大小后如何缩放鼠标坐标?
- 如何在OpenGL中正确旋转和缩放对象?
- 仅当类型为 std::complex 时,才进行缩放
- 将 VS Code 用于跨平台可缩放C++项目
- 根据帧速率缩放/缩小数字
- 在 c++ 中缩放浮点值
- 如何防止 DirectX C++程序的拉伸/缩放
- 使用提升几何缓冲区缩放多边形时的冗余折点
- 为什么我不能使用 Sphere 来缩放字形?
- 我在QChartView中找不到缩放图形的鼠标滚轮滚动事件