Virtual objects
virtual_object.tox
Layer: spatial logic
In: position (CHOP, optional)
Out: shape (POP, blue), position + size (CHOP, green)
A virtual object is an invisible geometric volume (a sphere, box or cylinder) that you place in the physical room for other components to interact with. It does not draw anything itself. It is a spatial definition that other components can measure against, listen to or display. It is the basic building block of the lab's interaction logic: zones, triggers, attractors and sound sources are all made from virtual objects.
Role in the setup
Virtual objects connect the tracked body to the content. A tracked hand has no meaning until it can be related to something. The virtual object provides that "something" in the shared room frame. Its shape output feeds Calculations and the Virtual object viewer. Its position output can place a sound source in Ambisonics sound control.
Technical specification
- Primitives. You can choose a sphere (radius), a box (width X, height Y, depth Z) or a cylinder. Only the size fields that belong to the current shape are active.
- Transform. Position XYZ and Rotate XYZ place the object in the room frame (metres; X = width, Y = height, Z = depth). If you wire a CHOP into the optional input, it drives the position, so an object can follow a tracked joint or an animated path.
- Soft boundary. For spheres, Outer shell adds a second, larger radius around the core. The space between the two radii is a transition zone that CALC uses for its Fade to sphere calculation.
- GPU geometry. Since the October 2026 revision, the shape is a POP (point operator), so geometry is processed on the GPU. Scenes with many objects stay responsive. Each object gets its own colour, which the viewer picks up automatically.
- Closed volumes. Distances and inside/outside tests only make sense for closed shapes. All built-in primitives are closed.
- Position capture. Get pos (shift + M) captures a position interactively instead of typing it.
Parameters
| Parameter | Function |
|---|---|
| Virtual Object | shape: sphere, box or cylinder |
| Width X, Height Y, Depth Z, Radius | size. Only the fields for the current shape are active. |
| Position XYZ, Rotate XYZ | placement in the room frame |
| Get pos (shift + M) | captures a position instead of typing it |
| Outer shell + Radius | sphere only. Adds an outer sphere for a soft edge, used by Fade to sphere. |
| Viewport | camera for the node preview only. It does not move the object. |
Outputs
- Blue (POP): the shape geometry, for CALC and the viewer.
- Green (CHOP): centre position
tx ty tzand a size value taken from the radius. In Ambisonics sound control, this size value sets the source's Rangegain.
Limitations and expected behaviour
- Size fields greyed out: they belong to another shape.
- Outer shell greyed out: the shape is not a sphere.
- Preview looks squashed or off-centre: this is the preview viewport. Switch viewports.
- Nothing visible in the room: this is expected. The component only defines the shape. To see it, use the viewer or render it into a projection.
Relations
- → Calculations (input 2, typically)
- → Virtual object viewer
- → Ambisonics sound control (position and size of a sound source)
- ← Azure Kinect sensors (optional: the object follows a joint)
References
- User README: virtual_object-README
- Repository: <https://github.com/SpatialComputingL/Td-updates>
- Overview: Lab Tools