1

vtkファイルからいくつかの矢印を視覚化しましたが、VTKパッケージを使用してPythonでストリームラインを視覚化しようとしています。矢印は取得できますが、streamLinesは取得できません。コード;

# File:        wind.py
from vtk import *

reader = vtkStructuredPointsReader()
reader.SetFileName("wind.vtk")
reader.Update()

cubeOutline = vtkOutlineFilter()
cubeOutline.SetInputConnection(reader.GetOutputPort())
cubeMapper = vtkPolyDataMapper()
cubeMapper.SetInputConnection(cubeOutline.GetOutputPort())

cubeActor = vtkActor()
cubeActor.SetMapper(cubeMapper)
cubeActor.GetProperty().SetColor(1.0,1.0,1.0)

arrow = vtkArrowSource()
arrow.SetTipRadius(0.2)
arrow.SetShaftRadius(0.075)

arrowGlyph = vtkGlyph3D()
arrowGlyph.SetInputConnection(reader.GetOutputPort())
arrowGlyph.SetSource(arrow.GetOutput())
arrowGlyph.SetScaleFactor(0.05)

arrowMapper = vtkPolyDataMapper()
arrowMapper.SetInputConnection(arrowGlyph.GetOutputPort())

arrowActor = vtkActor()
arrowActor.SetMapper(arrowMapper)

points = vtkPointSource()
points.SetRadius(3.0)
points.SetNumberOfPoints(20)

streamers = vtkStreamLine()
streamers.SetInputConnection(reader.GetOutputPort())
streamers.SetSource(points.GetOutput())
streamers.SpeedScalarsOn()
streamers.SetMaximumPropagationTime(100)
streamers.SetIntegrationStepLength(0.2)
streamers.SetTerminalSpeed(0.1)

streamMapper = vtkPolyDataMapper()
streamMapper.SetInputConnection(streamers.GetOutputPort())
streamMapper.SetScalarRange(reader.GetOutput().GetScalarRange())

streamActor = vtkActor()
streamActor.SetMapper(streamMapper)

ren = vtkRenderer()
ren.SetBackground(.2, .2, .2)

renWin = vtkRenderWindow()
renWin.SetSize(800, 600)
renWin.AddRenderer( ren )

iren = vtkRenderWindowInteractor()
iren.SetRenderWindow( renWin )

ren.AddActor(cubeActor)
ren.AddActor(arrowActor)
ren.AddActor(streamActor)

renWin.Render()
iren.Initialize()
iren.Start()

何が欠けているのかわかりません。

4

1 に答える 1

2

ストリームラインを視覚化した経験はほとんどなく、vtkteem(vtkSeedTracts)を使用した経験があります。

指定しているポイントは、ストリームラインを形成するためのシードとして使用されていると思います。その場合、これらのポイントの場所も指定する必要がありますか?データがどのようなものかわかりませんが、シードポイントが正しく指定されていないため、流線が見えない気がします。

お役に立てば幸いです。

于 2012-10-31T09:29:09.893 に答える