You’ve got a 3D model — a photogrammetry mesh, an as-built structure, a drone-captured building. Your client wants to see it. They don’t have Blender, SketchUp, or any other 3D software installed.
Here’s how to share it.
The formats and their compatibility
| Format | Description | Browser-native? |
|---|---|---|
| GLB | Binary glTF — compact, self-contained | Yes (via Three.js) |
| GLTF | Text-based glTF with separate texture files | Yes (via Three.js) |
| OBJ | Wavefront OBJ — old standard, wide support | Not natively |
| FBX | Autodesk FBX — common in game/film pipelines | Not natively |
| STL | Stereolithography — common for 3D printing | Not natively |
| DAE | COLLADA — older exchange format | Not natively |
| 3D Tiles | OGC streaming format for large datasets | Via CesiumJS |
For browser-based delivery, GLB is the best format:
- Self-contained (textures embedded in one file)
- Wide browser viewer support
- Efficient binary encoding
- The format of choice for Three.js and WebGL renderers
If you have an OBJ or FBX, you can upload them directly to Swyvl — no conversion needed. If you need a single self-contained file (e.g. for email attachment or other platforms), convert to GLB: most DCC tools (Blender, Maya, 3ds Max) can export GLB, and obj2gltf handles OBJ → GLB conversion on the command line.
Option 1: Sketchfab
Sketchfab is the most established platform for 3D model sharing. Upload your model, and Sketchfab hosts it in a browser-based Three.js viewer with a professional interface.
Pros:
- Well-known, widely used
- Good viewer quality
- Supports many formats
- Can embed in other websites
Cons:
- Public by default (your client data is visible to anyone unless you use a paid private share)
- Sketchfab branding in the viewer (on free plan)
- Aimed at the creative/gaming industry, not survey/engineering delivery
- Model size limits on free plan
Best for: Quick sharing of non-sensitive models. Portfolios. Creative work.
Not ideal for: Confidential client deliverables. Survey data. Anything where Sketchfab branding or public visibility is a problem.
Option 2: Model Viewer (Google)
Google’s <model-viewer> is an open-source web component that embeds a GLB viewer into any web page. It’s the same viewer used in Google Shopping’s AR product views.
Using it requires embedding HTML on a web page you control:
<model-viewer src="your-model.glb" camera-controls></model-viewer>
Pros: Free. Well-supported. Mobile AR mode on supported devices. Cons: Requires a web page and hosting. Not a delivery platform.
Option 3: Three.js self-hosted viewer
Three.js is the WebGL library that powers most browser-based 3D viewing. You can build a simple Three.js viewer, host it on a static file server, and share the URL.
Basic Three.js GLB viewer (~30 lines of code):
import * as THREE from 'three';
import { GLTFLoader } from 'three/examples/jsm/loaders/GLTFLoader.js';
import { OrbitControls } from 'three/examples/jsm/controls/OrbitControls.js';
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer({ antialias: true });
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
const controls = new OrbitControls(camera, renderer.domElement);
const loader = new GLTFLoader();
loader.load('model.glb', (gltf) => scene.add(gltf.scene));
camera.position.z = 5;
function animate() {
requestAnimationFrame(animate);
controls.update();
renderer.render(scene, camera);
}
animate();
Pros: Full control. No external dependencies. Free. Cons: Requires web development. No sharing infrastructure. Not practical for per-project delivery.
Option 4: For large datasets — CesiumJS + 3D Tiles
For large photogrammetry meshes (entire buildings, infrastructure corridors, survey sites), standard GLB files can be hundreds of megabytes to several gigabytes. These don’t stream well in a browser.
For large datasets, convert to 3D Tiles and stream via CesiumJS. The viewer loads only the geometry visible at the current zoom level — so a 20 GB mesh can be explored in real time in any browser.
See our guide on exporting 3D Tiles from photogrammetry software for the full workflow.
Option 5: Spatial data delivery platform
Upload your 3D model to a platform like Swyvl and share a branded portal link. The viewer handles OBJ, FBX, GLB, and GLTF (via Three.js) and 3D Tiles (via CesiumJS) automatically — no conversion required before upload.
Benefits over Sketchfab:
- Your branding, not Sketchfab’s
- Private by default — only the person with the link can view
- Organised with other deliverables (point cloud, GeoTIFF, PDF) in one place
- Permanent link (no expiry)
Converting to GLB
If your model is in OBJ, FBX, or another format:
Using Blender (free):
- Import your model (File → Import → [format])
- File → Export → glTF 2.0
- Set format to “GLB” (binary)
- Enable “Selected Objects” if needed
- Export
Using obj2gltf (command line):
npx obj2gltf -i model.obj -o model.glb
Using GDAL/osgEarth for geospatial meshes: Most photogrammetry software can export GLB directly — RealityCapture, Metashape, Pix4D all support it.
Which option should you use?
| Scenario | Recommendation |
|---|---|
| Quick visual share, non-sensitive | Sketchfab (free plan) |
| Client deliverable, professional | Swyvl or similar delivery platform |
| Large photogrammetry dataset (>500 MB) | 3D Tiles + CesiumJS via delivery platform |
| Technical client with modeling software | Send the GLB/OBJ directly |
| Building your own application | Three.js or model-viewer |
For most survey and drone operators delivering 3D model outputs to clients, the combination of:
- GLB for smaller models (individual structures, objects)
- 3D Tiles for larger site-scale models
…served through a branded delivery portal is the right answer. It’s professional, it’s permanent, and it works in any browser without software installation.