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

# 3D Virtual Twin

> A multi-model 3D scene for digital twins, with lighting and live model updates.

<Info>
  **Category:** Display · **Reads data:** live model state · **Sends commands:** no
</Info>

## Mental model

A **3D Virtual Twin is a live digital twin.** A full 3D scene of one or more models,
with lighting and environment — and you can move, rotate, recolor, and animate the
models in real time from a device.

## When to use it

* A digital twin that mirrors a physical device's state
* A rich multi-model 3D scene

## Settings

### Style / Scene

* **Environment preset** · **background color**
* **Ambient / directional intensity** · **shadows**
* **Field of view** · **axes size**
* **Animation index / speed**
* **Enable controls / damping / antialiasing**

<Note>
  On first drop, the scene shows a **sample cube** so it's interactive immediately —
  replaced once you add models.
</Note>

## Example — drive models live from firmware

```cpp theme={null}
std::vector<ThreeDModelUpdate> models = { /* id, position, rotation, scale, color… */ };
device.update3DWidget(targetId, "twin", models);
```

## Script API example

The same interactions from a [dashboard script](/script/overview):

```js theme={null}
// Update one model in the scene (same shape the device pushes)
widget.setValue('twin', { modelId: 'arm', updates: { rotation: [0, 45, 0] } });
```

<Card title="3D Viewer" icon="cube" href="/dashboard/widgets/threed-viewer">
  A single-model viewer.
</Card>
