Skip to page content
xeed®
SearchFor schools

UE & TouchDesigner bridge

Xeed supplies bounded parameters. Your UE or TouchDesigner scene turns them into motion, particles and atmosphere.

Open Weather in motion

Send this scene to your visual engine.

The parameters stay separate from the plant model. An engine acknowledgement confirms receipt; it does not verify rendered pixels.

Setup instructions
Connect a local bridge

Start the bridge on the same computer as this browser. Copy its temporary token from the local pairing page. It stays in this page’s memory.

Hosted HTTPS pages may need browser permission to reach this local bridge. The website server never connects to your local engine. Video output needs a separate delivery path.

Not connected. Check the parameters without an engine, or pair with your local adapter.

Parameter JSON
{
  "schemaVersion": "xeed.render.v1",
  "sequence": 0,
  "source": "manual-visual",
  "weather": {
    "rain": 0,
    "snow": 0,
    "wind": 2,
    "direction": 0,
    "cloud": 12,
    "fog": 0,
    "dust": 0,
    "hour": 13,
    "dayC": 22,
    "nightC": 12,
    "humidity": 55,
    "soilWater": 60
  },
  "plant": {
    "leafOpenness": 0.6,
    "leafHue": 135,
    "motionEnergy": 0.2
  }
}

Start with a dry run.

  1. In the Xeed source folder, copy config/render-bridge.env.example to .env.render-bridge.local. Keep XEED_BRIDGE_TARGET=dry-run.
  2. Run pnpm render:bridge. Open http://127.0.0.1:4888/ on this computer and copy the temporary pairing token.
  3. Enter the token above, choose Check bridge, then Send current frame. A dry-run acknowledgement verifies the local round trip.

Default ports: bridge 4888, Unreal Engine 30010, TouchDesigner 9980. Each device keeps its own settings.

Author one scene. Map its inputs.

TouchDesigner setup
  1. In one Base COMP, make a Web Server DAT with Local Address 127.0.0.1 and port 9980. Add a Table DAT named xeed_channels beside it.
  2. Copy scripts/render-bridge/td_callbacks.py into the Web Server DAT callbacks. Set a private local token in XEED_TD_TOKEN and the same token in the COMP’s bridgeToken storage. Feed the table through a DAT to CHOP: first column channel names, second values, skip the heading row. The full guide below gives the Textport command.
  3. Map channels such as rain, wind and leafOpenness to your particle, material and movement controls.
  4. Set XEED_BRIDGE_TARGET=td, restart the bridge and send a frame. Inspect your scene after the acknowledgement.
Unreal Engine setup
  1. Enable Remote Control API and start its loopback HTTP server on 30010.
  2. Author a Blueprint function ApplyXeedFrame with the documented numeric inputs and outputs Applied and AcceptedSequence.
  3. Connect its inputs to Niagara user parameters or material values. Fill the actor path in your device-local environment file.
  4. Set XEED_BRIDGE_TARGET=ue, restart the bridge and send a frame. Inspect the Niagara or Blueprint result.

Open Weather in motion → to prepare a frame with rain, snow, wind, clouds, fog, light and conditions.

Full setup guide

The project file docs/research/2026-10-03-render-bridge-setup.proposed.md includes exact function inputs, callback wiring, Mac / Windows commands and troubleshooting.

Download the setup guide

Parameters and pixels travel separately.

The bridge sends control data. It does not display the engine viewport here. Begin with the scene on your own computer; browser video delivery, such as UE Pixel Streaming, needs a separate renderer and streaming test.

Published sites & safety

Add the exact published website origin to XEED_BRIDGE_ORIGINS. Keep the engine and bridge on loopback. If your browser requests local-network permission, allow it only for this Xeed bridge test; pairing and the origin allowlist still apply.

A classmate’s browser connects to their own computer, so your Mac bridge is not a shared cloud renderer. Do not expose engine ports publicly. A returned acknowledgement is a historical request result, not proof the engine remains online.

Official engine references

Integration status: proposed. The contract and local adapter are implemented; an actual UE / TD scene and rendered video have not yet been verified.