Skip to main content

File Viewers

VAMS includes a plugin-based viewer system that enables browser-based visualization of 3D models, point clouds, media files, documents, and data -- without requiring desktop software or specialized licenses. This page is the single source of truth for all built-in viewers and their supported file extensions.

VAMS ships 20 built-in viewer plugins across five categories. Fourteen are available in every deployment. The remaining six are conditional:

  • Two licensed viewers — VNTANA and VEERUM — ship disabled and require both a vendor license and enabling them in the viewer configuration.
  • Three viewers require app.webUi.allowUnsafeEvalFeatures — Needle USD, the SuperSplat Editor, and ThatOpen IFC BIM. Their loaders use eval, so VAMS does not offer them at all when a deployment has not enabled that setting.
  • The Physna Viewer appears only when the Physna Sync add-on is enabled.

The master viewer table lists all 20; any other page quoting a viewer count is checked against this one.

What are file viewers

File viewers are browser-based rendering components that display asset files directly in the VAMS web interface. When you open a file from the file manager, VAMS automatically selects the best viewer based on the file extension and viewer priority. If multiple viewers support the same extension, you can switch between them using a dropdown in the viewer UI.

The viewer system is built on a plugin architecture. Each viewer is an independent module with its own dependencies, configuration, and supported file types. New viewers can be added without modifying any core system code -- only a configuration entry and the viewer component are required.

How viewer selection works

  1. VAMS reads the file extension (e.g., .glb, .e57, .pdf).
  2. All enabled viewers that support that extension are identified.
  3. The viewer with the lowest priority number is selected as the default.
  4. If multiple viewers match, a dropdown allows you to switch between them.
  5. If no viewer matches the extension but a preview image exists, the Preview Viewer displays the thumbnail.

Viewer categories

Viewers are organized into five categories based on the type of content they render.

3D

Interactive 3D model, point cloud, CAD, BIM, USD, and Gaussian splat viewing. The viewers cover a wide range of spatial data formats, from mesh files (glTF, OBJ, FBX) to point clouds (E57, LAS) to Building Information Models (IFC) to Universal Scene Description (USD). Some 3D viewers support multi-file mode, allowing multiple files to be loaded into a single scene.

Media

Image, video, and audio playback. The Image Viewer supports zoom and pan. The Video Player and Audio Player provide standard browser-native playback controls.

Document

Rendering of PDF, HTML, and text-based files. The Text Viewer provides syntax highlighting for over 20 programming and configuration file types.

Data

Tabular display of columnar data formats: CSV and FCS files. Other tabular formats, including R serialization (.rds) and Apache Parquet (.parquet), have no dedicated viewer and fall back to the Preview Viewer.

Preview

A fallback viewer that displays generated preview thumbnails for files that have no dedicated viewer. The Preview Viewer has the lowest priority (10) and matches all file extensions as a wildcard.


Master viewer table

This table is the definitive reference for all built-in viewer plugins.

Viewer NameCategorySupported ExtensionsPriorityMulti-FileNotes
Three.js Viewer3D.gltf, .glb, .obj, .fbx, .stl, .ply, .dae, .3ds, .3mf, .stp, .step, .iges, .igs, .brep1NoPrimary mesh and CAD viewer. Scene graph, material editing, transform controls. Loads a glTF file's external dependencies, but renders one selected file at a time. CAD formats (.stp, .step, .iges, .igs, .brep) require WASM and ALLOWUNSAFEEVAL.
Potree Viewer3D.e57, .las, .laz, .ply1NoOctree-based point cloud streaming. Requires the Potree preprocessing pipeline. Shows latest version only.
BabylonJS Gaussian Splat Viewer3D.ply, .spz1NoGaussian splat visualization with WebXR support.
Needle USD Viewer (Experimental)3D.usd, .usda, .usdc, .usdz1NoUniversal Scene Description via WebAssembly. Requires ALLOWUNSAFEEVAL. Experimental -- may not display all USD files correctly or load all dependencies.
ThatOpen IFC BIM Viewer3D.ifc, .ifczip1NoIndustry Foundation Classes (BIM) via the open-source That Open Engine (web-ifc, WebAssembly). Spatial model tree, element properties, hide/isolate, section planes, and measurements. Uses the multithreaded WASM build when cross-origin isolation is available and falls back to single-thread otherwise. Requires ALLOWUNSAFEEVAL.
SuperSplat Editor (PlayCanvas)3D.lcc, .ply, .sog, .splat1NoFull PlayCanvas SuperSplat Gaussian-splat editor UI embedded via iframe (scene panel, transform/selection tools, camera animation, export menus). Default viewer for splat formats. Sole viewer for .lcc (XGRIDS multi-LOD). Requires ALLOWUNSAFEEVAL and a WebGPU-capable browser. Editing/export is local-only (not saved back to VAMS). Use bundled .sog rather than unbundled SOGS.
Online 3D Viewer3D.3dm, .amf, .bim, .off, .wrl2YesRhinoceros 3D, AMF, BIM, OFF, and VRML formats.
Cesium 3D Tileset Viewer3D.json2No3D Tileset viewing with geospatial capabilities via the CesiumJS engine (@cesium/engine) with VAMS custom scene controls.
PlayCanvas Gaussian Splat Viewer3D.ply, .sog5NoGaussian splat visualization with orbit camera and auto-focus.
VNTANA 3D Viewer3D.glb2NoLicensed viewer for high-quality GLB rendering. See Licensed viewers.
VEERUM 3D Viewer3D.e57, .las, .laz, .ply, .json2YesLicensed viewer for point clouds and 3D tilesets. Requires Potree pipeline. Shows latest version only. See Licensed viewers.
Physna Viewer3D.3ds, .asm, .catpart, .catproduct, .glb, .iam, .iges, .igs, .ipt, .jt, .obj, .par, .prt, .sldasm, .sldprt, .stl, .step, .stp, .x_b, .x_t5NoEmbeds the Physna-hosted 3D/CAD viewer through a VAMS authorization proxy. Requires the Physna Sync add-on. See Add-on viewers.
Image ViewerMedia.png, .jpg, .jpeg, .svg, .gif1NoZoom and pan capabilities. Eager load strategy.
Video PlayerMedia.mp4, .webm, .mov, .avi, .mkv, .flv, .wmv, .m4v1NoStandard browser-native playback controls.
Audio PlayerMedia.mp3, .wav, .ogg, .aac, .flac, .m4a1NoStandard browser-native playback controls.
PDF ViewerDocument.pdf1NoNavigation, zoom, and page management controls.
HTML ViewerDocument.html1NoRenders HTML presentations and documents.
Text ViewerDocument.txt, .json, .xml, .html, .htm, .yaml, .yml, .toml, .ini, .ipynb, .inf, .cfg, .md, .sh, .csv, .py, .log, .js, .ts, .sql, .ps11NoSyntax highlighting for 20+ text file types.
Columnar Data ViewerData.fcs, .csv2NoTabular data display with column headers.
Preview ViewerPreview* (all extensions)10NoDisplays generated preview thumbnails. Fallback viewer for files with no dedicated viewer.

File extension to viewer mapping

This table provides a quick lookup from file extension to the viewer(s) that handle it. When multiple viewers are listed, the default column indicates which is selected automatically (lowest priority number). Users can switch to any other listed viewer using the viewer dropdown.

3D model extensions

ExtensionDefault ViewerOther Available Viewers
.3dmOnline 3D Viewer--
.3dsThree.js Viewer--
.3mfThree.js Viewer--
.amfOnline 3D Viewer--
.bimOnline 3D Viewer--
.brepThree.js Viewer--
.daeThree.js Viewer--
.fbxThree.js Viewer--
.glbThree.js ViewerVNTANA 3D Viewer
.gltfThree.js Viewer--
.ifcThatOpen IFC BIM Viewer--
.ifczipThatOpen IFC BIM Viewer--
.igesThree.js Viewer--
.igsThree.js Viewer--
.objThree.js Viewer--
.offOnline 3D Viewer--
.step / .stpThree.js Viewer--
.stlThree.js Viewer--
.wrlOnline 3D Viewer--

The tables in this section list the viewers available in every deployment. The Physna Viewer adds a further set of proprietary CAD formats -- .asm, .catpart, .catproduct, .iam, .ipt, .jt, .par, .prt, .sldasm, .sldprt, .x_b, .x_t -- and becomes an additional choice for several of the formats above, but only on a deployment with the Physna Sync add-on enabled. See Add-on viewers.

Point cloud and Gaussian splat extensions

ExtensionDefault ViewerOther Available Viewers
.e57Potree ViewerVEERUM 3D Viewer
.lasPotree ViewerVEERUM 3D Viewer
.lazPotree ViewerVEERUM 3D Viewer
.lccSuperSplat Editor (PlayCanvas)--
.plyPotree Viewer, BabylonJS Gaussian Splat Viewer, Three.js Viewer, SuperSplat Editor (PlayCanvas)PlayCanvas Gaussian Splat Viewer, VEERUM 3D Viewer
.sogSuperSplat Editor (PlayCanvas)PlayCanvas Gaussian Splat Viewer
.splatSuperSplat Editor (PlayCanvas)--
.spzBabylonJS Gaussian Splat Viewer--
PLY files and multiple viewers

The .ply extension is used for both point cloud data and Gaussian splat data. Three viewers match at priority 1 (Potree, BabylonJS Gaussian Splat, Three.js). VAMS presents all compatible viewers and you can select the appropriate one for your data type.

USD extensions

ExtensionDefault ViewerOther Available Viewers
.usdNeedle USD Viewer (Experimental)--
.usdaNeedle USD Viewer (Experimental)--
.usdcNeedle USD Viewer (Experimental)--
.usdzNeedle USD Viewer (Experimental)--
Needle USD Viewer -- Experimental

The Needle USD Viewer is experimental. It may not display all USD files correctly or load all file dependencies, particularly with compressed USDC files or complex scene hierarchies with external references. For production workflows requiring reliable USD viewing, consider using a desktop USD viewer such as NVIDIA Omniverse or Pixar's usdview.

Media extensions

ExtensionDefault ViewerOther Available Viewers
.aacAudio Player--
.aviVideo Player--
.flacAudio Player--
.flvVideo Player--
.gifImage Viewer--
.jpg / .jpegImage Viewer--
.m4aAudio Player--
.m4vVideo Player--
.mkvVideo Player--
.movVideo Player--
.mp3Audio Player--
.mp4Video Player--
.oggAudio Player--
.pngImage Viewer--
.svgImage Viewer--
.wavAudio Player--
.webmVideo Player--
.wmvVideo Player--

Document and data extensions

ExtensionDefault ViewerOther Available Viewers
.cfgText Viewer--
.csvText ViewerColumnar Data Viewer
.fcsColumnar Data Viewer--
.htmText Viewer--
.htmlHTML ViewerText Viewer
.infText Viewer--
.iniText Viewer--
.ipynbText Viewer--
.jsText Viewer--
.jsonText ViewerCesium 3D Tileset Viewer, VEERUM 3D Viewer
.logText Viewer--
.mdText Viewer--
.pdfPDF Viewer--
.ps1Text Viewer--
.pyText Viewer--
.shText Viewer--
.sqlText Viewer--
.tomlText Viewer--
.tsText Viewer--
.txtText Viewer--
.xmlText Viewer--
.yaml / .ymlText Viewer--

Viewer screenshots

USD viewer (Needle Engine) -- Experimental

VAMS file viewer page displaying a USDZ 3D model rendered by the Needle USD Viewer

VEERUM point cloud viewer

VEERUM 3D Viewer rendering a point cloud dataset with multi-file support

VNTANA 3D viewer

VNTANA 3D Viewer displaying a high-quality GLB model

Three.js 3D model viewer

Three.js Viewer rendering a 3D model with scene controls


WebAssembly requirements

Several viewers depend on WebAssembly (WASM) modules for rendering. WASM-based viewers require a Cross-Origin Isolation (COI) service worker to enable SharedArrayBuffer support in the browser. VAMS includes this service worker automatically in production deployments.

The following viewers use WASM:

ViewerWASM LibraryRequired Feature Flag
Needle USD Viewer (Experimental)usd-wasmALLOWUNSAFEEVAL
Cesium 3D Tileset Viewer@cesium/engine (draco/KTX2 decoding)None
SuperSplat Editor (PlayCanvas)PlayCanvas engine (WebGL shader compilation)ALLOWUNSAFEEVAL
Three.js Viewer (CAD formats only)OpenCascade (opencascade.js)ALLOWUNSAFEEVAL
ThatOpen IFC BIM Viewerweb-ifc (That Open Engine)ALLOWUNSAFEEVAL
Content Security Policy

Enabling ALLOWUNSAFEEVAL adds unsafe-eval to the Content Security Policy script-src directive. This is required by the SuperSplat Editor and by WASM loaders for OpenCascade, Needle USD, and web-ifc (the ThatOpen IFC BIM viewer). Review this setting with your organization's security team before enabling. Set app.webUi.allowUnsafeEvalFeatures to true in the CDK config.json to enable.

The Three.js Viewer works without ALLOWUNSAFEEVAL for standard mesh formats (.gltf, .glb, .obj, .fbx, .stl, .ply, .dae, .3ds, .3mf). The WASM requirement applies only to CAD formats (.stp, .step, .iges, .igs, .brep) which use the OpenCascade library.

The ThatOpen IFC BIM Viewer uses the multithreaded web-ifc-mt.wasm build when cross-origin isolation is available (provided by the COI service worker) and transparently falls back to the single-threaded web-ifc.wasm otherwise. Both builds require ALLOWUNSAFEEVAL: the flag gates whether the viewer registers at all, so the thread mode does not affect it.


Licensed viewers

Two viewer plugins are integrations with commercial products and require separate licenses to use.

ViewerVendorFormatsLicense Required
VNTANA 3D ViewerVNTANA.glbYes
VEERUM 3D ViewerVeerum.e57, .las, .laz, .ply, .jsonYes

Both licensed viewers ship disabled in the viewer configuration, so neither appears in the viewer selector until it is enabled. Enabling one also requires a valid license from the respective vendor: without a license the viewer will not render content. Contact the vendor directly for licensing details.

For more information on partner integrations, see Partner Integrations.


Add-on viewers

Some viewers are provided by optional VAMS add-ons and are gated by a feature flag emitted from the backend. They only appear in the viewer selector when the corresponding add-on is enabled in the deployment configuration.

ViewerVendorFormatsFeature flagAdd-on
Physna ViewerPhysna.3ds, .asm, .catpart, .catproduct, .glb, .iam, .iges, .igs, .ipt, .jt, .obj, .par, .prt, .sldasm, .sldprt, .stl, .step, .stp, .x_b, .x_tPHYSNA_ADDONapp.addons.usePhysnaSync.enabled is true

The Physna Viewer renders the Physna-hosted 3D/CAD viewer inside VAMS. A VAMS-authorized endpoint applies both authorization tiers and returns a Physna viewer token to the browser, which then loads the viewer directly from Physna; the Physna client credentials stay in AWS Secrets Manager and never reach the browser. That token carries no asset scope, so Physna-hosted viewer access is flat across every synced database. See the Physna Integration developer guide for architecture, configuration, and the side effects of that limitation.


SuperSplat editor

The SuperSplat Editor is VAMS's first iframe-embedded viewer. It hosts the complete PlayCanvas SuperSplat Gaussian-splat editor UI (https://github.com/playcanvas/supersplat, MIT license) as a self-hosted static build served from /viewers/supersplat/. The editor provides a full-featured interface with scene panel, transform and selection tools, camera animation controls, and render/export menus.

SuperSplat is the default viewer for all Gaussian splat formats it supports and the sole viewer for .lcc files (XGRIDS proprietary multi-LOD Gaussian-splat format). When loading .lcc files, SuperSplat automatically selects the highest level-of-detail under 20 million Gaussians.

The viewer requires the ALLOWUNSAFEEVAL feature flag to be enabled in the deployment configuration. Without this flag, the SuperSplat Editor will not register in the viewer system. The editor renders through WebGPU and has no WebGL fallback: it runs in current Chrome and Edge, Safari 26 or later, and Firefox where WebGPU is enabled, and in any other browser it shows a startup message instead of the editor. Supported import formats are .lcc, .ply (including .compressed.ply), .sog, and .splat.

Editing is not saved back to VAMS

The SuperSplat editor's tools and export/download features operate in the browser. Edited or exported splats download to your local machine; VAMS does not currently persist edits back to the asset. Use a bundled single-file .sog for best results — unbundled SOGS (a meta.json with sibling .webp files) is not supported in the embedded editor.

Files are delivered to the SuperSplat editor via presigned Amazon S3 URLs passed through a ?load= query parameter. The presigned URLs enable direct range-request access to Amazon S3, supporting future streaming capabilities for large splat datasets.