vtk
こんにちは世界
サーチ…
Hello Worldの例
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
int main(int /*argc*/, char ** /*argv*/)
{
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
interactor->Start();
return 0;
}
壊す:
#include <vtkAutoInit.h>
VTK_MODULE_INIT(vtkRenderingOpenGL2);
VTK_MODULE_INIT(vtkRenderingFreeType);
VTK_MODULE_INIT(vtkInteractionStyle);
VTKデザインでは、 ファクトリメソッドデザインパターンを使用して、 <ClassName>::New()
メソッドを使用してvtkObject派生クラスの新しいインスタンスを作成します。これにより、実行時にプラットフォーム固有の実装を選択して、必要なインタフェースを満たすことができます。
この仕組みが機能するためには、ファクトリクラスをvtkインフラストラクチャで選択できるように、自身を「登録」する必要があります。このトピックに関する詳細は、こちらをご覧ください 。
VTK_MODULE_INIT
は、必要なモジュール/ライブラリ(この例ではvtkRenderingOpenGL2
、 vtkRenderingFreeType
、 vtkInteractionStyle
)を自動的に初期化するために使用されるマクロです。モジュールの初期化に失敗すると、 <ClassName>::New()
呼び出しでNULL
れ、ランタイムエラーが返されNULL
。
#include <vtkSmartPointer.h>
#include <vtkTextActor.h>
#include <vtkRenderer.h>
#include <vtkRenderWindow.h>
#include <vtkRenderWindowInteractor.h>
vtkSmartPointer
ロールは、 vtkObject
派生クラスインスタンスのライフタイムを制御する参照カウントを管理する点で、 std::unique_ptr
ロールに似ています。
vtkTextActor
は、画面に文字列を表示するために使用できるシンプルなクラスです。
vtkRenderer
は、シーンのコンテンツを管理するクラスです。具体的には、
-
vtkActor2D
から派生した2Dアクター -
vtkProp3D
から派生した3Dアクター - ボリューム:
vtkVolume
- カメラ:
vtkCamera
- ライト:
vtkLight
vtkRenderWindow
は、プラットフォームに依存しないインターフェイスを提供するクラスです。
- レンダラーのコレクションを管理します。
- ユーザーの入力を処理して、
vtkRenderWindowInteractor
をさらに処理するためにvtkRenderWindowInteractor
に転送する
vtkRenderWindowInteractor
は、ユーザ入力(マウス/キーボード/タイミング)イベントを対応するアクションにマッピングするクラスです。内部的には、 vtkInteractorStyle
を使用してさまざまなマッピング動作を提供します。
auto textActor = vtkSmartPointer<vtkTextActor>::New();
textActor->SetInput("Hello World");
テキストアクターを作成し、表示する文字列を設定する
auto renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(textActor);
renderer->ResetCamera();
- レンダラーを作成する
- テキストアクターを追加する
- カメラの位置をリセットして、アクタが画面に表示されるようにします。
auto interactor = vtkSmartPointer<vtkRenderWindowInteractor>::New();
auto renderWindow = vtkSmartPointer<vtkRenderWindow>::New();
renderWindow->AddRenderer(renderer);
renderWindow->SetInteractor(interactor);
レンダリングするウィンドウを作成し、レンダラーを追加してインタラクタを設定します。ファクトリ関数は、利用可能/登録済みのファクトリクラスに基づいて適切な実装を自動的に選択します
interactor->Start();
これは、ユーザーが終了( qキー)を要求するか、ウィンドウを閉じるときにのみ返されるブロッキング呼び出しです。メッセージループを実行し、メッセージをディスパッチします。
これを実行すると、次のようなウィンドウが作成されます。
ノート
このexeによって使用されたDLLのこの一覧は次のとおりです。
VTKCommonCore-7.0.DLL
VTKInteractionStyle-7.0.DLL
VTKRenderingCore-7.0.DLL
VTKRenderingFreeType-7.0.DLL
VTKRenderingOpenGL2-7.0.DLL