> For the complete documentation index, see [llms.txt](https://stage-precision.gitbook.io/grid/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://stage-precision.gitbook.io/grid/spatial-interactive-experiences/applications/touch-surfaces.md).

# Touch Surfaces

Touch surfaces use spatial sensor data to detect small interactions on or close to a defined physical surface.

Typical applications include:

* Interactive walls
* Projection surfaces
* Screens
* Tables
* Floors
* Other touch-sensitive installation areas

Unlike people tracking, where the goal is usually to detect complete objects throughout a larger 3D environment, a touch application focuses on a much smaller and more precisely defined interaction space.

The most important design questions are therefore:

**Where is the interaction surface?**

**What should count as a touch?**

**How accurately does the resulting position need to represent that surface?**

***

### Design Around the Surface

A touch installation should normally be designed around the physical interaction surface rather than the maximum coverage of the sensor.

The useful tracking area may only be a thin region around:

* A wall
* A screen
* A tabletop
* A floor section

Sensor placement should make this area easy to observe while avoiding unnecessary measurements from the surrounding environment.

The Point Cloud Volume can then be configured specifically for this interaction rather than trying to interpret the complete room.

This usually results in:

* A smaller tracking area
* Less irrelevant point data
* More predictable clustering
* More useful output coordinates

***

### 2D LiDAR for Touch Interaction

2D LiDAR sensors can be particularly useful for touch surfaces.

A 2D LiDAR produces a single scan plane, but that plane can be positioned precisely in the 3D project environment.

For a touch wall, for example, the scan plane can be aligned with the relevant interaction area so that hands or fingers crossing the plane create clearly identifiable point measurements.

Compared with many 3D LiDAR scan patterns, the single scan line can provide a high spatial resolution along that plane.

This can make small interactions easier to identify.

{% hint style="info" %}
A touch project does not fundamentally have to use a 2D LiDAR.

The important requirement is that the selected sensor configuration provides enough useful spatial information at the interaction surface for the chosen clustering method.
{% endhint %}

***

### Align the Sensor to the Physical Surface

Touch applications usually benefit from a more surface-specific alignment than general room tracking.

Clearly identifiable positions on the interaction surface can be used as spatial references.

For example, on a rectangular screen or projection surface, reference positions may include:

* Bottom-left
* Bottom-right
* Top-left
* Other known points on the surface

With a high-resolution 2D scan, it can be practical to temporarily create a clear measurement at a known location by placing a finger or another small object into the scan plane.

The corresponding position can then be used during alignment.

This can be easier than trying to identify the exact physical corner of a surface from a sparse 3D point cloud.

For detailed alignment workflows, see the corresponding **Sensor Alignment** reference.

***

### Use a Dedicated Tracking Area

The active tracking area should closely represent the region where valid touch interaction can occur.

Avoid processing large parts of the room when only a small surface is relevant.

A dedicated Point Cloud Volume can therefore be used for the touch installation with:

* Surface-specific Include geometry
* Excludes where required
* Point filtering appropriate for the sensor density
* A clustering method designed for touch or small interactions

This keeps the processing focused on the actual interaction.

***

### Choose Touch-Specific Clustering

The clustering method should be selected based on the size and behavior of the interaction that needs to be detected.

A clustering configuration designed to identify complete people is generally not the same configuration required to detect a hand, finger, or other small contact.

The goal for a touch surface is usually to produce stable interaction positions rather than large 3D Bounding Boxes.

When evaluating the result, test:

* A single touch
* Multiple simultaneous touches
* Slow movement across the surface
* Fast movement
* Interaction close to the edges
* Very short touches
* A hand entering the tracking area without actually interacting with the intended surface

The clustering should identify the interactions required by the application without creating unnecessary detections from surrounding movement.

***

### Separate Different Detection Goals

A people-tracking pipeline and a touch-tracking pipeline usually require different clustering behavior.

For example:

**People Tracking**

→ detect complete people throughout the room

while:

**Touch Surface**

→ detect small interactions close to a specific surface

These are different analysis goals and are usually best treated independently.

A typical installation may therefore use:

**Room Sensors → Point Cloud Volume → People Clustering**

and separately:

**Dedicated Touch Sensors → Point Cloud Volume → Touch Clustering**

{% hint style="warning" %}
A Sensor Object can currently belong to only one Point Cloud Volume.

If the same physical sensor data would need to be processed simultaneously by completely different clustering pipelines, it cannot currently be assigned to both Point Cloud Volumes through the normal sensor hierarchy.
{% endhint %}

***

### Use Image-Based Processing When Appropriate

There is another option when spatial data already belongs to a different tracking pipeline.

A Point Cloud Volume can generate a depth image from the processed point cloud and send that image to an external real-time system.

For example:

**People Tracking Point Cloud Volume** → Image Rendering\
→ Depth Image\
→ NDI / SDI\
→ External Image Processing

An external system can then perform additional:

* Touch detection
* Blob detection
* Surface interaction analysis
* Custom image-based processing

This can be useful when the same spatial environment needs additional analysis without creating another clustering pipeline inside Grid Studio.

***

### Output Touch Positions

Once touch interactions are clustered, their positions can be sent through a Cluster Map Output like other final cluster data.

A typical architecture is:

**Touch Clusters → Cluster Map Output → Protocol Object → Interactive System**

The receiving system may only require:

* Interaction ID
* Position
* Scale

For a surface-based application, the coordinate system is especially important.

***

### Use Local or UV Coordinates

External interactive systems often do not want the absolute position of a touch somewhere in the complete venue.

They usually want to know:

**Where is the touch on this surface?**

Normalized **UV coordinates** are particularly useful for this.

A local Volume Object can represent the physical interaction area and convert the tracked position into a normalized coordinate space.

For example:

**Bottom-left → 0, 0**

**Top-right → 1, 1**

This provides a convenient coordinate system for:

* Projection content
* Interactive graphics
* Touch interfaces
* Media servers
* Other surface-based applications

A typical architecture is:

**Touch Point Cloud Volume** → Final Touch Clusters\
→ Local Volume\
→ UV Output\
→ External System

The orientation of the Volume defines the orientation of the UV space.

For a vertical wall, rotate the Volume so that it matches the physical surface.

***

### Design for the Edges

Touch systems should be tested across the complete usable surface, not only in the center.

Pay particular attention to:

* Corners
* Edges
* Areas furthest from the sensor
* Changes in point density
* Parts of the surface close to surrounding geometry

A touch that works perfectly in the center but becomes unstable at the edge is usually not a reliable interaction system.

Test known positions across the surface and compare the resulting coordinates with the expected interaction location.

***

### Avoid Unnecessary Processing

Touch tracking often works with a very specific spatial area and relatively small interactions.

Filters should therefore be used carefully.

Aggressive point filtering can remove exactly the small measurements required to detect a finger or hand.

When tuning:

1. Define the tracking area first.
2. Remove only clearly unwanted measurements.
3. Add clustering.
4. Verify the smallest interaction that must still be detected.
5. Add further filtering only when it improves the final touch result.

{% hint style="success" %}
Always judge a filter by its effect on the final interaction.

If a filter does not improve touch detection or output stability, leave it out of the pipeline.
{% endhint %}

***

### Typical Touch Architecture

A dedicated touch wall may look like:

**2D Spatial Sensor** → Surface Alignment\
→ Point Cloud Volume\
→ Small Tracking Area\
→ Point Filtering\
→ Touch Clustering\
→ Cluster Tracking / Cluster Filters\
→ Local UV Coordinates\
→ Protocol Output

A more complex installation may combine this with global people tracking:

**Global Sensors** → People Tracking Point Cloud Volume\
→ Presence / Position / Local Areas

and separately:

**Dedicated Surface Sensors** → Touch Point Cloud Volume\
→ Touch Positions

Both pipelines can then contribute to the same interactive experience without requiring them to use the same clustering configuration.

***

### Common Failure Patterns

#### Touches Are Detected Outside the Surface

Reduce the active tracking area or add appropriate Exclude geometry.

The Point Cloud Volume should contain as little irrelevant space around the interaction surface as practical.

#### Small Touches Disappear

Check whether Input Filters are too aggressive.

Radius-based or other neighborhood filters can remove valid touch measurements when the interaction contains only a small number of points.

#### Touch Position Is Inaccurate

Check:

* Sensor alignment
* Surface alignment
* Sensor resolution
* Point density at that position
* Local Volume orientation and dimensions
* Output coordinate space

#### Touch Works in the Center but Not at the Edges

The sensor may provide different point density or geometry across the surface.

Test the complete usable area and evaluate whether the physical sensor placement provides sufficient coverage.

#### Unwanted Hand or Body Movement Creates Touches

Reduce the spatial depth of the interaction area where possible and tune the clustering around the type of contact that should count as an interaction.

The tracking volume should represent the intended physical interaction as closely as practical.

***

### Keep the Application Goal Clear

A good touch-tracking system is not necessarily the system with the largest point cloud or the most complex filter chain.

The goal is a small and predictable spatial interaction:

**Physical interaction → Stable touch detection → Useful surface coordinates**

Keep the sensor placement, tracking area, clustering, and output focused on that result.

For the complete setup workflow, see **Building an Interactive Tracking Project**.

For detailed information about clustering methods, filters, local Volumes, and Map Outputs, see the corresponding **Reference** documentation.
