BIM x GIS = Geospatial Intelligence
geoBIM.app is a web-native application for streaming massive 3D BIM and geospatial data directly in the browser, powered by CesiumJS and OGC 3D Tiles. It places your BIM models in their real geographic context — embedded in terrain, imagery, and existing urban structures rather than viewed in isolation.
geoBIM.app streams all formats supported by CesiumJS. IFC and Revit files can be converted to 3D Tiles via the Cesium Ion design tiler. It targets architects, engineers, contractors, authorities, operators, and project managers — all stakeholders involved in the lifecycle of a built asset.
- Asset Management — Load and manage 3D Tiles from Cesium Ion and Bentley iTwin
- Layer Management — Switch basemaps, terrain providers, Google 3D Tiles, OSM Buildings
- IFC & Revit Filtering — Show/hide by entity class or category with color-coded visualization
- Measurements — Distance, area, height, vertical distance, and coordinate tools with Firestore persistence
- Clipping — Polygon, rectangle, and per-asset axis-aligned section planes
- Construction Sequencing — 4D BIM stage animation via IFC properties
- Annotations — Point and area comments with Firestore persistence
- SensorThings API — Live bridge monitoring via FROST-Server with MQTT, sparkline charts, and damage event detection
- IoT Live Module — Real-time water level monitoring via Pegelonline with threshold alerts
- Geoid Module — EGM96 undulation lookup for orthometric height display in coordinate picker
- NRW LoD2 Buildings — Open Data 3D building models (Geobasis NRW) as toggleable layer
- Walk Mode — First-person navigation with WASD, mouse or Xbox controller, wall collision against 3D Tiles
- Third-Person Mode — Animated character with Unreal Engine-style controls, Player Start on any surface
- WEA Shadow Analysis — Wind turbine shadow flicker simulation with parametric turbines
- Lighting — Dynamic sun/shadows, IBL (spherical harmonics), HBAO ambient occlusion, time-of-day control
- Point Clouds — Eye Dome Lighting, color modes (RGB, height, classification), rendering presets
- 3D Gaussian Splatting — Photorealistic splat reconstructions as native Cesium 3D Tiles (
KHR_gaussian_splatting), self-hosted or via Ion, with an interactive move/scale/rotate gizmo (gizmo applies to self-hosted splats only; Ion-loaded splats carry their georeference in the tile content — reposition those via the normal asset pipeline) - Saved Views — Capture and restore camera positions with scene state
- Split-Screen — Side-by-side comparison mode
- Asset Placement — Move & rotate any 3D Tiles asset (IFC/Revit/iTwin/CityGML/local) or GLB model in place via an Ion-style gizmo (colored axis arrows + heading ring). Toggle Transform mode with the toolbar button or X; height stays in sync with the Z-Offset slider (live only, like the GLB gizmo)
- Z-Offset — Vertical repositioning of assets (-70m to +70m), shared with the placement gizmo's height handle
- Performance Presets — 4 levels from Performance to Ultra with tileset-level tuning
- Cesium Ion Connect — Link your own Cesium Ion account via OAuth2, load your private assets
- Post-Processing Effects — Bloom, lens flare, vignette, color grading with Cinematic preset
- Demo Mode — 30-minute full access at geobim.app/demo, no login required
For a complete feature reference see FEATURES.md.
A Cesium Ion account is required. The Community plan (free) includes:
- 5 GB asset storage
- 15 GB streaming per month
- 1,000 Google Photorealistic 3D Tiles sessions per month
The free plan covers personal projects and exploratory commercial evaluation. A paid plan is required if your organization exceeds $50K annual revenue or raised funds, works on government projects, or exceeds usage limits. See Cesium Ion Pricing for details.
-
Clone the repository:
git clone https://github.com/geobim-app/geobim.git cd geobim -
Create your configuration file:
cp config.example.js config.js
Edit
config.jsand fill in your Firebase credentials. The Cesium Ion token is entered at runtime in the app. -
Serve locally:
npx serve .Or open
index.htmldirectly in a browser.
| Layer | Technology |
|---|---|
| 3D Rendering | CesiumJS 1.141 |
| Code Style | Vanilla JavaScript, IIFE modules |
| BIM Conversion | Cesium Ion (IFC / Revit → 3D Tiles) |
| Backend / Auth | Firebase (Firestore, Email/Password Auth) |
| Hosting | Static (no build step) |
| Module | Description |
|---|---|
core.js |
Viewer initialization, asset loading, performance presets, Google/OSM, globe controls |
features.js |
IFC/Revit filtering, element selection, property display, saved views |
hideFeatures.js |
Click-to-hide individual BIM elements |
comments.js |
Point and area annotations with Firestore persistence |
measurement.js |
Distance, area, height, vertical distance, coordinate tools |
clipping.js |
Polygon and rectangle clipping masks |
pointcloud.js |
Point cloud detection, Eye Dome Lighting, color modes |
z-offset.js |
Per-asset vertical offset system |
layerManager.js |
Basemap switching and terrain provider management |
lighting.js |
Dynamic sun/shadows, atmosphere, time-based positioning |
ibl.js |
Image-based lighting via spherical harmonics and KTX2 cubemaps |
ui.js |
Collapsible sidebar toolbar with 12 sections |
ui-helpers-modern.js |
List rendering helpers for UI components |
measurement-store.js |
Measurement persistence in Firestore |
clipping-planes.js |
Per-asset axis-aligned clipping planes (X/Y/Z) |
sequencing.js |
Construction sequencing (4D BIM) — stage animation |
sensorthings.js |
OGC SensorThings API module — live bridge monitoring with MQTT and damage detection |
iot.js |
Pegelonline IoT live module — water level and temperature markers |
geoid.js |
EGM96 geoid undulation lookup for coordinate picker |
auth.js |
Demo mode authentication and Ion token management |
config.js |
Firebase credentials (gitignored) |
The bridge monitoring module (sensorthings.js) simulates a structural health monitoring (SHM) scenario based on real sensor typologies used in civil engineering practice.
| Sensor | Observed Property | Threshold |
|---|---|---|
| Accelerometer (MEMS) | Vertical Acceleration (g) | |a| > 0.08 g |
| Inclinometer (biaxial) | Inclination Angle (deg) | |angle| > 0.25 deg |
| Thermocouple (Type K) | Temperature (°C) | — |
| Strain Gauge (foil) | Strain (microstrain) | < -65 µε |
Live sensor data is served via FROST-Server (Fraunhofer IOSB), an open-source implementation of the OGC SensorThings API Part 1: Sensing (v1.1). Data is consumed via REST and MQTT over WebSocket.
The SHM scenario draws on sensor configurations described in:
Retze, U. Beispielhafte Untersuchung zum Einsatz von Monitoringmethoden an einer Brücke. Dissertation, Universität der Bundeswehr München, Institut für Konstruktiven Ingenieurbau. athene-forschung
The bridge Reality Mesh was generated from UAV photogrammetry by the Geomatics Research Group at KU Leuven:
- Sketchfab model: skfb.ly/oVzUQ
- Project: UAS-Assisted Bridge Inspections
The SensorThings API is one of the download services recommended by the INSPIRE Maintenance and Implementation Group for environmental monitoring data (INSPIRE theme EF — Environmental Monitoring Facilities). The API4INSPIRE project provides guidance on deploying STA as an INSPIRE-compliant download service.
Licensed under the Business Source License 1.1. Non-commercial use, research, and education permitted. Commercial use requires written permission — info@geobim.app. Converts to MIT on 2030-03-01.
geoBIM.app is developed and maintained by Christof Lorenz.
For T&M consulting on geospatial BIM integration, digital twins, or CesiumJS-based applications, reach out via geobim.app, LinkedIn, or email at info@geobim.app.