TexturedSphere
vtk-examples/Java/Texture/TexturedSphere
Description¶
vtkTexturedSphereSource object creates a polygonal sphere of specified radius centered at the origin.
The resolution (polygonal discretization) in both the latitude (phi) and longitude (theta) directions can be specified. It also is possible to create partial sphere by specifying maximum phi and theta angles.
Other languages
See (Cxx)
Question
If you have a question about this example, please use the VTK Discourse Forum
Code¶
TexturedSphere.java
import vtk.vtkActor;
import vtk.vtkNamedColors;
import vtk.vtkNativeLibrary;
import vtk.vtkPolyDataMapper;
import vtk.vtkRenderWindow;
import vtk.vtkRenderWindowInteractor;
import vtk.vtkRenderer;
import vtk.vtkTexturedSphereSource;
import vtk.vtkImageReader2Factory;
import vtk.vtkTexture;
import vtk.vtkImageReader2;
import vtk.vtkTransformTextureCoords;
public class TexturedSphere
{
// -----------------------------------------------------------------
// Load VTK library and print which library was not properly loaded
static
{
if (!vtkNativeLibrary.LoadAllNativeLibraries())
{
for (vtkNativeLibrary lib : vtkNativeLibrary.values())
{
if (!lib.IsLoaded())
{
System.out.println(lib.GetLibraryName() + " not loaded");
}
}
}
vtkNativeLibrary.DisableOutputWindow(null);
}
// -----------------------------------------------------------------
public static void main(String args[])
{
//parse command line arguments
if (args.length < 1)
{
System.err.println("Usage: java -classpath ... Filename(.png or .ppm) translate e.g earth.ppm 0 ");
return;
}
double translate[] = new double[3];
String inputFilename = args[0];
if (args.length > 1)
{
translate[0] = Double.parseDouble(args[1]);
}
else
{
translate[0] = 0.0;
}
translate[1] = 0.0;
translate[2] = 0.0;
System.out.print(translate[0] + " " + translate[1] + " " + translate[2] + "\n");
vtkNamedColors colors = new vtkNamedColors();
double Bgcolor[] = new double[4];
colors.GetColor("SteelBlue", Bgcolor);
// Create a sphere with texture coordinates
vtkTexturedSphereSource source = new vtkTexturedSphereSource();
source.SetPhiResolution(40);
source.SetThetaResolution(40);
// Read texture file
vtkImageReader2Factory readerFactory = new vtkImageReader2Factory();
vtkImageReader2 imageReader = new vtkImageReader2();
imageReader = readerFactory.CreateImageReader2(inputFilename);
imageReader.SetFileName(inputFilename);
// Create texture
vtkTexture texture = new vtkTexture();
texture.SetInputConnection(imageReader.GetOutputPort());
vtkTransformTextureCoords transformTexture = new vtkTransformTextureCoords();
transformTexture.SetInputConnection(source.GetOutputPort());
transformTexture.SetPosition(translate);
vtkPolyDataMapper mapper = new vtkPolyDataMapper();
mapper.SetInputConnection(transformTexture.GetOutputPort());
vtkActor actor = new vtkActor();
actor.SetMapper(mapper);
actor.SetTexture(texture);
// Create the renderer, render window and interactor.
vtkRenderer ren = new vtkRenderer();
vtkRenderWindow renWin = new vtkRenderWindow();
renWin.AddRenderer(ren);
vtkRenderWindowInteractor iren = new vtkRenderWindowInteractor();
iren.SetRenderWindow(renWin);
// Visualize
ren.AddActor(actor);
ren.SetBackground(Bgcolor);
renWin.SetSize(300, 300);
renWin.Render();
iren.Initialize();
iren.Start();
}
}