OTC Conference Center, loaded in ~1.8s, rendering at 60FPS in Ubuntu/Chrome on Intel® i7-4800MQ and nVIDIA Quadro K4100M. Run this example application here.
xeokit is an open source software development kit (SDK) from xeolabs for viewing high-detail 3D BIM 1 and CAD models in the browser.
The SDK contains a purpose-built WebGL-based2 3D engine with a bundled library of plugins focused on BIM and engineering visualization. The engine loads large models quickly, and uses advanced rendering techniques to interactively view them in most major browsers, on both desktop and mobile platforms.
The SDK is provided under an Affero GPL V3 dual-license, which allows free use for non-commercial purposes, with the option to purchase a licence for commercial use. See Pricing for commercial options.
- Built for BIM visualization - shaped by users' real-world IFC use cases.
- Used by industry leaders - sustained by licensing, sponsorship and contributions.
- Fast loading of huge models, using one of the fastest-loading geometry formats on the Web.
- Fast rendering in all major Web browsers, using a WebGL renderer purpose-built for BIM.
- Completely open source - you get all the source code. Customize and extend it however you want. Integrate it with your own data pipeline.
- Freedom to host anywhere - keep your data, pipeline tools and viewer on your own servers. Don't get caught out by overloaded cloud services, or locked in to high or unpredictable model conversion and hosting costs. No hassles with data protection laws.
- Transparent development - no surprises. Everything is openly managed at GitHub.
- Open community - join an open community of 3D Web programming experts. Share our tools and get support. Get your requirements on the roadmap.
- Flexible, risk-free licenses - from Perpetual Single Website to SaaS/OEM Subscription. Service Level Agreements and consultancy available. Right to use perpetually, in case xeolabs discontinues development.
- Connect with xeolab's ongoing research and development in high-performance browser-based 3D visualization for BIM and engineering. Ten years so far.
- Runs on WebGL V1, in all major browsers, without the use of plugins.
- Loads multiple models, from a variety of formats, including IFC, glTF, OBJ, STL, 3DXML, XKT and BIMServer.
- Loads models from your own data store, or straight off your file system. No need to store your models in the cloud.
- Loads IFC metadata (IFC2x3 and IFC4) with your models, to classify and navigate objects.
- Open source CLI tools for converting your IFC models. Available as a Docker image.
- Includes a bundled BIM viewer to get you started. Clone or download the repo, drop in your models and have them on the Web in minutes.
- A library of plugins for BIM to fast-track your platform development.
- Physically-based rendering for realistic previews.
- Dynamic scene graph for animations.
- Emphasize objects with ambient shadows, X-ray, highlight, selection and colorize effects.
- Reveal objects with interactive sectioning planes.
- Navigate many objects with a fast multi-hierarchy tree view.
- Interactively measure distances and angles.
- Annotate models with pinnable 3D labels.
- Share viewpoints by loading and saving BCF.
- Camera path animations for architectural walk-throughs.
- Clean, readable code following good software design principles, in modern, modular JavaScript.
- Live examples for all features, providing code boilerplates to get you started.
- Complete API documentation for everything in the SDK.
- Zero external dependencies.
The xeokit SDK's fastest loading format is its native, binary XKT format, which consists of a single BLOB containing a model, compressed using geometry quantization and DEFLATE compression.
Open source CLI tools are available to convert IFC STEP, glTF and DAE files into XKT format for efficient loading by xeokit. CLI tools are also available to extract JSON IFC metadata, to load alongside the model geometry. These tools can be easily scripted to build automated IFC -> xeokit data pipelines, and are available as a Docker image for easy installation.
xeokit can also import models from glTF, OBJ, STL, 3DXML and BIMServer, and can load multiple models into the same scene from different sources.
The table below shows the compression and transmission performance of xeokit's native XKT format. Click the links in the left column to try the demos in your browser.
Demo | IFC Size | XKT Size | Compress. Ratio | Objects | Load Time | Model Info
-------|----|------|-----|------|-----|----|----
Duplex | 0.52M | 0.12M | 4:1 | 291 | ~0.6s | Info
Schependomlaan | 49.2M | 1.5M | 32:1 | 3504 | ~0.8s | Info
OTC Conference Center | 71.7M | 5.0M | 14:1 | 6462 | ~1.0s | Info
West Riverside Hospital
(7 models) | 162.7M | 31.94M |5:1 | 50895 | ~5.0s | Info
Holter Tower | 68.6M | 4.8M | 14:1 | 60284 | ~1.8s | Info
[xeokit XKT format loading performance]
xeokit fills a gap in the market for high-performance rendering of large, real-world BIM models in the browser. While most other toolkits are built around general-purpose WebGL libraries, xeokit is engineered from the ground up specifically to render huge numbers of objects for BIM and CAD 3, 4.
The xeokit SDK comes with a growing library of bundled viewer plugins to accelerate the development of your application. The plugins are developed following the requirements of licensees using xeokit in production.
Plugin | Description | Demo | Docs | Tutorial |
---|---|---|---|---|
AngleMeasurementsPlugin | Interactively measures 3D angles | Demo | Docs | |
AnnotationsPlugin | Pins 3D labels on your models | Demo | Docs | |
AxisGizmoPlugin | Shows the coordinate system axis | Demo | Docs | |
BCFViewPointsPlugin | Saves and loads BCF viewpoints | Demo | Docs | Tutorial |
BIMServerLoaderPlugin | Loads models from BIMServer | Demo | Docs | Tutorial |
DistanceMeasurementsPlugin | Interactively measures distances | Demo | Docs | |
GLTFLoaderPlugin | Loads models from glTF, with accompanying IFC metadata | Demo | Docs | Tutorial |
XKTLoaderPlugin | Loads models from a compact binary format, with accompanying IFC metadata | Demo | Docs | |
OBJLoaderPlugin | Loads models from OBJ | Demo | Docs | Tutorial |
NavCubePlugin | Camera navigation cube | Demo | Docs | |
StoreyViewsPlugin | Creates plan views of IFC building models | Demo | Docs | |
SectionPlanesPlugin | Cross-section planes | Demo | Docs | Tutorial |
STLLoaderPlugin | Loads models from STL | Demo | Docs | Tutorial |
TreeViewPlugin | Creates an HTML tree view of IFC model elements | Demo | Docs | |
XML3DLoaderPlugin | Loads models from 3DXML | Demo | Docs | Tutorial |
Various open source projects and tools are available to support application development on xeokit:
Project/Tool | Description | Author(s) |
---|---|---|
xeokit-sdk | The JavaScript xeokit SDK | xeolabs |
xeokit-bim-viewer | A Web-based 3D/2D BIM model viewer, built on the xeokit SDK | xeolabs and OpenProject GmbH |
xeokit-gltf-to-xkt | Node.js-based pipeline tool to convert glTF to xeokit XKT format | xeolabs and uniZite AB |
xeokit-react | Prototype integration of the xeokit viewer into a React application | bimspot |
xeokit-metadata | A multi-platform command line tool for extracting the structural hierarchy of the building elements within an IFC into the metadata format of the xeokit-sdk | bimspot |
xeokit comes with a bundled viewer that loads BIM models from the file system. It's never been easier to get your IFC models onto the Web, without using cloud storage. Just clone the viewer repository on GitHib (or download it to your server), use the free open source pipeline tools to convert your models, drop them in the viewer's data directory, and you're good to go. Users have used the viewer, with minimal effort, to put together contract-winning demos. xeolabs offers consultation services to help you get started with the viewer.
- Loads multiple models from the file system.
- Tree view to explore layers, storeys and containment hierarchy.
- Save and load BCF viewpoints
- Slice objects with interactive section planes
- 3D and 2D modes - easily transition between 3D and 2D plan views
- Emphasis effects - isolate, X-ray, highlight, select objects
- Ambient shadows using scalable ambient obscurance (SAO)
- Control programmatically - load models, select objects, control camera etc.
- Embeddable - embed in your website and programmatically interact from the container page
- Pluggable loading strategy to adapt to your own BIM data store.
- Zero external dependencies - other than xeokit
- Used in production within the Open Project BIM project management software
Unlike most other solutions, everything in xeokit is open source. This includes xeokit's viewer, plugins, and pipeline tools. Being open source reduces risk for users, and affords them the ability to inspect the code, fork the repository and make any necessary fixes and customizations.
xeokit's development process is fully transparent. Users can follow and participate in development on GitHub5, and receive news of developments on Twitter6.
xeokit does not box users into a closed pipeline. The SDK allows to load models from the filesystem 7 or, using custom loading strategies, from your own data source, including BIMServer 8. Many other solutions keep user's models on their own servers, while incurring unpredictable costs and service availability.
Some users have developed their own strategies for efficiently loading models into xeokit, such as progressively streaming them from their own data store. Consultation and develoopment services are available, in case you need to adapt xeokit with your own loading strategy.
TODO: bimspot's docker image
xeokit is the product of xeolabs' ten years experience providing browser-based visualization solutions in STEM 9. As such, xeokit is a refined toolkit of reusable solutions for these kinds of application.
When you use xeokit, you'll tap into xeolabs' ongoing stream of research and development into high-performance browser-based visualization. You'll be able to automatically leverage the latest 3D capabilities (eg. accelerated rendering with WebGPU 10) as they appear in browsers.
xeokit is developed with the financial and technical support of industry leaders who are using the toolkit in production 11. Some of these supporters have contributed tools, capabilities and fixes, and have generally helped to assure the quality of the toolkit as they use it in production. One example is D-Studio, who have committed to ongoing support of xeokit, while xeolabs works with D-Studio to develop custom 4D BIM solutions on the SDK.
xeokit code is clean and maintainable. Written in modular ES6, it allows to cherry-pick only what developers need in their your applications, while allowing to customize and adding new proprietary modules and plugins as required. Code is built using best practices in software design 12, with empathy for users. All code is fully documented 13, with live examples of most features 14.
The xeokit SDK is free for non-commercial use, under the terms of the Affero GPL V3 open source license. See Pricing for commercial options.
<style class="fallback">body{visibility:hidden;white-space:pre;font-family:monospace}</style><script src="markdeep.min.js" charset="utf-8"></script><script src="https://casual-effects.com/markdeep/latest/markdeep.min.js?" charset="utf-8"></script><script>window.alreadyProcessedMarkdeep||(document.body.style.visibility="visible")</script>Footnotes
-
Building Information Modeling (BIM) ↩
-
WebGL is a JavaScript API for rendering interactive 2D and 3D graphics within any compatible web browser without the use of plug-ins ↩
-
Including D-Studio, OpenProject GmbH, uniZite AS, BIMData - see all users at xeokit.io ↩
-
Including SOLID, Open-Closed Principle and Riel's Hueristics ↩