1

簡単な質問ですが、いくつか試してみましたが、何もうまくいかないようです。

2D を使用して、いくつかの統計を 3D VTK シーンにオーバーレイしたいと考えていvtkTextActorます。これは問題なく動作しますが、3D シーンでテキストの背後に表示される内容によっては、テキストが見にくい場合があります。

このため、テキスト アクターの背後に 2D の半透明の「ボックス」を追加して、背景を暗くしたいと考えています。

これに適した VTK オブジェクトはどれですか? 私はこれまでに試しました:

  • vtkLegendBoxActor:私が望むものではありませんが、これをテキストなしで使用して、画面に半透明のボックスを表示できます。サイズを直接変更することはできず、一部のコンテンツが初期化されていないという警告が表示されます。
  • vtkImageData: 手動で画像データを作成してシーンに追加しようとしました。3D シーン内に配置され、オーバーレイとしては使用されなかったと思います。そうしないと、まったく表示できませんでした。
  • vtkCornerAnnotation:ウィンドウサイズに合わせて拡大縮小し、コーナーに固定され、背景の不透明度をAFAIKに設定できません。
  • vtkTextActor: 背景色または不透明度を設定できません

VTKで私が求めているものをどのように達成できるか誰か教えてもらえますか?

4

2 に答える 2

1

これを行う方法を見つけましたが、これはうまくいくようですvtkPolyMapper2D。これを行うのは非常に愚かな方法のようです。もっとエレガントなものがあれば、私はすべての耳です。

import vtk
extents = [[0,0],[620,0],[620,220],[0,220]]

polyPoints = vtk.vtkPoints()

for x, y in extents:
    polyPoints.InsertNextPoint(x, y, 0)

num_corners = len(extents)
polyCells = vtk.vtkCellArray()
polyCells.InsertNextCell(num_corners + 1)

for i in range(0, num_corners):
    polyCells.InsertCellPoint(i)

polyCells.InsertCellPoint(0) ## Rejoin at the end

poly_profile = vtk.vtkPolyData()
poly_profile.SetPoints(polyPoints)
poly_profile.SetPolys(polyCells) ## Goes solid

cut_triangles = vtk.vtkTriangleFilter()
cut_triangles.SetInput(poly_profile)

_poly_mapper = vtk.vtkPolyDataMapper2D()
_poly_mapper.SetInput(poly_profile)
_poly_mapper.SetInputConnection(cut_triangles.GetOutputPort())

_actor = vtk.vtkActor2D()
_actor.SetMapper(_poly_mapper)
_actor.GetProperty().SetColor([0.1,0.1,0.1])
_actor.GetProperty().SetOpacity(0.5)
#Add to renderer as normal  
于 2013-07-04T04:06:45.977 に答える
0

vtktexture、vtkimagedataを使用し、透かしのように不透明度を下げて、独自の画像をテクスチャ背景としてvtkrendererに追加するだけです。それでおしまい

于 2014-09-18T09:08:51.573 に答える