我試圖從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. 三維動畫的情節與在Matlab
- 3. 非常非常簡單的MVVM問題
- 4. 非常簡單的java cms
- 5. 非常簡單的代碼
- 6. 非常簡單的查詢
- 7. 非常非常非常簡單的電子郵件選項
- 8. 非常簡單的滑塊動畫少於三張幻燈片
- 9. 非常簡單的多維數組程序打開Visual Studio JIT?
- 10. XNA的非常簡單的菜單
- 11. 簡單提取非常慢
- 12. 在DartAngular 1.0飛鏢非常簡單的事情1.7
- 13. 問題渲染*非常*簡單部分在* *非常簡單的應用程序
- 14. 做一個三維的時間序列的渲染情節
- 15. POSTMAN中的非常簡單的POST
- 16. 複雜(或非常非常簡單)的MySQL查詢?
- 17. InvalidCastException從非常簡單的linq查詢
- 18. 非常簡單的WebForm與masterpage
- 19. 非常簡單的cron作業行
- 20. 非常簡單的條形圖
- 21. 非常簡單的邊緣檢測
- 22. 非常簡單的jQuery屬性提問
- 23. AS3 - 非常簡單的文字冒險
- 24. 非常簡單的android佈局
- 25. 非常簡單的io問題C++
- 26. 非常簡單的XMLHttpRequest不工作
- 27. Android非常簡單的在線高分
- 28. 非常簡單的Glassfish文件傳輸
- 29. iPad(非常)簡單的繪圖
- 30. 一個非常簡單的HTML表格
看看這裏: http://github.enthought.com/mayavi/mayavi/auto/examples.html – 2012-04-04 01:56:21
您是否找到答案?我正在尋找同樣的事情。 – Madz 2013-10-11 04:21:14