This guide is intended for IT administrators deploying udStream across an organisation. It covers all settings available in defaultsettings.json, which allows you to pre-configure the application for users before they launch it for the first time.
udStream stores user settings in a settings.json file on each user's machine. When a user runs udStream for the first time (or has no existing settings file), the application loads defaultsettings.json from the top-level application directory to establish the initial state.
Key behaviours:
defaultsettings.json only applies when no user settings file exists yet.settings.json takes precedence.defaultsettings.json will use the application's internal default.User settings file locations:
%AppData%\Roaming\Euclideon\client\settings.json~/Library/Application Support/euclideon/client/settings.json~/.local/share/euclideon/client/settings.jsonThe simplest way to generate a baseline defaultsettings.json is to configure the application as desired, then copy the resulting settings.json from the user location above and trim it to only the keys you want to enforce.
See Customising udStream for information on branding, feature flags, and server configuration via
assets/branding/strings.json.
These keys sit at the root of the JSON object.
| Key | Type | Default | Description |
|---|---|---|---|
showNuclideonLogo | boolean | false | Show the Nuclideon logo in the bottom-left of the scene viewport. |
limitFPSInBackground | boolean | true | Throttle the frame rate when udStream does not have input focus, reducing CPU/GPU load while users work in other applications. |
showDiagnosticInfo | boolean | false | Display diagnostic overlays such as frame rate (FPS/ms) and live feed cache statistics. Useful for support and troubleshooting. |
login)Controls network, proxy, and server settings applied at first launch.
| Key | Type | Default | Description |
|---|---|---|---|
login.serverURL | string | "" | The URL of the udStream server. Set this to your organisation's server address to pre-populate the login screen. Use "/" for udCloud. |
login.username | string | "" | Pre-populate the username (email) field on the login screen. |
login.proxy | string | "" | Proxy server address. Accepts formats such as 192.168.0.1, 169.123.123.1:80, or https://10.4.0.1:8081. Leave blank to attempt auto-detection. |
login.proxyTestURL | string | "https://nuclideon.com/proxytest" | URL used to verify proxy connectivity. |
login.useragent | string | "" | Custom User-Agent string for HTTP requests. Only required in specialised network environments. |
login.ignoreCertificateErrors | boolean | false | Disable PEER and HOST certificate verification. Security risk — only use when directed by your network team. Note: this setting is not persisted by the application due to its security implications; it must be re-applied each launch. |
login.proxyRequiresAuth | boolean | false | Enable proxy authentication. |
login.rememberProxyUsername | boolean | false | Persist the proxy username across sessions. |
login.proxyUsername | string | "" | Pre-fill the proxy username (only applies when proxyRequiresAuth is true). |
Controls the visual layout and interface behaviour of the application.
| Key | Type | Default | Description |
|---|---|---|---|
window.language | string | system locale | Language code for the UI (e.g. "en-AU", "ja", "zh-CN"). |
uiScale | float | 1.0 | Multiplier applied to all UI elements. Valid range: 1.0–1.5. |
layout | integer | 1 | Position of the Scene Explorer panel. 0 = Left, 1 = Right. |
layoutSceneExplorerSize | float | 320 | Width in pixels of the Scene Explorer panel. |
layoutPropertiesPanelSize | float | 320 | Width in pixels of the Properties panel. |
showCameraFrustumInMapMode | boolean | true | Show the camera frustum indicator when in map mode. |
showViewcube | boolean | false | Show the 3D orientation cube in the scene viewport. |
showStatusBar | boolean | true | Show the status bar at the bottom of the application window. |
sceneExplorerCollapsed | boolean | true | Start with the Scene Explorer panel collapsed. |
mapModeViewport | integer | 0 | Which viewport to use for map mode when two viewports are active. 0 = None, 1 = Left, 2 = Right. |
POIfadeDistance | float | 10000.0 | Maximum distance (metres) at which labels (POIs, measurements, places, GTFS) are visible. Valid range: 0–1000000. |
imageHighResDistance | float | 5.0 | Distance at which media nodes (images, panoramas) begin to shrink and disappear. |
imageThumbDistance | float | 200.0 | Distance at which images switch from thumbnail to full resolution. |
imagePinDistance | float | 2000.0 | Distance at which image pin icons are displayed. |
perfQualityRatio | integer | 2 | Rendering resolution multiplier. 0 = 0.5×, 1 = 0.75×, 2 = 1.0× (standard), 3 = 1.5×, 4 = 2.0×. |
window.showNativeUI | boolean | true | Use the operating system's native file dialogs for open/save operations. |
limitFPSInBackground | boolean | true | See top-level setting — can also be set here. |
| Key | Type | Default | Description |
|---|---|---|---|
window.touchscreenFriendly | boolean | false | Enable touch-friendly UI mode for touchscreen devices. |
window.onScreenControls | boolean | platform-dependent | Display on-screen mouse control overlay in the scene viewport. |
camera.invertMouseX | boolean | false | Invert horizontal mouse camera movement. |
camera.invertMouseY | boolean | false | Invert vertical mouse camera movement. |
camera.invertControllerX | boolean | false | Invert horizontal controller axis. |
camera.invertControllerY | boolean | false | Invert vertical controller axis. |
camera.cameraMouseBindings | integer3 | [0, 1, 2] | Mouse button bindings for left, middle, and right buttons. 0 = Tumble, 1 = Pan, 2 = Orbit. |
camera.scrollwheelBinding | integer | 0 | Mouse scroll wheel action. 0 = Dolly. |
mouseSnap.enable | boolean | true | Snap the mouse cursor to nearby point cloud points. |
mouseSnap.range | integer | 8 | Snap detection radius in pixels. Maximum: 50. |
| Key | Type | Default | Description |
|---|---|---|---|
camera.moveSpeed | float4 | [10.0, 10.0, 10.0, 10.0] | Camera movement speed (metres/second) for each viewport. Valid range: 0.5–1000000. |
camera.moveMode | integer | 0 | Camera altitude behaviour. 0 = Free (altitude unlocked), 1 = Height Lock (camera stays at fixed altitude). |
maptiles.keepAboveSurface | boolean | false | Prevent the camera from moving below the map surface (requires map tiles enabled). |
camera.lensId | integer2 | varies | Lens preset for each viewport. 0 = 15mm, 1 = 24mm, 2 = 30mm, 3 = 50mm, 4 = 70mm, 5 = 100mm, 6 = Custom. |
camera.fieldOfView | float2 | varies | Custom field of view in degrees for each viewport. Only applied when camera.lensId is 6. Valid range: 5–100. |
maptiles)| Key | Type | Default | Description |
|---|---|---|---|
maptiles.demEnabled | boolean | true | Enable the Digital Elevation Model (DEM) to add terrain height to the basemap. Increases network usage. |
maptiles.DEMServerURL | string | ArcGIS World Elevation URL | URL template for the DEM tile server. Supports {0} (level), {1} (row), {2} (column) placeholders. |
maptiles.DEMMaxLevels | integer | 16 | Maximum zoom level for DEM data. Valid range: 8–21. |
maptiles.mapQuality | integer | 2 | Map tile quality. 0 = Low, 1 = Medium, 2 = High. |
minimap.enable | boolean | false | Show the minimap panel. |
minimap.showPanos | boolean | true | Show panoramic image markers on the minimap. |
minimap.maxViewportFraction | float | 0.333 | Maximum fraction of the viewport that the minimap can occupy. |
| Key | Type | Default | Description |
|---|---|---|---|
skybox.type | integer | 3 | Sky rendering mode. 0 = None (black sky), 1 = Colour (solid colour), 2 = Simple (static blue sky texture), 3 = Atmospheric (time-of-day simulation). |
skybox.colour | float4 | [0.39, 0.58, 0.66, 1.0] | Sky colour as RGBA (0.0–1.0 per channel). Only used when skybox.type is 1. |
skybox.exposure | float | 7.5 | Sun brightness. Only used when skybox.type is 3. |
skybox.timeOfDay | float | 12.0 | Time of day for sun position (hours, 0–24). Only used when skybox.type is 3. |
skybox.month | float | 3.0 | Month for sun position (1–12). Only used when skybox.type is 3. |
skybox.keepSameTime | boolean | true | Lock the sun to always show daytime regardless of position. Only used when skybox.type is 3. |
skybox.uselivetime | boolean | false | Synchronise the sun position with the user's local system time. Only used when skybox.type is 3. |
| Key | Type | Default | Description |
|---|---|---|---|
nearPlane | float | varies | Near clipping plane distance (metres). Objects closer than this will not be rendered. |
farPlane | float | varies | Far clipping plane distance (metres). Objects further than this will not be rendered. |
pointMode | integer | 1 | Voxel rendering shape. 0 = Points, 1 = Rectangles (recommended), 2 = Cubes. |
saturation | float | 1.0 | Colour saturation of the scene (0.0 = greyscale, 1.0 = natural). |
antiAliasingType | integer | 0 | Anti-aliasing mode. 0 = None, 1 = FXAA, 2 = TAA. |
| Key | Type | Default | Description |
|---|---|---|---|
objectHighlighting.enable | boolean | true | Highlight selected objects in the scene. |
objectHighlighting.colour | float4 | [1.0, 1.0, 1.0, 1.0] | Highlight colour as RGBA (0.0–1.0). |
objectHighlighting.thickness | float | 2.0 | Thickness of the highlight outline in pixels. |
| Key | Type | Default | Description |
|---|---|---|---|
postVisualization.edgeOutlines.enabled | boolean | false | Highlight voxel edges throughout the scene. |
postVisualization.edgeOutlines.width | integer | 1 | Edge outline width in pixels. Valid range: 1–10. |
postVisualization.edgeOutlines.threshold | float | 2.0 | Threshold for resolving overlapping voxel edges. Valid range: 0.001–10.0. |
postVisualization.edgeOutlines.colour | float4 | [0.0, 0.0, 0.0, 1.0] | Edge outline colour as RGBA. |
postVisualization.colourByHeight.enabled | boolean | false | Apply a two-colour height gradient across all objects. |
postVisualization.colourByHeight.minColour | float4 | [0.0, 0.0, 1.0, 1.0] | Colour at the minimum height (RGBA). |
postVisualization.colourByHeight.maxColour | float4 | [0.0, 1.0, 0.0, 1.0] | Colour at the maximum height (RGBA). |
postVisualization.colourByHeight.startHeight | float | 30.0 | Height (metres) at which the gradient begins. Valid range: 0–1000. |
postVisualization.colourByHeight.endHeight | float | 50.0 | Height (metres) at which the gradient ends. Valid range: 0–1000. |
postVisualization.colourByDepth.enabled | boolean | false | Apply a depth-based colour fade to all objects. |
postVisualization.colourByDepth.colour | float4 | [1.0, 0.0, 0.0, 1.0] | Depth fade colour (RGBA). |
postVisualization.colourByDepth.startDepth | float | 100.0 | Camera distance (metres) at which the fade begins. Valid range: 0–1000. |
postVisualization.colourByDepth.endDepth | float | 1000.0 | Camera distance (metres) at which the fade is fully applied. Valid range: 0–1000. |
postVisualization.contours.enabled | boolean | false | Display elevation contour lines on all objects. |
postVisualization.contours.colour | float4 | [0.0, 0.0, 0.0, 1.0] | Contour line colour (RGBA). |
postVisualization.contours.distances | float | 50.0 | Vertical interval between contour lines (metres). Valid range: 0–1000. |
postVisualization.contours.bandHeight | float | 1.0 | Vertical thickness of each contour band (metres). Valid range: 0–10. |
postVisualization.ssao.enable | boolean | false | Enable Screen-Space Ambient Occlusion. |
postVisualization.ssao.stepSize | float | 1.5 | SSAO sample step size. |
postVisualization.ssao.colour | float4 | [0.0, 0.0, 0.0, 1.0] | SSAO shadow colour (RGBA). |
These settings only apply when the GPU Renderer beta feature is active.
| Key | Type | Default | Description |
|---|---|---|---|
gpuRenderer.pointCount | integer | 2 | Maximum voxel count. 0 = Low (1M), 1 = Medium (3.5M), 2 = High (6M), 3 = Very High (10M). |
gpuRenderer.threshold | integer | 2 | Voxel rendering threshold (detail level). 0 = Low, 1 = Medium, 2 = High, 3 = Very High. |
gpuRenderer.voxelsize | float | 1.0 | Minimum voxel display size. Valid range: 0.1–50.0. |
These keys set the default appearance for new measurement and annotation objects.
| Key | Type | Default | Description |
|---|---|---|---|
tools.line.width | float | 3.0 | Default line width for new line measurements. Valid range: 0.1–15.0. |
tools.line.fenceMode | integer | 0 | Default line orientation. 0 = Screen Lines, 1 = Fence, 2 = Horizontal Path. |
tools.line.style | integer | 1 | Default line style variant. |
tools.line.colour | float4 | [1.0, 1.0, 0.0, 1.0] | Default line colour (RGBA). |
tools.fill.colour | float4 | [1.0, 0.0, 1.0, 0.25] | Default fill colour for area measurements (RGBA). |
tools.label.textColour | float4 | [1.0, 1.0, 1.0, 1.0] | Default label text colour (RGBA). |
tools.label.backgroundColour | float4 | [0.0, 0.0, 0.0, 0.5] | Default label background colour (RGBA). |
tools.label.textSize | integer | 1 | Default label text size. 0 = Small, 1 = Medium, 2 = Large. |
convert)Pre-populate metadata fields that are embedded into converted UDS files.
| Key | Type | Default | Description |
|---|---|---|---|
convert.tempDirectory | string | system temp | File system path for temporary conversion files. Use an absolute path. Ensure the path has sufficient free space. |
convert.author | string | "" | Default author name embedded in converted files. Maximum 256 characters. |
convert.comment | string | "" | Default comment embedded in converted files. Maximum 256 characters. |
convert.copyright | string | "" | Default copyright string embedded in converted files. Maximum 256 characters. |
convert.license | string | "" | Default licence string embedded in converted files. Maximum 256 characters. |
screenshot)| Key | Type | Default | Description |
|---|---|---|---|
screenshot.outputPath | string | user documents folder | Absolute file system path where screenshots are saved. |
screenshot.resolution.width | integer | 4096 | Screenshot width in pixels. |
screenshot.resolution.height | integer | 2160 | Screenshot height in pixels. |
screenshot.viewOnceTaken | boolean | false | Open each screenshot in a separate window immediately after it is taken. |
binds)All bindings are stored as integer ImGuiKey values. The easiest way to obtain the correct values for a custom layout is to configure key bindings using the in-application Key Bindings panel (Settings → Key Bindings), then copy the resulting settings.json values directly into defaultsettings.json.
The table below lists the binding keys and their default ImGuiKey integer values for reference.
| Key | Default value | Description |
|---|---|---|
binds.Forward | 87 (W) | Move camera forward. |
binds.Backward | 83 (S) | Move camera backward. |
binds.Left | 65 (A) | Move camera left. |
binds.Right | 68 (D) | Move camera right. |
binds.Up | 82 (R) | Move camera up. |
binds.Down | 70 (F) | Move camera down. |
binds.DecreaseCameraSpeed | 91 ([) | Decrease camera movement speed. |
binds.IncreaseCameraSpeed | 93 (]) | Increase camera movement speed. |
binds.LockAltitude | 32 (Space) | Toggle height lock. |
binds.Remove | 261 (Delete) | Remove selected scene item. |
binds.Cancel | 256 (Escape) | Cancel current action. |
binds.GizmoTranslate | 66 (B) | Switch gizmo to translate mode. |
binds.GizmoRotate | 78 (N) | Switch gizmo to rotate mode. |
binds.GizmoScale | 77 (M) | Switch gizmo to scale mode. |
binds.GizmoLocalSpace | 67 (C) | Toggle gizmo local/world space. |
binds.Fullscreen | 294 (F5) | Toggle fullscreen mode. |
binds.RenameSceneItem | 292 (F3) | Rename the selected scene item. |
binds.ToggleSceneExplorer | 293 (F4) | Show/hide the Scene Explorer panel. |
binds.ToggleSelectTool | 295 (F6) | Activate the selection tool. |
binds.ToggleMeasureLineTool | 296 (F7) | Activate the line measurement tool. |
binds.ToggleMeasureAreaTool | 297 (F8) | Activate the area measurement tool. |
binds.ToggleInspectionTool | 298 (F9) | Activate the inspection tool. |
binds.ToggleAnnotateTool | 299 (F10) | Activate the annotation tool. |
binds.ToggleMeasureHeightTool | 72 (H) | Activate the height measurement tool. |
binds.OpenSettingsMenu | 4194380 (Ctrl+L) | Open the Settings window. |
binds.TakeScreenshot | 283 (PrintScreen) | Capture a screenshot. |
binds.AddUDS | 4194389 (Ctrl+U) | Add a UDS file to the scene. |
binds.BindingsInterface | 4194370 (Ctrl+B) | Open the Key Bindings settings panel. |
binds.AddBoxFilter | 73 (I) | Add a box filter to the scene. |
binds.AddSphereFilter | 74 (J) | Add a sphere filter to the scene. |
binds.AddCylinderFilter | 75 (K) | Add a cylinder filter to the scene. |
binds.AddPolygonFilter | 80 (P) | Add a polygon filter to the scene. |
binds.AddSimpleCrossSection | 79 (O) | Add a cross-section to the scene. |
binds.AddViewShed | 4194390 (Ctrl+V) | Add a viewshed analysis to the scene. |
binds.AddSectionView | 89 (Y) | Add a section view to the scene. |
stereoscopic)| Key | Type | Default | Description |
|---|---|---|---|
stereoscopic.mode | integer | 0 | Stereo rendering mode. 0 = None, 1 = Side-by-Side. |
stereoscopic.eyeDistance | float | 0.065 | Inter-ocular distance in metres for stereo rendering. |
stereoscopic.swapEyes | boolean | false | Swap the left and right eye views. |
stereoscopic.screenBottomLeft | float3 | [-1.15, 0, 1.04] | Physical screen corner position (metres) for tracked display calibration. |
stereoscopic.screenBottomRight | float3 | [1.15, 0, 1.04] | Physical screen corner position (metres) for tracked display calibration. |
stereoscopic.screenTopLeft | float3 | [-1.15, 0, 2.34] | Physical screen corner position (metres) for tracked display calibration. |
These settings control the initial window dimensions. They will be overridden by the user's window manager on subsequent launches.
| Key | Type | Default | Description |
|---|---|---|---|
window.maximized | boolean | false | Start the application maximised. |
window.width | integer | 1280 | Initial window width in pixels. |
window.height | integer | 720 | Initial window height in pixels. |
The following defaultsettings.json demonstrates a typical enterprise deployment configuration:
{
"info": "This settings file can be used to override the internal defaults of udStream when the user hasn't run it before- useful when deploying the application to enterprise",
"showNuclideonLogo": false,
"limitFPSInBackground": true,
"login": {
"serverURL": "https://udstream.yourorg.example.com",
"proxy": "",
"ignoreCertificateErrors": false,
"proxyRequiresAuth": false
},
"maptiles": {
"keepAboveSurface": false,
"demEnabled": true,
"mapQuality": 2
},
"skybox": {
"type": 3,
"exposure": 7.5,
"timeOfDay": 12.0,
"month": 6.0,
"keepSameTime": true,
"uselivetime": false
},
"objectHighlighting": {
"enable": true,
"colour": [1.0, 1.0, 0.0, 1.0],
"thickness": 2.0
},
"camera": {
"moveSpeed": [10.0, 10.0, 10.0, 10.0],
"moveMode": 0
},
"screenshot": {
"outputPath": "C:/Screenshots/udStream",
"resolution": {
"width": 3840,
"height": 2160
}
},
"convert": {
"author": "Your Organisation",
"copyright": "© Your Organisation",
"license": "Internal Use Only"
}
}
For further customisation including branding, feature flags, and restricting login servers, see Customising udStream.