我试图从C++使用VTK库。 是否有任何使用VTK来绘制像这样的简单3D图形的示例:enter link description here。 在官方wiki上有几十个代码示例,但我找不到任何有用的示例来完成这个简单的任务。非常简单的三维情节vtk
回答
后来我想做同样的事情,并做了一些广泛的搜索。它没有太多,所以我想与你分享我的解决方案。它包含一些多余的代码,但它的工作原理。 http://pastie.org/4721543
我刚刚重新发现了这个问题,因为VTK 6.0会有一个平面函数。最有可能比我的代码更高效。我会稍后再尝试并更新这篇文章。
对我的代码的一点解释可能会有所帮助。它执行以下操作:
- 生成的平面的2D矩阵的保持你的z值(COLS &行代表在x & y值)的大小。
- 从输入矩阵创建XYZ点
- 存储中的z值作为标量对于每个点
- 经线的是,根据该矩阵的z值平面和应用颜色(
mapper->SetScalarRange(..)
- 提请情节
它还增加了一个定时器和更新命令,它输出渲染统计等。正如我说的还有很多,你可以离开了。我blog post阐述了一点点这一点,但不多。
不错的帖子,你已经忘记了将“gauss.h”包含在pastie中,但是由于大部分代码对于实际图形来说都是不必要的,所以它不是什么大问题。 – Madz 2013-10-11 04:46:08
我相信一个VTK管道的粗略草图可能适用于你,如下所示。如果创建一些x和y点作为vtkPoints,然后将它们移动到StructuredGrid数据类型,然后使用GeometryFilter添加z轴,则应该通过vtkWarpScalar和通常的Mapper和Actor管道生成曲面。
以下示例代码可能有助于您的vtk版本中的/Examples/DataManipulation/Cxx/SGrid.cxx。如果您有完整的体积和提取的等值面,也可以执行曲面绘图。如果情况并非如此,并且您正在绘制3D功能,则可能需要填充结构化的网格才行。
在Kaikuchn的代码的帮助下,我能够想出一个简单的表面图。希望这能帮助那些正在寻找类似解决方案的人。
#include "stdafx.h"
#include <vtkRenderer.h>
#include <vtkRenderWindowInteractor.h>
#include <vtkRenderWindow.h>
#include <vtkSmartPointer.h>
#include <vtkPoints.h>
#include <vtkPointData.h>
#include <vtkPolyData.h>
#include <vtkPolyDataMapper.h>
#include <vtkDataSetMapper.h>
#include <vtkProperty.h>
#include <vtkCubeAxesActor2D.h>
#include <vtkInteractorStyleTrackballCamera.h>
#include <vtkInteractorStyleTrackball.h>
#include <vtkSimplePointsReader.h>
#include <vtkWarpScalar.h>
#include <vtkAxisActor2D.h>
int mains(int, char *[])
{
// Read the file
vtkSmartPointer<vtkSimplePointsReader> reader =vtkSmartPointer<vtkSimplePointsReader>::New();
reader->SetFileName ("simple.xyz");
reader->Update();
vtkSmartPointer<vtkPolyData> inputPolyData = vtkSmartPointer<vtkPolyData>::New();
inputPolyData ->CopyStructure(reader->GetOutput());
// warp plane
vtkSmartPointer<vtkWarpScalar> warp = vtkSmartPointer<vtkWarpScalar>::New();
warp->SetInput(inputPolyData);
warp->SetScaleFactor(0.0);
// Visualize
vtkSmartPointer<vtkDataSetMapper> mapper = vtkSmartPointer<vtkDataSetMapper>::New();
mapper->SetInputConnection(warp->GetOutputPort());
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->GetProperty()->SetPointSize(4);
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
vtkSmartPointer<vtkRenderWindow> renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
vtkSmartPointer<vtkRenderWindowInteractor> renderWindowInteractor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
renderWindowInteractor->SetRenderWindow(renderWindow);
renderer->AddActor(actor);
renderer->SetBackground(.3, .6, .3);
renderWindow->Render();
vtkSmartPointer<vtkInteractorStyleTrackballCamera> style = vtkSmartPointer<vtkInteractorStyleTrackballCamera>::New();
renderWindowInteractor->SetInteractorStyle(style);
// add & render CubeAxes
vtkSmartPointer<vtkCubeAxesActor2D> axes = vtkSmartPointer<vtkCubeAxesActor2D>::New();
axes->SetInput(warp->GetOutput());
axes->SetFontFactor(3.0);
axes->SetFlyModeToNone();
axes->SetCamera(renderer->GetActiveCamera());
vtkSmartPointer<vtkAxisActor2D> xAxis = axes->GetXAxisActor2D();
xAxis->SetAdjustLabels(1);
renderer->AddViewProp(axes);
renderWindowInteractor->Start();
return EXIT_SUCCESS;
}
simple.xyz;
0.0 0.0 3.0
1.0 4.0 0.0
0.0 1.0 0.0
4.0 0.0 3.0
1.0 4.0 7.0
0.0 6.0 0.0
在我的系统,当SetInput()
更改为SetInputData()
为“轴”和“扭曲”的代码工作。
- 1. 三维表面情节
- 2. 三维人体情节
- 3. 三维动画的情节与在Matlab
- 4. 非常非常简单的MVVM问题
- 5. 非常简单的代码
- 6. 非常简单的查询
- 7. 非常简单的滑块
- 8. 非常简单的java cms
- 9. 非常非常非常简单的电子邮件选项
- 10. 非常简单的滑块动画少于三张幻灯片
- 11. 将三维体积数据转换为VTK中的三维网格数据
- 12. 非常简单的多维数组程序打开Visual Studio JIT?
- 13. 简单多维数据集 - 三个JS
- 14. XNA的非常简单的菜单
- 15. 简单提取非常慢
- 16. 在DartAngular 1.0飞镖非常简单的事情1.7
- 17. 问题渲染*非常*简单部分在* *非常简单的应用程序
- 18. 非常简单的脱节翻转图像交换
- 19. 做一个三维的时间序列的渲染情节
- 20. 面向vtk的三维空间中的边界框
- 21. POSTMAN中的非常简单的POST
- 22. jquery非常简单的插件,非常基本
- 23. 复杂(或非常非常简单)的MySQL查询?
- 24. 非常简单,非常流畅的JavaScript Marquee
- 25. 情节三维散乱使用gnuplot的数据
- 26. 非常简单的15行编程
- 27. 非常简单的Python并发编程
- 28. 非常简单的jQuery倒计时
- 29. 非常简单的条形图
- 30. 非常简单的WebForm与masterpage
看看这里: http://github.enthought.com/mayavi/mayavi/auto/examples.html – 2012-04-04 01:56:21
您是否找到答案?我正在寻找同样的事情。 – Madz 2013-10-11 04:21:14