3D Scalar Field Example
Location: examples/rappture2/field3d/
Computes a 3D Gaussian scalar field f(x,y,z) = exp(-r^2/sigma^2) on a
regular grid and visualizes it as a colored point cloud.
Inputs
Gaussian Width – standard deviation of the blob
Grid Points per Axis – resolution (total points = npts^3)
Center X/Y/Z – position of the Gaussian center
Script highlights
# Build unstructured 3D mesh
pts_text = "\n".join(f"{x} {y} {z}" for x, y, z in points)
rx['output.mesh(grid).dim'] = '3'
rx['output.mesh(grid).units'] = 'm'
rx['output.mesh(grid).hide'] = 'yes'
rx['output.mesh(grid).unstructured.points'] = pts_text
# Write scalar field values
vals_text = "\n".join(str(v) for v in values)
rx['output.field(gaussian).component.mesh'] = 'output.mesh(grid)'
rx['output.field(gaussian).component.values'] = vals_text
tool.xml
<?xml version="1.0"?>
<run xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="../../../rappture2web/contract.xsd">
<tool>
<title>3D Scalar Field Viewer</title>
<about>Computes a 3D Gaussian scalar field f(x,y,z) = exp(-r²/σ²) on a regular grid and visualises it as a coloured point cloud.</about>
<command>python3 @tool/field3d.py @driver</command>
<contract>
<input>
<number id="sigma">
<about>
<label>Gaussian Width σ</label>
<description>Standard deviation of the Gaussian blob.</description>
</about>
<units>m</units>
<min>0.1m</min>
<max>2.0m</max>
<default>0.5m</default>
</number>
<integer id="npts">
<about>
<label>Grid Points per Axis</label>
<description>Number of sample points along each axis (total = npts³).</description>
</about>
<min>5</min>
<max>30</max>
<default>15</default>
</integer>
<number id="cx">
<about>
<label>Center X</label>
<description>X coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
<number id="cy">
<about>
<label>Center Y</label>
<description>Y coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
<number id="cz">
<about>
<label>Center Z</label>
<description>Z coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
</input>
<output>
<mesh id="grid"><about><label>Regular Grid</label><description>Hidden regular grid used by the Gaussian field output.</description></about></mesh>
<field id="gaussian"><about><label>Gaussian Field</label><description>Three-dimensional Gaussian scalar field.</description></about></field>
</output>
</contract>
</tool>
<input>
<number id="sigma">
<about>
<label>Gaussian Width σ</label>
<description>Standard deviation of the Gaussian blob.</description>
</about>
<units>m</units>
<min>0.1m</min>
<max>2.0m</max>
<default>0.5m</default>
<preset>
<value>0.3m</value>
<label>Narrow (0.3)</label>
</preset>
<preset>
<value>0.5m</value>
<label>Medium (0.5)</label>
</preset>
<preset>
<value>1.0m</value>
<label>Wide (1.0)</label>
</preset>
</number>
<integer id="npts">
<about>
<label>Grid Points per Axis</label>
<description>Number of sample points along each axis (total = npts³).</description>
</about>
<min>5</min>
<max>30</max>
<default>15</default>
</integer>
<number id="cx">
<about>
<label>Center X</label>
<description>X coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
<number id="cy">
<about>
<label>Center Y</label>
<description>Y coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
<number id="cz">
<about>
<label>Center Z</label>
<description>Z coordinate of the Gaussian centre.</description>
</about>
<units>m</units>
<min>-1.0m</min>
<max>1.0m</max>
<default>0.0m</default>
</number>
</input>
</run>
Running
rappture2web examples/rappture2/field3d/