Here is a simple Python script to create and display a 3D sphere:
Import library
import vtk
Step 1: Create a source
sphere = vtk.vtkSphereSource()
sphere.SetRadius(5.0)
sphere.SetThetaResolution(50)
sphere.SetPhiResolution(50)
Step 2: Create a mapper
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(sphere.GetOutputPort())
Step 3: Create an actor
actor = vtk.vtkActor()
actor.SetMapper(mapper)
Step 4: Create a renderer and render window
renderer = vtk.vtkRenderer()
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
Step 5: Create a render window interactor
interactor = vtk.vtkRenderWindowInteractor()
interactor.SetRenderWindow(render_window)
Step 6: Add the actor to the renderer
renderer.AddActor(actor)
renderer.SetBackground(0.1, 0.2, 0.4) # Background color
Step 7: Start the visualization
render_window.Render()
interactor.Start()
Visualisation of the 3d scalar field
import vtk
import numpy as np
#
data = np.loadtxt("./scalar_field.txt")
#
points = vtk.vtkPoints()
scalars = vtk.vtkFloatArray()
for row in data:
x, y, z, value = row
points.InsertNextPoint(x, y, z)
scalars.InsertNextValue(value)
#
# Create a polydata object
polydata = vtk.vtkPolyData()
polydata.SetPoints(points)
polydata.GetPointData().SetScalars(scalars)
#
# Use a vtkGlyph3D to create scalable glyphs
sphere_source = vtk.vtkSphereSource()
sphere_source.SetRadius(0.01) # Base radius of the glyph (adjust as needed)
#
glyph3d = vtk.vtkGlyph3D()
glyph3d.SetSourceConnection(sphere_source.GetOutputPort())
glyph3d.SetInputData(polydata)
glyph3d.ScalingOff() # Disable scaling so all glyphs are the same size
glyph3d.Update()
#
# Create a mapper and actor
mapper = vtk.vtkPolyDataMapper()
mapper.SetInputConnection(glyph3d.GetOutputPort())
mapper.SetScalarRange(scalars.GetRange())
#
actor = vtk.vtkActor()
actor.SetMapper(mapper)
#
# Add a scalar bar
scalar_bar = vtk.vtkScalarBarActor()
scalar_bar.SetLookupTable(mapper.GetLookupTable())
scalar_bar.SetTitle("Scalar Value")
scalar_bar.SetNumberOfLabels(5)
#
# Create a renderer, render window, and interactor
renderer = vtk.vtkRenderer()
render_window = vtk.vtkRenderWindow()
render_window.AddRenderer(renderer)
#
render_window_interactor = vtk.vtkRenderWindowInteractor()
render_window_interactor.SetRenderWindow(render_window)
#
# Add the actor and scalar bar to the renderer
renderer.AddActor(actor)
renderer.AddActor2D(scalar_bar)
#
renderer.SetBackground(0.1, 0.2, 0.4)
#
# Start the rendering loop
render_window.Render()
render_window_interactor.Start()