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

# Environment Editor

> Create and customize 3D environments for your robotics simulations and testing scenarios

## What is the Environment Editor?

The Environment Editor is a 3D design tool for setting up digital twins and static objects in an environment. You can arrange robots, cameras, sensors, areas, waypoints, and scene geometry before using them in simulation or workflows.

<CardGroup cols={3}>
  <Card title="Digital Twins in Env" icon="box">
    Robot, sensors, objects, and whole facilities
  </Card>

  <Card title="Env To Simulation" icon="play">
    One click export to Mujoco. Simulate camera streams and sensor data.
  </Card>

  <Card title="Env From Real" icon="arrows-left-right">
    Stream real data from your cameras and robots, visualize them in the
    environment
  </Card>
</CardGroup>

***

## Key Features

The Environment Editor provides a comprehensive set of tools for creating and managing your simulation environments.

<CardGroup cols={2}>
  <Card title="Drag & Drop Interface" icon="mouse-pointer">
    Intuitive visual editor with snap-to-grid functionality
  </Card>

  <Card title="Real time collaboration" icon="users">
    Work with your team in real time
  </Card>

  <Card title="Precise Positioning" icon="cube">
    Exact coordinate control for professional layouts
  </Card>

  <Card title="Multiple Views" icon="camera">
    Top-down, perspective, and orthographic views
  </Card>

  <Card title="Version Control" icon="rotate-left">
    Undo/redo and environment versioning
  </Card>

  <Card title="Live Preview" icon="play">
    Real-time physics simulation while editing
  </Card>
</CardGroup>

***

## Adding Primitives

stub: The **Add** menu (or the **+** button in the editor toolbar) includes a **Primitives** section. Primitives are curated public catalog assets with a short alias — things like cameras, lidars, and common generic objects — that you can drop into any environment in one click.

* **Where to find them:** open the 3D editor, click **Add → Primitives** (or the catalog icon in the sidebar) to browse the full list.
* **Why use them:** primitives are the fastest way to populate an environment. Because each primitive carries a short alias (e.g. `camera`, `lidar`), you can also instantiate them programmatically without knowing the full `vendor/slug` registry ID:

```python theme={null}
from cyberwave import Cyberwave

cw = Cyberwave()

# Browse available primitives and their aliases
for p in cw.assets.list_primitives():
    print(p.registry_id_alias, "->", p.registry_id)

# Instantiate by alias — no catalog search needed
camera = cw.twin("camera")
lidar  = cw.twin("lidar")
```

***

## Edge core connection status (Live mode)

When you are in **Live** mode, the right-hand panel shows an edge core status indicator:

* **Green dot**: expected edge cores are currently connected.
* **Gray dot**: one or more expected edge cores are not currently connected.

Hover the dot to see:

* how many edge cores are currently connected, and
* how many are expected for the environment.

Expected cores are derived from the unique edge fingerprints configured on twins in that environment.

***

## Twin presence indicator (Live mode)

In **Live** mode, every twin that has been paired to an edge device renders a small status dot overlaid on its kind icon. The dot consumes the same `edge_health` heartbeat that powers the Edge Devices status panel.

### States

| Color  | Meaning                                                           |
| ------ | ----------------------------------------------------------------- |
| Green  | Connected — heartbeat fresh and all streams healthy               |
| Yellow | Degraded — heartbeat fresh but at least one stream unhealthy      |
| Red    | Disconnected — no recent heartbeat (tooltip shows last-seen age)  |
| Gray   | Checking — waiting for the first heartbeat after the panel mounts |

### Where you see it

* **Twin editor panel** (top-right, next to the twin name): a slightly larger dot for the focused twin.
* **Scene objects panel** (left list, on each twin row): a small corner dot on the kind icon.

The dot is hidden in Editor and Simulate modes, on splat twins, and on twins that have never been paired to an edge device — there is nothing to present for those.

Hover (or focus via keyboard) the dot for the tooltip: `Connected`, `Degraded — 1/2 streams healthy`, `Disconnected — last seen 12s ago`, or `Checking edge connection...`.

***

## Twin joint edits in edit mode

stub: In **Edit** mode, changing a twin joint updates the scene immediately, publishes the edit over MQTT for local feedback, and persists the joint pose on the twin so it survives refresh and reload.

***

## Twin position quick actions

stub: In the environment editor transform panel, **Center** moves the selected twin or procedural object to the world origin. **Below**, **Above**, **Left**, and **Right** ask the Environment Editor to place it relative to the nearest suitable object or support using `cw_transform_environment_object`; floor/support placement uses `snap_to_support=true`.

***

## Twin override export controls

stub: In the twin editor, **Twin overrides** lets you set per-twin appearance color, opacity, fixed-base behavior, and a total exported MuJoCo mass in kilograms. Cyberwave converts the total mass into proportional per-link scaling during MuJoCo export, and the editor shows an **Export warning** badge when the asset snapshot has incomplete inertial data that makes the export best-effort.

***

## Reorder root twins in Scene Objects

stub: In **Edit** mode, the Scene Objects left pane supports drag-and-drop reordering for root twins using a grip handle. Child twins stay attached to their parent group and move with the parent when reordered.

* Reordering is available only when edit controls are enabled and search is not active.
* Order is saved to environment settings as `twin_order`, so it persists across reloads.
* Live stream cards in the right pane now follow the same persisted twin order.

***

## Simulate tab playground physics

stub: In **Simulate → Playground**, Cyberwave now applies lightweight frontend physics with gravity and basic rigid collisions. URDF twins use their `<collision>` geometry as collision sources when available, and a fallback collider is used when collision metadata is missing.

***

## Start the agent from the Edit menu

stub: In the 3D editor, open **Edit → Editor Agent** to launch the Environment Agent. It can inspect the current environment and call Cyberwave MCP tools for supported edits.

* The agent automatically provisions a workspace-scoped API key for the session so you can start chatting immediately.
* The agent displays a **Used tools** line for each response so you can verify which MCP tools were invoked.

***

## Workflow executions in an environment

stub: In the environment editor, open **Executions → Workflow Executions** to review recent workflow runs bound to the current environment.

* The list stays compact by default and shows workflow name, status, and run time.
* Select a run to inspect trigger data, errors, and metadata.
* **Node Executions** stay collapsed behind **Show more** so the default view stays lightweight.

## Live point cloud alignment

stub: In **Live** mode, depth-camera point clouds now keep the viewer's existing camera-local basis (`X` lateral, `Z` depth) while still honoring the sensor pose and offset, so RealSense clouds stay vertically aligned in front of the sensor after refresh and axis migrations.

***

## Clone an environment

Use **File → Make a copy** to duplicate the current environment.

* The copy includes the environment and all of its twins.
* Historical telemetry/session data is not copied.
* Lineage references are stored in metadata for future tracking:
  * environment settings include `cloned_from_environment_uuid`
  * each twin metadata includes `cloned_from_twin_uuid`

***

## Ready to Build?

Start creating immersive environments for your robots and unlock the full potential of simulation-based development.

<CardGroup cols={3}>
  <Card title="Open Environment Editor" icon="globe" href="https://cyberwave.com/dashboard">
    Start building your environment now
  </Card>

  <Card title="Python SDK" icon="code" href="/tools/python-sdk">
    Control environments programmatically
  </Card>

  <Card title="Digital Twins" icon="robot" href="/use-cyberwave/digital-twins">
    Learn about digital twins
  </Card>
</CardGroup>

<CardGroup cols={2}>
  <Card title="Live Teleoperation" icon="gamepad" href="/use-cyberwave/teleoperation">
    Control physical robots in real time from the environment
  </Card>

  <Card title="Workflows" icon="diagram-project" href="/use-cyberwave/workflows">
    Automate robot operations with visual workflows
  </Card>
</CardGroup>
