2016-10-28 8 views
0

私はVisual Studio 2010でVTKを使用しています。キューブの面に画像を適用したいと思います。キューブの面に画像を適用する - VTK

コード私の画像を読み込む:

// Read JPG image 
vtkSmartPointer<vtkJPEGReader> JPEGReader = vtkSmartPointer<vtkJPEGReader>::New(); 
JPEGReader->SetFileName(argv[1]); 
JPEGReader->Update(); 

// Image actor 
vtkSmartPointer<vtkImageActor> imageActor = vtkSmartPointer<vtkImageActor>::New(); 
imageActor->GetMapper()->SetInputData(JPEGReader->GetOutput()); 

セットアップキューブコード:

私はそれを行う方法
// Setup cube 
vtkSmartPointer<vtkCubeSource> cubeSource = vtkSmartPointer<vtkCubeSource>::New(); 
cubeSource->Update(); 
vtkSmartPointer<vtkPolyDataMapper> cubeMapper = vtkSmartPointer<vtkPolyDataMapper>::New(); 
cubeMapper->SetInputConnection(cubeSource->GetOutputPort()); 
vtkSmartPointer<vtkActor> cubeActor = vtkSmartPointer<vtkActor>::New(); 
cubeActor->SetMapper(cubeMapper); 
cubeActor->GetProperty()->SetDiffuseColor(.3, .6, .4); 

答えて

1

テクスチャマップとテクスチャマップを使用して、必要なものを実現する必要があります。私は、thisの小さな例を(出発点であなたを助けることができる)(しかし、Pythonで)適用しました。この場合、vtkTextureMapToPlaneは理想的なものではありません。なぜなら、キューブの2つの顔しかカバーしないからです(下の画像を参照)。しかし、私はのように、thisのリンクでは、私はVTK 5.8を使用しているので、私はそれを使用することができませんでしたトリックを行うことができるはずだと思います。

コード:

import vtk 

# Create a render window 
ren = vtk.vtkRenderer() 
renWin = vtk.vtkRenderWindow() 
renWin.AddRenderer(ren) 
renWin.SetSize(480,480) 
iren = vtk.vtkRenderWindowInteractor() 
iren.SetRenderWindow(renWin) 

# Generate a cube 
cube = vtk.vtkCubeSource() 

# Read the image data from a file 
reader = vtk.vtkJPEGReader() 
reader.SetFileName("yourimage.jpg") 

# Create texture object 
texture = vtk.vtkTexture() 
texture.SetInputConnection(reader.GetOutputPort()) 

#Map texture coordinates 
map_to_plane = vtk.vtkTextureMapToPlane() 
map_to_plane.SetInputConnection(cube.GetOutputPort()) 

# Create mapper and set the mapped texture as input 
mapper = vtk.vtkPolyDataMapper() 
mapper.SetInputConnection(map_to_plane.GetOutputPort()) 

# Create actor and set the mapper and the texture 
actor = vtk.vtkActor() 
actor.SetMapper(mapper) 
actor.SetTexture(texture) 

ren.AddActor(actor) 

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

結果:

enter image description here

関連する問題