Enterprise Deployment: JSON Settings Reference

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.

Overview

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.
  • Once a user has run the application, their own settings.json takes precedence.
  • Any key omitted from defaultsettings.json will use the application's internal default.
  • You do not need to include every key — only the settings you wish to override.

User settings file locations:

  • Windows: %AppData%\Roaming\Euclideon\client\settings.json
  • macOS: ~/Library/Application Support/euclideon/client/settings.json
  • Linux: ~/.local/share/euclideon/client/settings.json

The 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.


Top-Level Settings

These keys sit at the root of the JSON object.

KeyTypeDefaultDescription
showNuclideonLogobooleanfalseShow the Nuclideon logo in the bottom-left of the scene viewport.
limitFPSInBackgroundbooleantrueThrottle the frame rate when udStream does not have input focus, reducing CPU/GPU load while users work in other applications.
showDiagnosticInfobooleanfalseDisplay diagnostic overlays such as frame rate (FPS/ms) and live feed cache statistics. Useful for support and troubleshooting.

Login and Connection (login)

Controls network, proxy, and server settings applied at first launch.

KeyTypeDefaultDescription
login.serverURLstring""The URL of the udStream server. Set this to your organisation's server address to pre-populate the login screen. Use "/" for udCloud.
login.usernamestring""Pre-populate the username (email) field on the login screen.
login.proxystring""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.proxyTestURLstring"https://nuclideon.com/proxytest"URL used to verify proxy connectivity.
login.useragentstring""Custom User-Agent string for HTTP requests. Only required in specialised network environments.
login.ignoreCertificateErrorsbooleanfalseDisable 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.proxyRequiresAuthbooleanfalseEnable proxy authentication.
login.rememberProxyUsernamebooleanfalsePersist the proxy username across sessions.
login.proxyUsernamestring""Pre-fill the proxy username (only applies when proxyRequiresAuth is true).

Appearance

Controls the visual layout and interface behaviour of the application.

KeyTypeDefaultDescription
window.languagestringsystem localeLanguage code for the UI (e.g. "en-AU", "ja", "zh-CN").
uiScalefloat1.0Multiplier applied to all UI elements. Valid range: 1.01.5.
layoutinteger1Position of the Scene Explorer panel. 0 = Left, 1 = Right.
layoutSceneExplorerSizefloat320Width in pixels of the Scene Explorer panel.
layoutPropertiesPanelSizefloat320Width in pixels of the Properties panel.
showCameraFrustumInMapModebooleantrueShow the camera frustum indicator when in map mode.
showViewcubebooleanfalseShow the 3D orientation cube in the scene viewport.
showStatusBarbooleantrueShow the status bar at the bottom of the application window.
sceneExplorerCollapsedbooleantrueStart with the Scene Explorer panel collapsed.
mapModeViewportinteger0Which viewport to use for map mode when two viewports are active. 0 = None, 1 = Left, 2 = Right.
POIfadeDistancefloat10000.0Maximum distance (metres) at which labels (POIs, measurements, places, GTFS) are visible. Valid range: 01000000.
imageHighResDistancefloat5.0Distance at which media nodes (images, panoramas) begin to shrink and disappear.
imageThumbDistancefloat200.0Distance at which images switch from thumbnail to full resolution.
imagePinDistancefloat2000.0Distance at which image pin icons are displayed.
perfQualityRatiointeger2Rendering resolution multiplier. 0 = 0.5×, 1 = 0.75×, 2 = 1.0× (standard), 3 = 1.5×, 4 = 2.0×.
window.showNativeUIbooleantrueUse the operating system's native file dialogs for open/save operations.
limitFPSInBackgroundbooleantrueSee top-level setting — can also be set here.

Input and Controls

KeyTypeDefaultDescription
window.touchscreenFriendlybooleanfalseEnable touch-friendly UI mode for touchscreen devices.
window.onScreenControlsbooleanplatform-dependentDisplay on-screen mouse control overlay in the scene viewport.
camera.invertMouseXbooleanfalseInvert horizontal mouse camera movement.
camera.invertMouseYbooleanfalseInvert vertical mouse camera movement.
camera.invertControllerXbooleanfalseInvert horizontal controller axis.
camera.invertControllerYbooleanfalseInvert vertical controller axis.
camera.cameraMouseBindingsinteger3[0, 1, 2]Mouse button bindings for left, middle, and right buttons. 0 = Tumble, 1 = Pan, 2 = Orbit.
camera.scrollwheelBindinginteger0Mouse scroll wheel action. 0 = Dolly.
mouseSnap.enablebooleantrueSnap the mouse cursor to nearby point cloud points.
mouseSnap.rangeinteger8Snap detection radius in pixels. Maximum: 50.

Camera

KeyTypeDefaultDescription
camera.moveSpeedfloat4[10.0, 10.0, 10.0, 10.0]Camera movement speed (metres/second) for each viewport. Valid range: 0.51000000.
camera.moveModeinteger0Camera altitude behaviour. 0 = Free (altitude unlocked), 1 = Height Lock (camera stays at fixed altitude).
maptiles.keepAboveSurfacebooleanfalsePrevent the camera from moving below the map surface (requires map tiles enabled).
camera.lensIdinteger2variesLens preset for each viewport. 0 = 15mm, 1 = 24mm, 2 = 30mm, 3 = 50mm, 4 = 70mm, 5 = 100mm, 6 = Custom.
camera.fieldOfViewfloat2variesCustom field of view in degrees for each viewport. Only applied when camera.lensId is 6. Valid range: 5100.

Maps and Elevation (maptiles)

KeyTypeDefaultDescription
maptiles.demEnabledbooleantrueEnable the Digital Elevation Model (DEM) to add terrain height to the basemap. Increases network usage.
maptiles.DEMServerURLstringArcGIS World Elevation URLURL template for the DEM tile server. Supports {0} (level), {1} (row), {2} (column) placeholders.
maptiles.DEMMaxLevelsinteger16Maximum zoom level for DEM data. Valid range: 821.
maptiles.mapQualityinteger2Map tile quality. 0 = Low, 1 = Medium, 2 = High.
minimap.enablebooleanfalseShow the minimap panel.
minimap.showPanosbooleantrueShow panoramic image markers on the minimap.
minimap.maxViewportFractionfloat0.333Maximum fraction of the viewport that the minimap can occupy.

Visualisation

Skybox

KeyTypeDefaultDescription
skybox.typeinteger3Sky rendering mode. 0 = None (black sky), 1 = Colour (solid colour), 2 = Simple (static blue sky texture), 3 = Atmospheric (time-of-day simulation).
skybox.colourfloat4[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.exposurefloat7.5Sun brightness. Only used when skybox.type is 3.
skybox.timeOfDayfloat12.0Time of day for sun position (hours, 0–24). Only used when skybox.type is 3.
skybox.monthfloat3.0Month for sun position (1–12). Only used when skybox.type is 3.
skybox.keepSameTimebooleantrueLock the sun to always show daytime regardless of position. Only used when skybox.type is 3.
skybox.uselivetimebooleanfalseSynchronise the sun position with the user's local system time. Only used when skybox.type is 3.

Rendering

KeyTypeDefaultDescription
nearPlanefloatvariesNear clipping plane distance (metres). Objects closer than this will not be rendered.
farPlanefloatvariesFar clipping plane distance (metres). Objects further than this will not be rendered.
pointModeinteger1Voxel rendering shape. 0 = Points, 1 = Rectangles (recommended), 2 = Cubes.
saturationfloat1.0Colour saturation of the scene (0.0 = greyscale, 1.0 = natural).
antiAliasingTypeinteger0Anti-aliasing mode. 0 = None, 1 = FXAA, 2 = TAA.

Object Highlighting

KeyTypeDefaultDescription
objectHighlighting.enablebooleantrueHighlight selected objects in the scene.
objectHighlighting.colourfloat4[1.0, 1.0, 1.0, 1.0]Highlight colour as RGBA (0.0–1.0).
objectHighlighting.thicknessfloat2.0Thickness of the highlight outline in pixels.

Post-Processing

KeyTypeDefaultDescription
postVisualization.edgeOutlines.enabledbooleanfalseHighlight voxel edges throughout the scene.
postVisualization.edgeOutlines.widthinteger1Edge outline width in pixels. Valid range: 110.
postVisualization.edgeOutlines.thresholdfloat2.0Threshold for resolving overlapping voxel edges. Valid range: 0.00110.0.
postVisualization.edgeOutlines.colourfloat4[0.0, 0.0, 0.0, 1.0]Edge outline colour as RGBA.
postVisualization.colourByHeight.enabledbooleanfalseApply a two-colour height gradient across all objects.
postVisualization.colourByHeight.minColourfloat4[0.0, 0.0, 1.0, 1.0]Colour at the minimum height (RGBA).
postVisualization.colourByHeight.maxColourfloat4[0.0, 1.0, 0.0, 1.0]Colour at the maximum height (RGBA).
postVisualization.colourByHeight.startHeightfloat30.0Height (metres) at which the gradient begins. Valid range: 01000.
postVisualization.colourByHeight.endHeightfloat50.0Height (metres) at which the gradient ends. Valid range: 01000.
postVisualization.colourByDepth.enabledbooleanfalseApply a depth-based colour fade to all objects.
postVisualization.colourByDepth.colourfloat4[1.0, 0.0, 0.0, 1.0]Depth fade colour (RGBA).
postVisualization.colourByDepth.startDepthfloat100.0Camera distance (metres) at which the fade begins. Valid range: 01000.
postVisualization.colourByDepth.endDepthfloat1000.0Camera distance (metres) at which the fade is fully applied. Valid range: 01000.
postVisualization.contours.enabledbooleanfalseDisplay elevation contour lines on all objects.
postVisualization.contours.colourfloat4[0.0, 0.0, 0.0, 1.0]Contour line colour (RGBA).
postVisualization.contours.distancesfloat50.0Vertical interval between contour lines (metres). Valid range: 01000.
postVisualization.contours.bandHeightfloat1.0Vertical thickness of each contour band (metres). Valid range: 010.
postVisualization.ssao.enablebooleanfalseEnable Screen-Space Ambient Occlusion.
postVisualization.ssao.stepSizefloat1.5SSAO sample step size.
postVisualization.ssao.colourfloat4[0.0, 0.0, 0.0, 1.0]SSAO shadow colour (RGBA).

GPU Renderer (if enabled)

These settings only apply when the GPU Renderer beta feature is active.

KeyTypeDefaultDescription
gpuRenderer.pointCountinteger2Maximum voxel count. 0 = Low (1M), 1 = Medium (3.5M), 2 = High (6M), 3 = Very High (10M).
gpuRenderer.thresholdinteger2Voxel rendering threshold (detail level). 0 = Low, 1 = Medium, 2 = High, 3 = Very High.
gpuRenderer.voxelsizefloat1.0Minimum voxel display size. Valid range: 0.150.0.

Tools (Default Settings)

These keys set the default appearance for new measurement and annotation objects.

KeyTypeDefaultDescription
tools.line.widthfloat3.0Default line width for new line measurements. Valid range: 0.115.0.
tools.line.fenceModeinteger0Default line orientation. 0 = Screen Lines, 1 = Fence, 2 = Horizontal Path.
tools.line.styleinteger1Default line style variant.
tools.line.colourfloat4[1.0, 1.0, 0.0, 1.0]Default line colour (RGBA).
tools.fill.colourfloat4[1.0, 0.0, 1.0, 0.25]Default fill colour for area measurements (RGBA).
tools.label.textColourfloat4[1.0, 1.0, 1.0, 1.0]Default label text colour (RGBA).
tools.label.backgroundColourfloat4[0.0, 0.0, 0.0, 0.5]Default label background colour (RGBA).
tools.label.textSizeinteger1Default label text size. 0 = Small, 1 = Medium, 2 = Large.

Convert Defaults (convert)

Pre-populate metadata fields that are embedded into converted UDS files.

KeyTypeDefaultDescription
convert.tempDirectorystringsystem tempFile system path for temporary conversion files. Use an absolute path. Ensure the path has sufficient free space.
convert.authorstring""Default author name embedded in converted files. Maximum 256 characters.
convert.commentstring""Default comment embedded in converted files. Maximum 256 characters.
convert.copyrightstring""Default copyright string embedded in converted files. Maximum 256 characters.
convert.licensestring""Default licence string embedded in converted files. Maximum 256 characters.

Screenshot (screenshot)

KeyTypeDefaultDescription
screenshot.outputPathstringuser documents folderAbsolute file system path where screenshots are saved.
screenshot.resolution.widthinteger4096Screenshot width in pixels.
screenshot.resolution.heightinteger2160Screenshot height in pixels.
screenshot.viewOnceTakenbooleanfalseOpen each screenshot in a separate window immediately after it is taken.

Key Bindings (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.

KeyDefault valueDescription
binds.Forward87 (W)Move camera forward.
binds.Backward83 (S)Move camera backward.
binds.Left65 (A)Move camera left.
binds.Right68 (D)Move camera right.
binds.Up82 (R)Move camera up.
binds.Down70 (F)Move camera down.
binds.DecreaseCameraSpeed91 ([)Decrease camera movement speed.
binds.IncreaseCameraSpeed93 (])Increase camera movement speed.
binds.LockAltitude32 (Space)Toggle height lock.
binds.Remove261 (Delete)Remove selected scene item.
binds.Cancel256 (Escape)Cancel current action.
binds.GizmoTranslate66 (B)Switch gizmo to translate mode.
binds.GizmoRotate78 (N)Switch gizmo to rotate mode.
binds.GizmoScale77 (M)Switch gizmo to scale mode.
binds.GizmoLocalSpace67 (C)Toggle gizmo local/world space.
binds.Fullscreen294 (F5)Toggle fullscreen mode.
binds.RenameSceneItem292 (F3)Rename the selected scene item.
binds.ToggleSceneExplorer293 (F4)Show/hide the Scene Explorer panel.
binds.ToggleSelectTool295 (F6)Activate the selection tool.
binds.ToggleMeasureLineTool296 (F7)Activate the line measurement tool.
binds.ToggleMeasureAreaTool297 (F8)Activate the area measurement tool.
binds.ToggleInspectionTool298 (F9)Activate the inspection tool.
binds.ToggleAnnotateTool299 (F10)Activate the annotation tool.
binds.ToggleMeasureHeightTool72 (H)Activate the height measurement tool.
binds.OpenSettingsMenu4194380 (Ctrl+L)Open the Settings window.
binds.TakeScreenshot283 (PrintScreen)Capture a screenshot.
binds.AddUDS4194389 (Ctrl+U)Add a UDS file to the scene.
binds.BindingsInterface4194370 (Ctrl+B)Open the Key Bindings settings panel.
binds.AddBoxFilter73 (I)Add a box filter to the scene.
binds.AddSphereFilter74 (J)Add a sphere filter to the scene.
binds.AddCylinderFilter75 (K)Add a cylinder filter to the scene.
binds.AddPolygonFilter80 (P)Add a polygon filter to the scene.
binds.AddSimpleCrossSection79 (O)Add a cross-section to the scene.
binds.AddViewShed4194390 (Ctrl+V)Add a viewshed analysis to the scene.
binds.AddSectionView89 (Y)Add a section view to the scene.

Stereoscopic / XR (stereoscopic)

KeyTypeDefaultDescription
stereoscopic.modeinteger0Stereo rendering mode. 0 = None, 1 = Side-by-Side.
stereoscopic.eyeDistancefloat0.065Inter-ocular distance in metres for stereo rendering.
stereoscopic.swapEyesbooleanfalseSwap the left and right eye views.
stereoscopic.screenBottomLeftfloat3[-1.15, 0, 1.04]Physical screen corner position (metres) for tracked display calibration.
stereoscopic.screenBottomRightfloat3[1.15, 0, 1.04]Physical screen corner position (metres) for tracked display calibration.
stereoscopic.screenTopLeftfloat3[-1.15, 0, 2.34]Physical screen corner position (metres) for tracked display calibration.

Window State

These settings control the initial window dimensions. They will be overridden by the user's window manager on subsequent launches.

KeyTypeDefaultDescription
window.maximizedbooleanfalseStart the application maximised.
window.widthinteger1280Initial window width in pixels.
window.heightinteger720Initial window height in pixels.

Complete Example

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.