vtkActorにプリミティブを描画する必要がありますが、どのようにすればよいか分かりません。たぶん私はこのためにOpenGLの関数を使用することがありますか?この例ではhttp://www.vtk.org/Wiki/VTK/Examples/Cxx/Plotting/Diagramが動作していますが、対話的に描画する必要があります。 回答ありがとうございます。vtkにプリミティブ(点、線など)を描画する方法は?
答えて
描画プリミティブとはどういう意味ですか?
VTKは、さまざまな種類のデータセット(描画とは対照的に)を扱うように調整されています。たとえば、vtkPolyDataMapperとvtkActor、およびvtkImageActorなどのクラスを使用して3Dメッシュを描画することができます。
一般に、アクターを作成して画面に表示する1つ以上のデータセットがあります。
あなたはGDIやHTML5キャンバスで実際にプリミティブをスクリーン上に描画しません。必要なものに応じて、適切なデータセットを持つ別のアクタ、インタラクティブ性を持つアクタの一種であるウィジェット、またはシーン全体の上にオーバーレイとして描画される2Dアクタを追加するか、画面座標で記述されます。
達成しようとしていることを説明できる場合は、より具体的なものを指摘できます。
免責事項:未テストコード!私はこれを記憶から執筆しています。必要に応じてマニュアルをテストしてお読みください。次のコードは1行を描くことに注意してください。パフォーマンス上の理由から、私は行ごとにActorを作成するのではなく、提案します。 1つのアクタ内に複数の行(すべてではないにしても)を作成します。ただ、ポイントを追加し、正しいインデックスを設定...
vtkPoints* points = vtkPoints::New();
vtkCellArray* lineIndices = vtkCellArray::New();
points->InsertNextPoint(0, 0, 0);
points->InsertNextPoint(10, 0, 0);
lineIndices->InsertNextCell(2);
lineIndices->InsertNextCellPoint(0); // indices to points array.
lineIndices->InsertNextCellPoint(1);
vtkPolyData* polyData = vtkPolyData::New();
polyData->SetPoints(points);
polyData->SetLines(lines);
// continue with standard mapper, actor setup...
ありがとう、私はすでにそれを試してみます。しかし、この例では、多くの行を作成します。そして、この行のパラメータは、幅のように、俳優に設定され、私は別のものが必要です。さて、私は、描画のために.netからSystem.Drawingのものを使って問題を解決し、vtkImageImportでビットマップをアクターに読み込みます。 –
私はVTKで画面のグリッドを描画する方法を探していたと私は、コードのこの部分を思い付いた:
vtkSmartPointer<vtkPoints> points = vtkSmartPointer<vtkPoints>::New();
vtkSmartPointer<vtkCellArray> lineIndices = vtkSmartPointer<vtkCellArray>::New();
for(int iIndex = 0, connectivityIndex = 0; iIndex <= m_resolution; ++iIndex, connectivityIndex += 4)
{
double pointCoordinate = m_range[0] + (m_range[1] - m_range[0]) * (iIndex/static_cast<double>(m_resolution));
points->InsertNextPoint(pointCoordinate, -m_range[1], 0.0);
points->InsertNextPoint(pointCoordinate, m_range[1], 0.0);
points->InsertNextPoint(-m_range[1], pointCoordinate, 0.0);
points->InsertNextPoint(m_range[1], pointCoordinate, 0.0);
lineIndices->InsertNextCell(2);
lineIndices->InsertCellPoint(connectivityIndex + 0);
lineIndices->InsertCellPoint(connectivityIndex + 1);
lineIndices->InsertNextCell(2);
lineIndices->InsertCellPoint(connectivityIndex + 2);
lineIndices->InsertCellPoint(connectivityIndex + 3);
}
vtkSmartPointer<vtkPolyData> data = vtkSmartPointer<vtkPolyData>::New();
data->SetPoints(points);
data->SetLines(lineIndices);
vtkSmartPointer<vtkPolyDataMapper> mapper = vtkSmartPointer<vtkPolyDataMapper>::New();
mapper->SetInputData(data);
vtkSmartPointer<vtkActor> actor = vtkSmartPointer<vtkActor>::New();
actor->SetMapper(mapper);
vtkSmartPointer<vtkRenderer> renderer = vtkSmartPointer<vtkRenderer>::New();
renderer->AddActor(actor);
それは@shashコードに基づいており、動作しています。
- 1. SDL2点線を描画する方法
- 2. LibGDXの2点間の線を3Dで描画する方法
- 3. OnDrawFrame()の外にプリミティブを描画する方法は?
- 4. Windowsフォーム:DataGridViewに線や線を描画する方法は?
- 5. イメージ上の2点間を迅速に3線で描画する方法は?
- 6. 光線を線形描画に与える方法は?
- 7. DirectXで1ピクセルの長い点線を描画する方法は?
- 8. JavaFx 2.x:破線や点線を描く方法は?
- 9. Pygletを使用して透明プリミティブを描画する方法
- 10. R-特定の点を横切る曲線を描画する方法
- 11. 画面座標を使用してOpenGLプリミティブ(GL_POINT、GL_LINEなど)を描画する方法は?
- 12. JavaFX |どのように点を描画して線を結ぶ方法を呼び出す方法
- 13. OpenLayersの線の後ろの描画点
- 14. Googleマップを使用して点線のポリラインを描画する方法 - Android
- 15. 効率的に複数のプリミティブをcocos2d-iphoneに描画する方法は?
- 16. uiTableField内でuiTextFieldの下に線を描画する方法は?
- 17. SVGに線の一部を描画する方法は?
- 18. 列間に関係線を描画する方法は?
- 19. UITableViewセルに複数の線(グリッド)を描画する方法は?
- 20. ウィンドウ内に高速対角線を描画する方法は?
- 21. UICollectionViewに線を描画する方法は?
- 22. MPAndroidChartを使用して破線(点線)でbarchartのスタック部分のみを描画する方法は?
- 23. キャンバス上の2点間にアークを描画する方法は?
- 24. UIViewに点を描画する方法は?
- 25. A点からB点に線を描画するにはどうすればいいですか?
- 26. 点を通る直線を描画する。 matplotlibの
- 27. Pythonで3Dでプリミティブを描画する方法はありますか?
- 28. pictureBoxは線を描画する最良の方法です
- 29. キャンバスで曲線の描画をアニメーション化する方法は?
- 30. WPF Canvasでグリッド線を描画する方法は?
ありがとうございます、私はあなたが言うように問題を解決します。私は描画のためにSystem.Drawingをペイントして使用する特別な2dアクタを作成します。 –