2.5.2 カラーテーブル作成
色付けに関しては,今まで使用してきた vtkLookupTable ではなく,vtkColorTransferFunction を使えばよい。71 - 80 行目で,スカラー値とRGB値を対応させつつカラーテーブルを作成 している。たとえば,75行目ではスカラー値 -3800.0に RGB = (0.0, 0.0, 1.0)を割り当ててい る。このようにして作ったカラーテーブルを 95行目でvtkLookupTableと同じ関数を使って,
vtkPolyDataMapperに渡している。
(作成したカラーテーブルは,負の値で青っぽく,正の値で赤っぽくなる。)
2.5.3 別のスカラーで色づけ
Figure 2.16: Field Data:複数のデータを持つことができる
凹凸をつけるスカラーデータとは別のスカラーデータで色づけするには,vtkFieldDataとい うクラスを使えばよい。このクラスは,配列を複数まとめて持つことができる(FIgure 2.16)。
40 - 47: 色づけ用のデータを元データから作成,sdata mに代入。このスカラーデータで色づけ
をする。実際には,ファイルから温度などのデータを読み込むことになる
49 - 56: 凹凸用データをsarrayに,色づけ用データをsarray2にセット。それぞれに“Picard”,
“Riker”とSetNameで名前をつけている
58 - 61: sarrayとsarray2をfd(vtkFieldData)にセット
66:等間隔メッシュデータに,fd(sarray, sarray2を保持)をセット
68 - 69: SetActiveScalarsで,ポリゴンデータを作るスカラーデータとして,“Picard”を使うよ うに指示
97 - 99:色付けにfdにあるデータ・“Riker”を使うように指示
パイプライン構造はFigure 2.17,実行結果はFigure 2.18。Xが小さいところと大きいところで,
色(青っぽい→赤っぽい)が変わっているのが確認できる。これは,圧力の等値面を温度で色 づけする,などに応用できる。
Figure 2.17:サンプルプログラム4のパイプライン構造
Figure 2.18: 富士山周辺:地面の凹凸は“Picard”,色づけは“Riker”を使用
Table 2.2:本章で紹介したクラスおよびそのメソッド
頂点移動 vtkWarpScalar
法線ベクトル計算 vtkPolyDataNormals ポリゴンの三角化 vtkTriangleFilter
照明設定 vtkLight
: SetPosition(float, float, float) : SetFocalPoint(float, float, float)
配列 vtkFloatArray
: SetName(const char *)
配列関係 vtkFieldData
: AddArray(vtkDataArray *) データセット vtkImageData
: GetPointData()(->ShallowCopy(vtkFieldData *)) : GetPointData()(->SetActiveScalars(const char *)) カラーテーブル vtkLookupTable
: SetNumberOfColors(int n)
: SetTableValue(vtkIdType, float [4]) カラーテーブル vtkColorTransferFunction
: AddRGBPoint(float value, float r, float g, float b) Mapper vtkPolyDataMapper
: SetScalarModeToUsePointFieldData() : ColorByArrayComponent(char *, int) カメラ設定 vtkCamera
: SetPosition(double, double, double) : SetFocalPoint(double, double, double) : SetViewUp(double,double, double) : SetClippingRange(double, double) : SetViewAngle(double) /degreeで指定 : ParallelProjectionOn(),〜Off()
: SetParallelScale(double)
: Azimuth(double) / degreeで指定 : Elevation(double) / degreeで指定 : Roll(double) / degreeで指定 : Pitch(double) / degreeで指定 : Yaw(double) / degreeで指定 : OrthogonalizeViewUp()
Window関係 vtkRenderWindowInteractor, vtkInteractiveStyleTrackball
VRML他 vtkVRMLExporter, vtkIVExporter, vtkOBJExporter, vtkRIBExporter
Chapter 3
VTK 形式のデータ
3.1 本章の概要
VTKのデータ形式の解説をする。この形式のデータを作ると,vtk〜Readerというクラスで読 み込むことができるようになり,自らC/C++の関数を使いデータを読み込んむ部分を可視化プ ログラムに組み込まなくて良い。また,データの格子サイズなどをプログラムの中に書き込ま なくても良いので,プログラムの汎用性が高まる。
ここでは等間隔,Rectilinear Gridについて,VTK形式のデータの作り方を紹介する。
VTK形式のデータは,アスキーやバイナリの生データの前に,ヘッダ(格子点のサイズな ど)がついているだけである。