> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ntop.com/llms.txt
> Use this file to discover all available pages before exploring further.

# What Is Field-Driven Design?

In the previous lesson, every parameter you defined—such as a fillet radius, wall thickness, or extrusion distance—was a constant: a single value applied uniformly throughout the geometry. Field-driven design replaces that constant with a field, allowing the value to vary throughout space.

In nTop, field-driven design is a modeling approach that uses mathematical fields, such as scalar or vector fields, to control geometry spatially. Rather than applying one value everywhere, a field can vary parameters such as lattice thickness, displacement, or pattern dimensions based on position, geometry, simulation results, or other spatial data.

You have already encountered a field that behaves this way: a Signed Distance Field (SDF). An SDF assigns a value to every point in space based on its signed distance from a surface. Field-driven design extends this concept beyond distance: any compatible field can drive a parameter, allowing that parameter to vary spatially.

In a Notebook, inputs that support field-driven values are identified by the Scalar Field Icon shown below.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/field_icon.png" />
</Frame>

*The Scalar Field icon in nTop*

## What is a Field?

In Course 1, we learned that a field is a rule that assigns a value to every location in 3D space. When those values are numbers or scalars, the result is a scalar field. A scalar field can be described by a mathematical function, F(x,y,z), that returns a numerical value at each point P=(x,y,z).

Fields are not limited to scalar values. A field can also assign a vector to each point in space, producing a vector field.

Weather provides a familiar example of both. Temperature and humidity are scalar fields because each location is associated with a single numerical value. Wind velocity is a vector field because each location has both a wind speed and direction.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/weather%20point%20map%20example.png" />
</Frame>

*Weather reports provide some nice concrete examples of fields. For example, the temperature and humidity at various points in the atmosphere can both be regarded as scalar fields, and wind velocity as a vector field*

### Fields in nTop

It can be helpful to think of fields as gradients for geometry. Just as a gradient controls how color varies across an image, a field in nTop controls how a design variable changes across space.

The examples below illustrate this relationship using a signed distance field, field-driven geometry, and a color gradient. In the geometry example, the field controls the pattern and diameter of holes across a plate based on their spatial position. Similarly, the radial gradient controls how the grayscale value changes with distance from its center.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/field%20gradient%20comparison.png" />
</Frame>

*A visual comparison between the field viewer (left), field-driven geometry (center), and a color gradient (right)*

In nTop, fields can control the spatial variation of many design variables, including lattice beam and wall thicknesses, fillet radii, pattern dimensions, and material properties. Any compatible parameter identified by the Field symbol can accept a scalar field instead of a fixed value, allowing that parameter to vary throughout the design.

## Why Use a Field Instead of a Constant?

A constant applies a single value uniformly. In nTop, many parameters can instead be driven by a field, allowing their values to vary continuously across a design. This enables two important capabilities: driving geometry from spatial data and controlling how design parameters vary throughout space.

### Drive Design with Spatial Data

Fields can be derived from more than geometry. They can also come from simulation results, physical measurements, or imported datasets, allowing design parameters to respond directly to spatial data.

For example, a Von Mises stress field from a structural simulation can drive rib thickness and density—creating thicker, denser ribs in regions of higher stress and thinner, less dense ribs in regions of lower stress. Rather than manually defining these parameters, the geometry adapts continuously to the underlying stress data.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Ribbed_panel_GIF.gif" />
</Frame>

*A uniform lattice rib design that transitions to a field-driven design based on the simulation results*

### Control Spatial Variation

Fields are also useful when no external dataset is involved. A field can define how a parameter varies smoothly across a part based on position or other geometric relationships. The next section explores different methods for creating and controlling these variations.

For example, a field can gradually increase shell thickness toward an edge, vary a Boolean blend radius across a transition, or control the progression from one profile to another. Instead of dividing the design into regions with individually defined constants, a single field can describe the variation continuously.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/variable%20shell.gif" />
</Frame>

*Variably shelled bracket with increased material near the cylindrical interfaces and reduced material farther from the interfaces*

## Creating and Controlling Fields

Now that you understand why fields are useful, the next step is learning how to create and control them. In this section, you will explore several approaches for defining fields in nTop and learn key tools for shaping their spatial variation. These techniques provide precise control over any compatible parameter identified by the Scalar Field symbol, enabling a wide range of field-driven design strategies.

### Extracting Distance Field of Implicit Bodies

Imported CAD or Mesh bodies do not have associated fields. However, converting them into implicit bodies generates distance fields. This means you can use any implicit body's geometry to drive your designs.

You can use the implicit body itself as the scalar field input or use the Scalar Field chip in its Properties panel if you want to manipulate this field further.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/implicit_bracket_field.gif" />
</Frame>

*Extracting the Scalar Field property* *from the implicit body's Properties Panel*

### Using Equations

You can also manipulate and define fields with mathematical equations using the **Scalar Field Variable** block to create the x, y, or z variables. These represent the three axes and have fields that look like a plane set at the origin, with the normal direction in the positive direction of the axis.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/xyz%20scalar%20field.png" />
</Frame>

*Scalar Field variables configured for the three axes x, y, z*

You can use mathematical operations such as multiplication and exponents with the x, y, and z fields, as well as math blocks from the Math tab, but be mindful of the units.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/x2%20math%20examples.png" />
</Frame>

*Examples of using math operations to modify the x field*

Just as you create fields from implicit bodies, you can also build implicit bodies from equations. However, to represent a geometry, it is best to use an implicit formula for its signed distance function, which is often difficult to achieve for more complex shapes.

For a simple geometry like the sphere, the standard form equation is:

*x2 + y2 + z2 = r2*

and the implicit form equation is:

*sqrt(x2 + y2 + z2) – r = 0*

The latter is the equation used to generate a sphere field. You can visualize the resulting implicit body with the visibility toggle and bring it into the Notebook from the Properties panel.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/sphere%20from%20field.png" />
</Frame>

*Creating a sphere implicit body using math blocks to create the equation for a sphere*

**The Evaluate Expression (BETA)** block allows you to write mathematical expressions using familiar syntax instead of constructing complex calculations using multiple interconnected blocks. This makes creating, reading, and editing engineering expressions easier. More on how to use this block here: [How to use the Evaluate Expression block](https://docs.ntop.com/help-articles/knowledge-base/implicit-modeling/how-to-use-the-evaluate-expression-block)

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/sphere%20from%20EE.png" />
</Frame>

*Using the **Evaluate Expression** block to create an implicit sphere*

### Converting Data or Images Into Fields

You can bring different types of data and even images into nTop, convert them into fields, and use them to drive your designs.

#### Generating Fields from Data

You can import any dataset as point maps in CSV format using the **Import Points**, **Import Table**, **Import Scalar Point Map**, or **Import Vector Point Map** block, then interpolate it with the **Field from Point Map** block to get values at other points and form a field.

<AccordionGroup>
  <Accordion title="Import Scalar Point Map & Import Vector Point Map">
    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/import%20point%20maps.png" />
    </Frame>

    Import external .csv data as a **Scalar Point Map** or **Vector Point Map**:

    * **Scalar Point Map:** Each row contains four values: x, y, z, s. The first three define the point location; the fourth defines the scalar value at that point.
    * **Vector Point Map:** Each row contains six values: x, y, z, u, v, w. The first three define the point location; the last three define the vector at that point.

    You can generate CSV files from CAD or spreadsheet software, or from scripting tools such as MATLAB or Python. First, save other readable file formats as .csv.

    <Tip>
      **Tips:**
    </Tip>

    * *Units* define the length units for point coordinates.
    * *Scale* scales imported values and lets you assign units.
    * Do not include units directly in the .csv file.
  </Accordion>

  <Accordion title="Field from Point Map">
    The **Field from Point Map** block interpolates Point Map data to create a field. It produces a Scalar Field from a **Scalar Point Map** or a **Vector Field from a Vector Point Map**.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/field%20from%20point%20map.png" />
    </Frame>

    *The **Field from Point Map** block*

    A common use of this block is to convert simulation results into a field, allowing simulation data to drive geometry modifications directly.

    <Tip>
      **Tips** for using **Field from Point Map:**
    </Tip>

    * Use the Field Viewer (F) to visualize the resulting field.
    * Collinear or coplanar Point Map data cannot be interpolated; in these cases, the block extrapolates values.
    * Choose an *interpolation* method based on the source data:
    * Nearest: Assigns each location the value of its nearest Point Map point.
    * Barycentric: Linearly interpolates values using surrounding points that form a tetrahedron. This method is recommended for Point Maps derived from tetrahedral meshes, such as Von Mises Stress Point Map or Temperature Point Map.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/interpolation%20types.png" />
    </Frame>

    *Comparison of Nearest and Barycentric interpolation applied to the same Point Map data, showing the discrete regions produced by Nearest interpolation and the smooth, continuous field produced by Barycentric interpolation.*

    Because the resulting field will drive geometry, smoothing can create more gradual transitions between field values.
  </Accordion>

  <Accordion title="Smoothen Field">
    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Smoothen%20Field.png" />
    </Frame>

    *An example of the **Smoothen Field** block*

    The **Smoothen Field** block applies Gaussian smoothing to a Scalar Field. Its inputs are:

    * ***Scalar Field*** — The field to smooth.
    * ***Grid Size*** — The spacing between sample points used to discretize the field. Smaller values preserve finer detail but increase computation time.
    * ***Smooth Iterations*** — The number of times the smoothing operation is applied. More iterations produce greater smoothing but increase computation time.
    * ***Interpolation Type*** — The interpolation method used between sampled values: *Linear* or *Cubic*.
    * ***Domain*** — An optional bounding box that defines the region to smooth. If you don't specify a domain, the block uses the input field's bounding box. Large domains may significantly increase computation time.
    * ***Extrapolation*** — Controls smoothing relative to the specified *Domain*. Select *Inside* to constrain smoothing to the domain or *Outside* to extend smoothing beyond it.

    Tips for using **Smoothen Field**:

    * **The Smoothen Field** block requires a discretized field. The ***Grid Size*** controls the sampling resolution; smaller values capture finer detail but require more computation.
    * Increasing ***Smooth Iterations*** produces a smoother field but also increases computation time.
    * Balance ***Grid Size*** and ***Smooth Iterations*** to achieve the desired smoothness without unnecessary computational cost.

    <Note>
      **Note:** *The* ***Smoothen Field*** *block does not work on fields with infinite negative domains. You can remedy this by entering a Bounding Box in the optional Domain input or by first using* ***Set Field Bounding Box*** *on the field before inputting it into* ***Smoothen Field***\*.\*
    </Note>
  </Accordion>
</AccordionGroup>

The image below illustrates each step of this workflow: importing a stress map using Import Scalar Point Map, converting the point map into a field with Field from Point Map, and smoothing the resulting field with Smoothen Field to prepare it for driving a geometry parameter.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Point%20map%20to%20field%20transform.png" />
</Frame>

*A visual comparison between a Point Map (top), an Interpolated Field (middle), and a Smoothened Field (bottom)*

Simulation and simulation result import blocks generate relevant fields directly, which you can access through their Properties panels. If your simulation software does not support a native output file type, you can instead import the results as a CSV point map using the **Import Scalar Point Map** or **Import Vector Point Map** blocks discussed in the previous section.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/import%20result%20properties.png" />
</Frame>

*Block options for importing simulation results into nTop*

Depending on the input point map, the **Field from Point Map** block may switch to an overload that outputs a non-field data type. In these cases, you can access the associated field through the output's Properties panel.

#### Bitmapping Images

Bitmapping uses image data to drive design features, such as surface textures or logos. Import an image using the **Import Bitmap** block, then visualize and position it with **Map Bitmap to Plane**. The original image dimensions are available in the imported bitmap's Properties panel. Use the *Length* and *Width* inputs to scale the image proportionally or independently to distort its proportions.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/bitmap%20blocks%20and%20properties.png" />
</Frame>

The **Map Bitmap to Plane** output provides six color fields in its Properties panel, each with values ranging from 0 to 1. Select the field that best fits the image and application. For example, the *Grayscale* field is well-suited for black-and-white images.

<Frame>
  <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/bitmap%20texture.png" />
</Frame>

*An example of texturing an implicit body using the **Map Bitmap to Plane** block*

Bitmap color fields can then drive geometry parameters, such as the offset distance of an implicit body using **Offset Body**. For additional guidance, see the [Training Guide: Texturing and Bitmapping](https://learn.ntop.com/courses/recorded-training-texturing-and-bitmapping/).

### Tools for Working with Fields

When working with fields, three blocks are used most frequently. All are located in the Math tab under Utilities. Expand the sections below to learn about the fundamental **Ramp**, **Transfer Function**, and **Mix** blocks.

<AccordionGroup>
  <Accordion title="Ramp Block">
    The **Ramp** block allows you to change a value based on a field. It can be applied to several types of scalar fields and allows you to rescale those existing fields to create new ones.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/ramp%20block.png" />
    </Frame>

    *The **Ramp** block*

    * **Scalar Field**: The field driving the Ramp. Define the *In Min/In Max* values based on this input.
    * **In Min/In Max**: The values where the Ramp will begin (min) and end (max). These values are in relation to the Scalar field (with 0mm being the neutral edge of the field). Negative values go inside the Real Field, and positive values expand.
    * **Out Min/Out Max**: The Ramp output values. *Out Min* is the output value at the *In Min* locations, and *Out Max* is the value reached at the *In Max* locations. They are the output field's values as a function of the *Scalar Field* input.
    * **Continuity**: Represents how the values will Ramp (by continuity order). See the image below to view the differences.

    The values ramp between the *In Min* and *In Max* values. Before *In Min*, the value stays constant at the *Out Min* value, and after *In Max*, the value stays constant at the *Out Max* value.

    <Note>
      **Note:** Include units when defining the *Out Min/Out Max* values *.*
    </Note>

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/ramp%20diagram.png" />
    </Frame>

    *In this example, a plane was used for the Scalar Field input to create the gradual linear change seen between the start and end of the **Ramp**.*

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/ramp%20continuity.jpg" />
    </Frame>

    *Visualization of the three different continuity options: Geometric (C0), Tangential (C1), and Curvature (C2)*

    The change does not always have to be linear, depending on the field used. For example, if you use the field of x2 to drive the **Ramp** block, you would get a quadratic change. See [this article](https://support.ntop.com/hc/en-us/articles/360062746253-How-to-create-a-quadratic-ramp) on the Help Center for a walkthrough on creating a quadratic **Ramp**.

    <Note>
      **Note:** Use the Field Viewer to visualize the new field created by the **Ramp** block by selecting the block and using the hotkey '**F**'. The new field will represent the output values assigned based on the spatial variation of the input field, which can then be used to control different design parameters.
    </Note>

    ### Example Applications

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/ramp%20voronoi%20diagram.jpg" />
    </Frame>

    *Manipulating density and beam thickness of a Voronoi lattice based on the field of a plane*

    This image shows the ramped lattice structure overlaid on the modifying field. The field modifies the seed point spacing and lattice thickness parameters.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/ramp%20field%20lattice%20comparison.jpg" />
    </Frame>

    *Manipulating lattice beam thickness based on simulated stress data that has been converted into a field and smoothened*

    The lattice beams were assigned a larger thickness value at areas of higher stress and a smaller thickness value at areas of lower stress.
  </Accordion>

  <Accordion title="Transfer Function Block">
    The **Transfer Function** block works very similarly to multiple mini ramps put together. This block gives you more control over the changes throughout the domain.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/transfer%20function%20block.png" />
    </Frame>

    *An example setup of the **Transfer Function** block*

    Instead of taking in minimum and maximum input and output values like the **Ramp** block, the **Transfer Function** requires lists of values as it uses piecewise interpolation to compute the output field value of a function approximated by a set of field data points.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/transfer%20function%20diagram.jpg" />
    </Frame>

    * **Value**: The field driving the Transfer Function, a reference for the input domain.
    * **Input**: Pre-populated as a Scalar List for a user-defined set of values.

    You can use the **Sequence from Bounds**, **Sequence**, or **Random Sequence** blocks for incremented or random set of values. You can find these in the *Math* tab of the Ribbon under *Utilities*. To learn more about using these sequence blocks, visit our [230: Intro to Automation](https://learn.ntop.com/courses/230-intro-to-automation/) course.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/transfer%20function%20sequence%20blocks.jpg" />
    </Frame>

    * **Output**: A Scalar Field List of output values. The length of this list should match the length of the **Input** list.

    <Note>
      **Note:** When defining the Input and Output values, ***make sure to******include units**\*\*.*
    </Note>

    * **Extrapolation**: How the output values extend beyond the specified input domain. See the image below for a comparison of the two options.
    * Clamped: Bounding output values remain constant beyond the specified domain
    * Linear: Linear extrapolation of output values beyond the specified domain

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/transfer%20function%20extrapolation.jpg" />
    </Frame>

    *Example of the two extrapolation options*

    ### Example Application

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/transfer%20function%20example.jpg" />
    </Frame>

    *Advanced manipulation of beam thickness and density of a Voronoi lattice using a Transfer Function*
  </Accordion>

  <Accordion title="Mix Block">
    The **Mix** block is a tool for blending two implicit geometries by mixing the values of their scalar fields based on a given factor.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Mix%20block.png" />
    </Frame>

    *An example setup of the **Mix** block to mix a **Box** and **Cone***

    The Factor value can range between 0 and 1, with 0 being entirely Input A and 1 being entirely Input B. The image below shows the effect of mixing a **Box** (Scalar Field A) and a **Cone** (Scalar Field B) using varying mix factors.

    <Frame>
      <img src="https://storage.googleapis.com/files-learn/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/mix%20factor.jpg" />
    </Frame>

    *A comparison of the **Mix** block outcomes with varying Factor values*

    The *Factor* can also be ramped using the previously introduced **Ramp** block. See the example below with the same **Box** and **Cone** geometries.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/mix%20ramp%20block.png" />
    </Frame>

    *Applying a **Ramp** block to the Factor input of the **Mix** block*

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/mix%20ramp%20example.jpg" />
    </Frame>

    *A diagram of the **Mix** block results with the ramped Factor input*

    ### Best Practice

    Because the **Mix** block performs operations on two fields to represent a new geometry, it is always a good idea to perform a clean-up step afterward. This ensures that the resulting field does not have an infinite negative domain, which you cannot render into a geometry.

    Using the **Set Field Bounding Box** block, either manually set a bounding box using the **Bounding Box** block or go into the properties of the initial design body and grab its Bounding Box chip. The resulting field is within the specified bounding box.

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Set%20field%20bounding%20box.png" />
    </Frame>

    *Applying a **Set Field Bounding Box** block to the **Mix** block*

    ### Example Application

    <Frame>
      <img src="https://files.learn.ntop.com/Courses/nTop%20Foundational%20Learning%20Course/Course%202/Images/Mix%20lattice%20example.png" />
    </Frame>

    *Gradually blending two types of TPMS lattices*

    Starting with the Gyroid at the bottom, a Ramped Mix was applied to gradually blend the structure with the Neovius lattice.
  </Accordion>
</AccordionGroup>

## What to Take Away

* Field-driven design replaces a uniform constant with a spatially varying field, enabling parameters such as thickness, displacement, blend radius, and pattern dimensions to change throughout a design.
* Fields may assign either scalar values or vectors to locations in space. Inputs that accept field-driven values are identified by the Scalar Field icon.
* Fields can be created from implicit-body distance fields, mathematical equations, simulation results, imported point maps, or bitmap images.
* Use the Field Viewer to verify a field's values and spatial behavior before using it to drive geometry.
* Carefully manage units, scale, interpolation, and field domains when importing or constructing fields to ensure predictable results.

## What's Next

You have now learned the fundamentals of field-driven design, including how to import data, convert it into fields, and work with those fields. Next, test your understanding with a knowledge check.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.