私が理解しているように、vtkレンダリングウィンドウを作成すると、別のレンダラーを追加することができ、レンダラーごとに異なる見方からレンダリングすることができます。いいえ、実際にシーンをレンダリングするには、vtkのレンダーウィンドウのメソッドrender()を使用して、すべてのレンダラーを並行してレンダリングします。現在、GetZbufferDataという名前のvtkレンダリングウィンドウメソッドがあります。このメソッドは、明らかにzバッファを含む配列を返します。だから私の質問は、どのレンダラーがこのzbufferに対応しているのですか? ありがとうございました。vtkレンダリングウィンドウGetZbufferDataメソッド
1
A
答えて
1
すべてのレンダラーが同じウィンドウにある場合、それらは同じフレームバッファーを共有するので、同じzバッファーも共有します。あなたの質問に対する簡単な答えは、「すべての人に」です。個々のZ値を取得するには、レンダラーで正確に何をしているかによって異なります。
「タイル表示」を実行している場合は、各レンダラーに異なるビューポート(vtkRenderer::SetViewport()
、hereなど)を割り当てる必要があります。その後、適切なx、y座標をGetZBufferData関数に渡すことによって、特定の「タイル」(レンダラー)のzデータにアクセスできます。例えば、vtkRenderWindow renWin
のren1
をレンダラーに属するZバッファの全体の一部を取得する:あなたが同じビューポートを持っている場合
double x1 = ren1->GetViewport()[0] * (renWin->GetSize()[0] - 1);
double y1 = ren1->GetViewport()[1] * (renWin->GetSize()[1] - 1);
double x2 = ren1->GetViewport()[2] * (renWin->GetSize()[0] - 1);
double y2 = ren1->GetViewport()[3] * (renWin->GetSize()[1] - 1);
float *ren1Z = renWin->GetZbufferData(
static_cast<int>(x1),static_cast<int>(y1),static_cast<int>(x2),
static_cast<int>(y2));
することは、それはより複雑になります。 vtkRenderWindow::SetNumberOfLayers(int)
を設定することで、複数の「レイヤー」を持つレンダリングウィンドウを作成し、各レンダラーを別のレイヤー(vtkRenderer::SetLayer(0-based layer index)
)に割り当てることができます。ウィンドウはレイヤー0からレイヤーの最後までレンダリングされます。特定のレンダラーのZデータを1つだけ取得することに興味がある場合は、最後のレイヤーでレンダリングした場合に取得する必要があります。しかし、私はzバッファが個々のレンダラのレンダリングの間でクリーンアップされているかどうかはわかりませんが、実際にはそうではないと賭けているので、矛盾した混乱を招くかもしれません。
関連する問題
- 1. VTKレンダリングウィンドウを閉じずにコードフローを作成する方法は?
- 2. VTK VTKのPython APIを通じて
- 3. vtkデータフォーマットエラー
- 4. VTKパイプラインアップデート
- 5. python-vtk
- 6. VTKはTextActor
- 7. VTK/Python /コンパイル
- 8. img VTK for ITK
- 9. VTKコマンドライン入力
- 10. マンモグラフィーのVTKボリュームレンダリング
- 11. VTK 7.1.1:vtkX3DExporter例外
- 12. VTKおよびパラビューボリュームレンダリング
- 13. VTKのDICOMとポイントクラウド
- 14. パラグラフ:レンダリングウィンドウでの軸のアスペクト比の変更
- 15. Pythonで.vtkファイルを読む
- 16. VTKでvtkInteractorStyleFlightを使用
- 17. Qt/VTK:カスタムインタラクタクラスのアクセス機能
- 18. VTKマーチングキューブの代わりに
- 19. XTKでASCII VTKを読む
- 20. ビルVTK 2008 Windowsの64ビット
- 21. vtkでのオブジェクト作成デザインパターン
- 22. vtk pythonでライブポイントクラウドデータを更新
- 23. VTK 7.1.0 + Python 3.5.2 make error
- 24. openVRでvtkを使用
- 25. VTK未定義参照
- 26. Python、C++ VTKアフィン変換
- 27. VTKでのユーザーオプションの追加
- 28. VTK Delete()とデータ削除
- 29. QtのVTKのリンクは
- 30. ITK/VTKをMATLABまたはMATLABにVTK/ITK環境にインポートしますか?