VTK

「VTK」の編集履歴(バックアップ)一覧はこちら

VTK」(2008/08/29 (金) 16:31:01) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

#contents * Project configuration on VC++2005 |Include path: |(somewhere)\VTK5.0.4\include\vtk-5.0| |Library path: |(somewhere)\VTK5.0.4\lib| |Library files: |vtkCommon.lib vtkIO.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkjpeg.lib vtkNetCDF.lib vtkpng.lib vtkRendering.lib vtksys.lib vtktiff.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib| In order to go debug into VTK source codes, you have to change the library path like following: |Library path: |(somewhere)\vtk-5.0.4_bin\bin\debug| * Example1: Visualization with VTK #highlight(cpp){{ // vtk_test.cpp : Defines the entry point for the console application. // #include "stdafx.h" // first include the required header files for the vtk classes we are using #include "vtkConeSource.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkActor.h" #include "vtkRenderer.h" #include "vtkCamera.h" int _tmain(int argc, _TCHAR* argv[]) { // // Next we create an instance of vtkConeSource and set some of its // properties // vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 ); // // We create an instance of vtkPolyDataMapper to map the polygonal data // into graphics primitives. We connect the output of the cone souece // to the input of this mapper // vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInput( cone->GetOutput() ); // // create an actor to represent the cone. The actor coordinates rendering of // the graphics primitives for a mapper. We set this actor's mapper to be // coneMapper which we created above. // vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper ); // // Create the Renderer and assign actors to it. A renderer is like a // viewport. It is part or all of a window on the screen and it is // responsible for drawing the actors it has. We also set the background // color here // vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 ); // // Finally we create the render window which will show up on the screen // We put our renderer into the render window using AddRenderer. We also // set the size to be 300 pixels by 300 // vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 ); // // now we loop over 360 degreeees and render the cone each time // int i; for (i = 0; i < 360; ++i) { // render the image renWin->Render(); // rotate the active camera by one degree ren1->GetActiveCamera()->Azimuth( 1 ); } // // Free up any objects we created // cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete(); return 0; } }} * Example2: Load and access VTK data #highlight(cpp){{ vtkUnstructuredGridReader *polyDataReader = vtkUnstructuredGridReader::New(); // polyDataReader->DebugOn(); polyDataReader->ReadAllScalarsOn(); //NEVER FORGET THIS polyDataReader->ReadAllVectorsOn(); //NEVER FORGET THIS polyDataReader->SetFileName(str_vtk_file); polyDataReader->Update(); vtkUnstructuredGrid *polyData = polyDataReader->GetOutput(); if (polyData == NULL) { printf("##ERROR: polyData == NULL\n"); } printf("NUMBER OF POINTS: %d\n", polyData->GetPoints()->GetNumberOfPoints()); printf("NUMBER OF CELLS: %d\n", polyData->GetNumberOfCells()); printf("POINTS EXAMPLE: %d\n"); for (int i=0; i<3; i++) { printf("%lf %lf %lf\n", polyData->GetPoint(i)[0], polyData->GetPoint(i)[1], polyData->GetPoint(i)[2]); } printf("ELEMENTS EXAMPLE: %d\n"); for (int i=0; i<3; i++) { printf("%d ", polyData->GetCell(i)->GetCellType()); for (int j=0; j<polyData->GetCell(i)->GetNumberOfPoints(); j++) printf("%d ", polyData->GetCell(i)->GetPointId(j)); printf("\n"); } printf("POINT DATA: \n"); for (int i=0; i<pd->GetNumberOfArrays(); i++) { printf("%s\n", pd->GetArrayName(i)); } vtkPointData *pd = polyData->GetPointData(); vtkDataArray *arrT = pd->GetScalars("TEMPERATURE1"); double sum_T = 0.0; double tmp_T = 0.0; for (long i=0; i<arrT->GetNumberOfTuples(); i++) { tmp_T = arrT->GetComponent(i, 0); sum_T += tmp_T; } polyDataReader->Delete(); }}
#contents * Project configuration on VC++2005 |Include path: |(somewhere)\VTK5.0.4\include\vtk-5.0| |Library path: |(somewhere)\VTK5.0.4\lib| |Library files: |vtkCommon.lib vtkIO.lib vtkDICOMParser.lib vtkexoIIc.lib vtkexpat.lib vtkFiltering.lib vtkfreetype.lib vtkftgl.lib vtkGenericFiltering.lib vtkGraphics.lib vtkHybrid.lib vtkImaging.lib vtkjpeg.lib vtkNetCDF.lib vtkpng.lib vtkRendering.lib vtksys.lib vtktiff.lib vtkVolumeRendering.lib vtkWidgets.lib vtkzlib.lib| In order to go debug into VTK source codes, you have to change the library path like following: |Library path: |(somewhere)\vtk-5.0.4_bin\bin\debug| * Tips ** Show debug message vtkUnstructuredGridReader *polyDataReader = vtkUnstructuredGridReader::New(); polyDataReader->DebugOn(); ** Read all scalar and vector data VTK with default setting loads only one data. polyDataReader->ReadAllScalarsOn(); polyDataReader->ReadAllVectorsOn(); ** Get number of points and number of cells int num_points = polyData->GetPoints()->GetNumberOfPoints(); int num_celss = polyData->GetNumberOfCells(); ** Get array of scalar and vector data vtkPointData *pd = polyData->GetPointData(); vtkDataArray *arrP = pd->GetScalars("PRESSURE1"); vtkDataArray *arrV = pd->GetVectors("velocity"); ** Calculate distance between two point double point1[3] = {0,0,0}, point2[3] = {100,0,0}; double d = vtkMath::Distance2BetweenPoints(point1, point2); d = sqrt(d); * Example1: Visualization with VTK #highlight(cpp){{ // vtk_test.cpp : Defines the entry point for the console application. // #include "stdafx.h" // first include the required header files for the vtk classes we are using #include "vtkConeSource.h" #include "vtkPolyDataMapper.h" #include "vtkRenderWindow.h" #include "vtkActor.h" #include "vtkRenderer.h" #include "vtkCamera.h" int _tmain(int argc, _TCHAR* argv[]) { // // Next we create an instance of vtkConeSource and set some of its // properties // vtkConeSource *cone = vtkConeSource::New(); cone->SetHeight( 3.0 ); cone->SetRadius( 1.0 ); cone->SetResolution( 10 ); // // We create an instance of vtkPolyDataMapper to map the polygonal data // into graphics primitives. We connect the output of the cone souece // to the input of this mapper // vtkPolyDataMapper *coneMapper = vtkPolyDataMapper::New(); coneMapper->SetInput( cone->GetOutput() ); // // create an actor to represent the cone. The actor coordinates rendering of // the graphics primitives for a mapper. We set this actor's mapper to be // coneMapper which we created above. // vtkActor *coneActor = vtkActor::New(); coneActor->SetMapper( coneMapper ); // // Create the Renderer and assign actors to it. A renderer is like a // viewport. It is part or all of a window on the screen and it is // responsible for drawing the actors it has. We also set the background // color here // vtkRenderer *ren1= vtkRenderer::New(); ren1->AddActor( coneActor ); ren1->SetBackground( 0.1, 0.2, 0.4 ); // // Finally we create the render window which will show up on the screen // We put our renderer into the render window using AddRenderer. We also // set the size to be 300 pixels by 300 // vtkRenderWindow *renWin = vtkRenderWindow::New(); renWin->AddRenderer( ren1 ); renWin->SetSize( 300, 300 ); // // now we loop over 360 degreeees and render the cone each time // int i; for (i = 0; i < 360; ++i) { // render the image renWin->Render(); // rotate the active camera by one degree ren1->GetActiveCamera()->Azimuth( 1 ); } // // Free up any objects we created // cone->Delete(); coneMapper->Delete(); coneActor->Delete(); ren1->Delete(); renWin->Delete(); return 0; } }} * Example2: Load and access VTK data #highlight(cpp){{ vtkUnstructuredGridReader *polyDataReader = vtkUnstructuredGridReader::New(); // polyDataReader->DebugOn(); polyDataReader->ReadAllScalarsOn(); //NEVER FORGET THIS polyDataReader->ReadAllVectorsOn(); //NEVER FORGET THIS polyDataReader->SetFileName(str_vtk_file); polyDataReader->Update(); vtkUnstructuredGrid *polyData = polyDataReader->GetOutput(); if (polyData == NULL) { printf("##ERROR: polyData == NULL\n"); } printf("NUMBER OF POINTS: %d\n", polyData->GetPoints()->GetNumberOfPoints()); printf("NUMBER OF CELLS: %d\n", polyData->GetNumberOfCells()); printf("POINTS EXAMPLE: %d\n"); for (int i=0; i<3; i++) { printf("%lf %lf %lf\n", polyData->GetPoint(i)[0], polyData->GetPoint(i)[1], polyData->GetPoint(i)[2]); } printf("ELEMENTS EXAMPLE: %d\n"); for (int i=0; i<3; i++) { printf("%d ", polyData->GetCell(i)->GetCellType()); for (int j=0; j<polyData->GetCell(i)->GetNumberOfPoints(); j++) printf("%d ", polyData->GetCell(i)->GetPointId(j)); printf("\n"); } printf("POINT DATA: \n"); for (int i=0; i<pd->GetNumberOfArrays(); i++) { printf("%s\n", pd->GetArrayName(i)); } vtkPointData *pd = polyData->GetPointData(); vtkDataArray *arrT = pd->GetScalars("TEMPERATURE1"); double sum_T = 0.0; double tmp_T = 0.0; for (long i=0; i<arrT->GetNumberOfTuples(); i++) { tmp_T = arrT->GetComponent(i, 0); sum_T += tmp_T; } polyDataReader->Delete(); }}

表示オプション

横に並べて表示:
変化行の前後のみ表示:
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。