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/