BorgVR Guide

Concepts

How BorgVR works

A shared model for datasets, renderers, servers, and collaboration. Once these concepts are familiar, every BorgVR application follows naturally.

Rendered Mandelbulb volume

The basic idea

Volume data is a three-dimensional grid of measurements. BorgVR divides this grid into small blocks called bricks and loads only the bricks and detail levels required for the current image. This makes it possible to explore datasets larger than the available GPU memory.

A voxel may contain one or more measurement channels. BorgVR supports up to four channels with 8 or 16 bits per channel; scalar datasets may additionally use 32-bit values. Voxel spacing stored in the dataset is interpreted in meters, enabling physically meaningful dimensions and measurements.

All native applications and the WebGPU renderer understand the same dataset format. A dataset can be opened locally, streamed from a BorgVR server, or discovered through known sources in a SharePlay session.

ImportantSharePlay primarily transfers the shared state. The volume data itself comes from a local file or from a reachable dataset server.

Rendering modes

Transfer function + light
Maps values to color and opacity and lights visible structures. This provides stronger shape cues but requires additional gradient and lighting work.
Transfer function
Composites color and opacity along each ray without lighting. This mode works well for color-coded or translucent structures.
Isosurface
Shows a surface where the dataset reaches a selected value. The corresponding editor controls that isovalue.

Transfer functions

A transfer function contains separate curves for red, green, blue, and alpha. Alpha determines which values become visible. Transfer functions can be stored with the dataset, loaded from a .tf1d file, or selected from the server catalog.

For multi-channel data, each data channel has its own RGBA transfer function. Select the data channel in the editor before changing its color and opacity curves. Rendering composites the contributions of all active channels.

Lighting

In Transfer function + light mode, the lighting editor controls light direction and ambient, diffuse, and specular colors. A shaded preview sphere responds immediately. These settings intentionally have no effect in the unlit transfer-function mode.

Sampling, LOD, and bricks

The sampling rate controls the spacing between samples along a ray. Higher values usually improve quality at a performance cost. The level-of-detail system selects coarser or finer bricks. The optional brick visualization is a diagnostic tool and is hidden by default.

Opening and importing data

  • Local: An existing .data file is read directly from the device.
  • Remote: The app first reads the catalog of a configured BorgVR server and then fetches required bricks on demand.
  • Import: DICOM, NRRD/NHDR, PVM, or QVIS data is converted into the bricked BorgVR format. Import settings only affect newly converted datasets.

The dataset's unique ID connects local copies, server origins, transfer functions, objects, measurements, and saved views. Origins are stored per ID. If one source cannot be reached, BorgVR tries other known sources in most-recently-announced order and can switch origins after a connection failure.

Objects, drawings, and measurements

All annotations live in dataset coordinates and are depth-composited correctly with the volume. Object rendering and the complete measurement visualization can be hidden independently without deleting data.

Sphere
A named, colored point with an adjustable radius. An optional ray points from the sphere center toward the original camera position.
Stroke
A sequence of spatial points. Strokes can be drawn with touch or mouse and, on Apple Vision Pro, with hands, Logitech Muse, or PlayStation VR2 Sense controllers.
Polygon object
An imported, optionally textured object in BorgVR's mesh format. Object coordinates are interpreted in meters. The same asset can be instantiated repeatedly with independent position, orientation, and scale.
Measurement
A sequence of editable points describes a path length, the convex hull of a planar area, or a convex volume. BorgVR automatically chooses an appropriate physical unit for the result and its label.

Object files use the .marker extension and contain spheres, strokes, and instances of imported objects. Measurements are stored separately as .measurement. Both formats carry the associated dataset ID; BorgVR asks for confirmation before loading them for another dataset.

Object scaleIf an object is more than ten times the dataset extent or smaller than one thousandth of it, BorgVR warns about the unusual scale before opening it.

Saving dataset state

Save Dataset State stores the current transfer function, objects, measurements, and the remaining visualization state under the dataset name. This includes transform, rendering mode, isovalue, lighting, clipping, and annotation visibility. Restore Dataset State reloads these parts together.

Settings can enable automatic loading and saving independently for transfer functions, objects, measurements, and visualization state.

SharePlay

A session shares dataset selection, rendering mode, transfer functions for every data channel, isovalue, lighting, clipping, objects, and measurements. iPhone, iPad, and Mac participants use a common screen view by default and may temporarily detach their own view. Vision Pro participants have a spatial view and can see and manipulate the shared and detached screen views in space.

When joining, participants exchange known server origins that are allowed to be shared. A device with a local copy can also advertise an ad-hoc server. If no source is reachable yet, the app waits and retries loading whenever a new source becomes known.

Password-protected sourcesServer settings explicitly control whether an origin, including its password, may be shared through SharePlay. If disabled, that origin is not announced.

BorgVR files

ExtensionContentsUse
.dataMetadata and bricked, optionally LZ4-compressed volume dataRenderers and servers
.tf1dOne-dimensional transfer function and display metadataTransfer-function catalog
.meshPolygon geometry with positions, normals, colors, texture coordinates, and optional embedded texturesReusable object assets
.markerSpheres, directions, spatial strokes, and mesh instances with dataset IDLoad, save, and share objects
.measurementLength, area, and volume measurements with dataset IDLoad, save, and share measurements
.stateTransform, rendering mode, isovalue, lighting, clipping, and visibilityRestore visualization state