StreamBridge Documentation
StreamBridge is a live DCC-to-Unity sync plugin. Geometry, skinning, vertex colors, hierarchy, and transforms from Blender or 3ds Max appear in the Unity Editor as you edit - no manual export, no stale previews.
What StreamBridge is - and isn't
StreamBridge consists of two parts: a Unity Editor package and a DCC plugin (Blender or 3ds Max). They open a persistent TCP connection and stream scene previews from your DCC into the Unity Editor.
The objects you see in Unity while StreamBridge is connected are live previews of your DCC scene. They are not Unity project assets. When you're happy with a model, export it from your DCC (FBX or tagged file export) to commit it to the project.
What's actually streamed
- Meshes - vertices, indices, normals, UV0, vertex colors, multi-submesh layouts, smooth/flat shading
- Skinned meshes & animation - bone weights (up to 4 influences/vertex), skeletons, per-frame bone transforms
- Transforms - position, rotation, scale, with coordinate-system conversion
- Hierarchy - parent/child relationships, automatically mirrored.
- Visibility - optional hide/show sync
- Material slot routing - per-submesh material names, matched to existing Unity materials by name
- Object lifecycle - add, delete, rename are tracked
StreamBridge does not sync PBR channel data, textures, light properties, camera FOV/clipping, blend shapes, or UV1. Lights and cameras (if you add them) sync as transforms only. Material assignment is by name match against existing Unity materials - your shader graphs stay intact, but no PBR values cross the wire.
Requirements
Software
| Software | Supported versions |
|---|---|
| Unity | 6000.0+ (Unity 6) |
| Blender | 4.2+ |
| 3ds Max | 2023+ |
Operating systems
| OS | Status |
|---|---|
| Windows 10 / 11 | โ Supported |
| macOS 12+ (Apple Silicon & Intel) | โ Supported |
| Linux | โ Not supported |
Render pipelines (Unity)
StreamBridge is pipeline-agnostic - synced objects use a standard MeshFilter + MeshRenderer, so the same workflow applies to all three pipelines.
| Pipeline | Status |
|---|---|
| Built-in RP | โ Supported |
| URP | โ Supported |
| HDRP | โ Supported |
How it works
StreamBridge uses a client-server model over TCP. Unity acts as the server; the DCC plugin is the client.
โโโโโโโโโโโโโโโโโโโ TCP ยท port 8190 โโโโโโโโโโโโโโโโโโ
โ Blender / โ โโโโโโโโโโโโโโโโโโโโโบ โ Unity Editor โ
โ 3ds Max โ mesh / skin / xforms โ (server) โ
โ (client) โ โ โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโ
- Wire format: FlatBuffers, optionally Zstd-compressed.
- Default port:
8190, bound to127.0.0.1only. - LAN / cross-machine: toggle Listen on all interfaces on the Unity side, then connect to that machine's IP from the DCC.
- Update model: the DCC plugin observes its update graph (Blender depsgraph / 3ds Max change callbacks) and pushes deltas. Only what changed is sent.
- Coordinate conversion: Blender (Z-up, right-handed) and 3ds Max (Z-up, right-handed) are converted to Unity (Y-up, left-handed) automatically. A toggle lets you disable this if your scene is already in Unity-space.
Unity
The Unity package hosts the StreamBridge server and creates GameObjects from incoming data.
Install the package
StreamBridge is distributed through the Unity Asset Store.
Add StreamBridge to your Unity account
Open the StreamBridge listing on the Unity Asset Store and click Add to My Assets.
Import in your project
In Unity: Window โ Package Manager โ My Assets. Find StreamBridge, click Download, then Import.
Open the StreamBridge window
Window โ StreamBridge. You're ready to start the server.
StreamBridge window
The window has three areas: connection status, server settings, and a log.
Annotate: server status indicator, Start/Stop button, port field, "Listen on all interfaces" toggle, default-material slot, log area.
Click Start Server
Unity opens TCP 8190 on 127.0.0.1 and starts listening. The status indicator turns yellow.
Wait for a DCC to connect
When Blender or 3ds Max connects, the indicator turns green and the log shows the client's address.
Synced objects appear under a root GameObject
Incoming objects are created under a root parent (typically StreamBridge) in the active scene, mirroring the DCC hierarchy.
The server runs while the Unity Editor is in Edit Mode. Entering Play Mode pauses the sync; exiting Play Mode resumes it.
Live preview & export
This is the single most important thing to understand about StreamBridge:
Synced GameObjects use instance meshes that live inside the scene. If you save the scene, the geometry is serialized into the scene file and persists across Unity restarts. What you don't get is a real project asset: there's no .mesh or .asset under Assets/, so the geometry can't be reused as a prefab, referenced from another scene, or managed through the Asset Database. For that, export from your DCC and let Unity's FBX importer handle it.
Recommended workflow
Iterate live
Sculpt, paint vertex colors, re-skin, re-parent - anything you do in your DCC shows up in Unity in real time. Use this to validate scale, lighting, and material slots against your real Unity scene.
Export when you're happy
From the DCC, export an FBX (or use the tagged-file export StreamBridge ships with) into your Unity project folder. Unity's standard FBX importer turns it into project assets.
Replace the preview with the imported asset
Drop the imported prefab/mesh into your scene where the preview lives, transfer any Unity-side components (colliders, scripts), then disconnect StreamBridge.
Material slot routing
StreamBridge does not send PBR data. What it sends per submesh is the material name. Unity looks for a material asset in your project with that name and assigns it to the slot. If no match is found, the slot falls back to the Default Material assigned on the StreamBridge Server GameObject (Inspector).
- Name your materials in the DCC to match the Unity asset names you've already authored.
- Your URP / HDRP shader graphs stay intact - only the assignment changes per update.
Receiving DCC exports in Unity
When you trigger a tagged export from the DCC, StreamBridge ships the file (FBX, OBJ, etc.) over the same connection and Unity writes it into your project. By default the file lands in Assets/StreamBridge/ and is reimported by Unity's standard FBX importer. You can take over that flow in two ways: a one-shot C# event subscription, or a reusable StreamBridgeImportHandler ScriptableObject routed via Project Settings โ StreamBridge.
Option A - Subscribe to the file-transfer event
The StreamBridgeServer component exposes an event you can subscribe to from anywhere in your editor code. Useful for prototyping, logging, or one-off post-processing.
using UnityEngine;
using UnityEditor;
using StreamBridge.Unity;
[InitializeOnLoad]
static class StreamBridgeExportHook
{
static StreamBridgeExportHook()
{
var server = Object.FindFirstObjectByType<StreamBridgeServer>();
if (server == null) return;
// fires after the file is written + AssetDatabase.ImportAsset()
server.OnFileTransferReceived += (fileName, assetPath) =>
{
Debug.Log($"[StreamBridge] received {fileName} โ {assetPath}");
// e.g. drop the imported prefab into a scene root, run your own pass, etc.
var asset = AssetDatabase.LoadAssetAtPath<GameObject>(assetPath);
if (asset != null) PrefabUtility.InstantiatePrefab(asset);
};
}
}
Option B - Define an import handler
Subclass StreamBridgeImportHandler to control where files land and what happens after import. Assign it once under Project Settings โ StreamBridge - either as the project default or mapped to a specific export tag from the DCC.
using UnityEngine;
using UnityEditor;
using StreamBridge.Unity;
[CreateAssetMenu(menuName = "StreamBridge/Buildings Import Handler")]
public class BuildingsImportHandler : StreamBridgeImportHandler
{
// Tell StreamBridge where to save the incoming file.
public override string GetTargetPath(string fileName, string objectName)
{
return $"Assets/Buildings/{objectName}/{fileName}";
}
// Called after the file has been written and reimported by Unity.
public override void OnPostImport(string assetPath, string tag, string objectName)
{
// 1) Tweak ModelImporter settings on the fresh import
var importer = AssetImporter.GetAtPath(assetPath) as ModelImporter;
if (importer != null)
{
importer.importLights = false;
importer.importCameras = false;
importer.SaveAndReimport();
}
// 2) Hand off to your existing project pipeline
MyStudio.AssetPipeline.RegisterBuilding(assetPath, objectName);
}
}
- Save the script anywhere under
Assets/. - Right-click in the Project window โ Create โ StreamBridge โ Buildings Import Handler. A
.assetappears. - Open Project Settings โ StreamBridge. Either set it as the Default Import Handler, or add a tagged entry mapping (for example) the tag
Buildingsto this asset. - In the DCC, export with that tag - the file routes through your handler, hits your own importer pipeline, and Unity sees a fully-processed asset.
Both DCC plugins let you define tagged export presets, but in different places: in Blender it's Edit โ Preferences โ Add-ons โ StreamBridge; in 3ds Max it's directly inside the StreamBridge dialog (the same window you use to Connect / Sync - there's a presets list with Add / Remove buttons). Each preset name is sent as the import tag, and StreamBridgeSettings.GetHandlerForTag(tag) matches it to the right handler - falling back to the default if nothing matches.
Render pipelines
No pipeline-specific setup is required. Synced GameObjects use standard MeshFilter + MeshRenderer / SkinnedMeshRenderer components and pick up whichever pipeline is active in your project. When you first create the server, StreamBridge auto-generates a default material using the best shader for your project (URP Lit โ HDRP Lit โ Standard fallback) and assigns it to the server's Default Material field automatically.
Settings reference
These settings live on the StreamBridge Server GameObject's Inspector (created in your scene by Window โ StreamBridge โ Create Server). The Window โ StreamBridge editor panel itself only shows status and Start/Stop/Clear buttons.
127.0.0.1 and only DCC clients on the same machine can connect. Turn on for cross-machine setups over LAN or VPN.Assets/StreamBridge/DefaultMaterial.mat (URP Lit โ HDRP Lit โ Standard fallback) on server creation; replace it with any material of your own if you want a different fallback.Transform. Synced GameObjects are created as children of this transform, keeping them grouped under your own root object.Blender
The StreamBridge add-on for Blender ships as a standard .zip add-on. It supports Blender 4.2+ through 5.0+ on Windows and macOS.
Install the add-on
Native Python modules are shipped for Python 3.11, 3.12, and 3.13 - covering every Blender release in the supported range. No extra Python install is needed.
The Blender add-on is bundled with the Unity package - there's no separate download. The Unity-side installer copies the add-on into Blender's user folder and picks the right native module for your Blender version automatically.
Install the Unity package first
If you haven't already, follow Unity โ Install the package.
Run the installer from Unity
In Unity: Edit โ Preferences โ StreamBridge โ Install Blender Addon. Unity copies the add-on and the matching native module into Blender's user add-ons folder.
Start (or restart) Blender and enable the add-on
Open Blender, then Edit โ Preferences โ Add-ons. Search for StreamBridge and tick its checkbox to activate it.
To confirm registration, open Window โ Toggle System Console and look for:
[StreamBridge] Addon registered successfully
Open the panel
In the 3D Viewport press N to open the side panel. Click the StreamBridge tab.
This means your Blender's Python version doesn't match any bundled native module. StreamBridge ships modules for Python 3.11 (Blender 4.2 - 4.4), 3.12 (Blender 4.5 / 5.0), and 3.13 (Blender 5.1+). Make sure you're on a supported Blender release.
Panel overview
localhost / 127.0.0.1 for same-machine sync.Workflow
Start the Unity server
In Unity, click Start Server in the StreamBridge window.
Connect from Blender
In the N-panel, leave Host/Port at defaults (or adjust for LAN) and click Connect. The status indicator turns green when the handshake succeeds.
Send the scene
Click Sync All to push the current scene, or just start editing - in Responsive mode, the depsgraph picks up each change automatically.
Iterate
Move, sculpt, sub-d, paint vertex colors, re-parent in the outliner - every change streams to Unity.
Export when ready
When the model is finished, FBX-export it into your Unity project to commit it as a real asset.
What's synced from Blender
| Data | Status | Notes |
|---|---|---|
| Mesh vertices / indices / normals / UV0 | โ | Smooth / flat shading detected per face |
| Vertex colors (RGBA) | โ | Streams on every edit |
| Multi-submesh / per-material indices | โ | Material slot routing by name |
| Transforms (location / rotation / scale) | โ | Coordinate-converted to Unity space |
| Hierarchy / parenting | โ | Outliner re-parenting reflects in Unity |
| Add / Delete / Rename | โ | Driven by the depsgraph |
| Visibility | โ | Optional, off by default |
| Armatures & skinning | โ | Up to 4 bone influences per vertex |
| Animation (timeline / pose) | โ | Per-frame bone transforms during playback / scrubbing |
Limitations
- Materials - only the material name is sent. No Principled BSDF parameters, no textures, no shader nodes.
- Shape keys / blend shapes - not synced.
- UV1 (lightmap UVs) - not synced; protocol has a slot but the exporter doesn't populate it yet.
- Particle systems - only baked particle meshes are seen.
- Modifiers - sent at the current viewport-evaluated level (e.g. Subdivision Surface uses your viewport level, not render level).
- Lights / cameras - only their transforms sync. Color, intensity, type, FOV, clipping etc. do not.
3ds Max
The StreamBridge plugin for 3ds Max mirrors the Blender feature set. Supports 3ds Max 2023+ on Windows.
The 3ds Max plugin ships with the same feature set as the Blender add-on, but it has had less real-world testing. Please report anything unexpected via the bug report form.
Install the plugin
The 3ds Max plugin is bundled with the Unity package - there's no separate installer download. The Unity-side installer copies the plugin scripts into your 3ds Max user folder.
Install the Unity package first
If you haven't already, follow Unity โ Install the package.
Run the installer from Unity
In Unity: Edit โ Preferences โ StreamBridge โ Install 3ds Max Plugin. Point the installer at your 3ds Max install if prompted; Unity copies the plugin into the right user folder.
Start (or restart) 3ds Max
At startup the plugin registers a set of MacroScripts under the StreamBridge category. No toolbar or menu entry appears on its own - you'll wire one up in the next step. To confirm the plugin loaded, open the MaxScript Listener and look for a [StreamBridge] line.
Add a toolbar or menu button (required)
Open Customize โ Customize User Interface. Switch to the Toolbars, Menus, or Quad tab, set the Category dropdown to StreamBridge, and drag StreamBridge_OpenPanel onto a toolbar or menu of your choice. The other actions in the list (Connect, SyncSelected, SyncAll, ToggleAutoSync, ExportSelected, ClearScene) can be added the same way if you want one-click shortcuts.
The 3ds Max plugin runs on Windows (x64) - 3ds Max itself is Windows-only. macOS users on the 3ds Max side aren't supported.
Workflow
Start the Unity server
In Unity, click Start Server in the StreamBridge window.
Open the StreamBridge dialog in 3ds Max
Click the StreamBridge_OpenPanel button you added to your toolbar / menu in Install the plugin. The StreamBridge dialog opens as a floating window.
Connect from 3ds Max
Leave Host/Port at defaults (or adjust for LAN) and click Connect. The status indicator turns green when the handshake succeeds.
Send the scene
Click Sync All to push the current scene, or Sync Selected for just the picked nodes. To stream changes as you edit, toggle Auto-Sync on - the plugin polls the scene on a configurable interval and pushes deltas.
Iterate
Move, edit modifier stacks, paint vertex colors, re-parent in the Scene Explorer - every change streams to Unity. Use Performance Mode for heavy scenes to coalesce updates onto a wider interval (100-5000 ms).
Export when ready
When the model is finished, FBX-export it into your Unity project to commit it as a real asset.
What's synced from 3ds Max
| Data | Status | Notes |
|---|---|---|
| Mesh vertices / indices / normals / UV0 | โ | Triangulated; smooth / flat shading detected |
| Vertex colors (RGBA) | โ | Streams on every edit |
| Multi/Sub-Object materials | โ | Each sub-material name routes to a Unity submesh slot |
| Transforms (position / rotation / scale) | โ | Coordinate-converted from Max (Z-up RH) to Unity (Y-up LH) |
| Hierarchy / parenting | โ | Re-parenting in the Scene Explorer reflects in Unity |
| Add / Delete / Rename | โ | Detected by a periodic scene scan. |
| Visibility | โ | Optional; off by default |
| Skin modifier (bones & weights) | โ | Up to 4 bone influences per vertex |
| Animation (timeline / pose) | โ | Per-frame bone transforms during playback / scrubbing |
Limitations
- Materials - only the material name is sent. Physical Material / Standard / V-Ray / Corona / Arnold parameters and texture maps are not synced.
- Forest Pack / RailClone - scattered instances appear as their baked output meshes only.
- XRef Scenes - XRef'd objects must be merged into the main scene before they can be synced.
- Lights / cameras - transforms only. IES profiles, intensity, color, FOV, etc. do not transfer.
- Modifiers - sent as the evaluated mesh at the current stack output.
Network setup
StreamBridge supports same-machine, LAN, and VPN setups.
Same machine (default)
No configuration. Host localhost, port 8190. The Unity server binds to 127.0.0.1 only, so the port is not exposed to the rest of your network - safe by default.
Different machines (LAN)
Enable "Listen on all interfaces" in Unity
In the StreamBridge window, toggle Listen on all interfaces. The server now accepts connections from other machines on the network.
Find the Unity machine's IP
Windows: ipconfig โ IPv4 Address (e.g. 192.168.1.45). macOS: System Settings โ Network โ Details.
Allow the port through the firewall
Windows: Windows Defender Firewall โ Advanced Settings โ Inbound Rules โ New Ruleโฆ Allow TCP port 8190. macOS: System Settings โ Network โ Firewall and allow incoming connections to the Unity Editor.
Connect from the DCC machine
In Blender or 3ds Max, set Host to the Unity machine's IP, keep Port at 8190, and click Connect.
VPN / remote
Works the same way over a VPN - use the Unity machine's VPN-assigned IP.
Troubleshooting
"Cannot connect" / connection refused
- Make sure you clicked Start Server in Unity first.
- Unity must be in Edit Mode - the server pauses in Play Mode.
- Host and port in the DCC must match Unity. Default is
localhost/8190. - Connecting from another machine? Confirm Listen on all interfaces is on and the firewall allows TCP
8190inbound.
Sync is slow / DCC is laggy
- Switch Sync Mode from Responsive to Performance and raise the batch interval (start at 500 ms, increase if needed).
- Hide objects you're not actively editing - they're skipped from sync.
- Very high-poly meshes (above a few million verts) will be noticeable on every edit. Iterate at a lower subdivision level and crank it up before exporting.
Materials look wrong in Unity
Material assignment is by name match. If the slot uses the Default Material:
- Make sure a Unity material with the same name as the DCC material slot exists somewhere in the project.
- When you first create the server via Window โ StreamBridge โ Create Server, StreamBridge auto-generates
Assets/StreamBridge/DefaultMaterial.matusing the best shader for your active pipeline (URP Lit โ HDRP Lit โ Standard fallback) and assigns it to the Default Material field on the StreamBridge Server GameObject's Inspector. - If you've switched render pipelines since the server was created, the auto-generated material may now use the wrong shader. Either swap its shader, delete
Assets/StreamBridge/DefaultMaterial.matand re-create the server, or point the Default Material field at any material of your own. - StreamBridge does not transfer PBR values, textures, or shader nodes - that's expected behaviour, not a bug.
Objects appear at the wrong scale
- In Blender, apply object scale (Ctrl+A โ Scale) before syncing.
- In 3ds Max, reset XForm if scale has been non-uniformly transformed.
- Make sure your DCC scene units roughly match your Unity scene units - Unity assumes 1 unit = 1 metre.
3ds Max installer fails
- Close every 3ds Max instance before running the installer.
- Antivirus software occasionally blocks plugin writes - temporarily exclude the install folder if needed.
Colors look different in Unity vs. the exported FBX
If vertex colors or material tints look correct in your DCC and in the FBX you exported, but the live preview from StreamBridge looks washed-out, too dark, or shifted in the opposite direction - this is most likely an open bug with sRGB โ linear color-space conversion on the live-sync path. Exported files go through Unity's importer, which handles the conversion; the live stream path doesn't always match that behaviour.
I'd like to fix this - but I need a concrete repro. Open a bug report and include:
- A clear description of what you did (DCC + Unity versions, render pipeline, color space in Player Settings, whether vertex colors / material tints / textures are involved).
- What the color looks like in the DCC, in Unity via StreamBridge, and in Unity after a normal FBX import - call out which one looks right and which one looks wrong.
- A screenshot (or short clip) showing the difference, ideally with both views side by side.
Still stuck?
Pop into the StreamBridge Discord first - other users (and I) hang out there, and most setup hiccups get sorted in a few messages without needing a ticket.
If Discord doesn't crack it, open a bug report with: Unity version, DCC version, OS, what you did, what happened, and the contents of the StreamBridge log panel.
FAQ
Is it a one-time purchase or a subscription?
One-time purchase on the Unity Asset Store. All future updates within the major version are included.
Does it work in Play Mode?
No. The server only runs in Edit Mode. Entering Play Mode pauses the sync; exiting resumes it.
Can multiple artists connect at once?
One DCC client per Unity instance at a time.
Will my custom shaders work?
Yes - StreamBridge doesn't touch shaders. It assigns Unity materials to mesh slots by name, so whatever shader those materials use stays in place.
Does it sync textures or PBR maps?
No. Only the material name is sent. Authoring the look stays on the Unity side; iteration on geometry/skinning stays on the DCC side.
Does it work on Linux?
No. Windows and macOS only.
Changelog
v1.0.0 - May 2026
- Initial public release.
- Blender 4.2+ support (Python 3.11 / 3.12 / 3.13 modules).
- 3ds Max 2023+ support.
- Unity 6 (6000.0+) - render-pipeline-agnostic.
- Mesh sync: vertices, normals, UV0, vertex colors, multi-submesh.
- Skinned-mesh and animation streaming.
- Object lifecycle (add / delete / rename).
- Material slot routing by name match.
- Responsive and Performance sync modes.
- "Listen on all interfaces" toggle for cross-machine setups.