OSArch Community Meetup, July 3, 2021
Open Source
an
for
Graphics
&
BIM
AEC
Web Programming Toolkit
Viewing BIM in the browser is tricky!
Some challenges:
Background Info
Tech Overview
Loading Big Models Fast
xeokit Background Info
Introducing xeokit
xeokit Tech Overview
const viewer = new Viewer({
canvasId: "myCanvas"
});
viewer.camera.eye = [0,0,100];
viewer.camera.look = [0,0,0];
viewer.camera.up = [-0, 1, 0];
const xktLoader =
new XKTLoaderPlugin(viewer);
const model = xktLoader.load({
src: "HolterTower.xkt"
});
Introducing xeokit
Loading Big Models Fast
Introducing xeokit
Converting a Model to XKT
Viewing an XKT Model with xeokit
Converting a Model to XKT
Use open source tools in a chain:
IfcConvert
COLLADA2GLTF
xeokit-metadata
gltf2xkt
Using xeokit
A fast, closed-source IFC converter is also available from Creoox: creoox.com
Converting a Model to XKT (2)
./IfcConvert -y --use-element-guids Duplex.ifc Duplex.dae
./COLLADA2GLTF-bin --materialsCommon -v -i Duplex.dae -o Duplex.gltf
./xeokit-metadata Duplex.ifc Duplex.json
./gltf2xkt -s Duplex.gltf -m Duplex.json -o Duplex.xkt
Using the open source CLI tools in Linux:
Using xeokit
Viewing an XKT model with xeokit
import {Viewer, XKTLoaderPlugin}
from "xeokit-sdk.es.js";
const viewer = new Viewer({
canvasId: "myCanvas"
});
viewer.camera.eye = [1842022, 10, -5173301];
viewer.camera.look = [1842022, 10, -5173401];
viewer.camera.up = [-0.0, 1.0, 0.0];
const xktLoader = new XKTLoaderPlugin(viewer);
const model = xktLoader.load({
src: "Schependomlaan.xkt"
});
IFC = 49.3 MB, XKT = 1.6M, loaded in 0.7 secs, 60 FPS
Using xeokit
Minimizing Memory Footprint
Drawing Many Objects Interactively
Rounding Jitter on WebGL
Eliminating Rounding Jitter
Navigating Precisely
Minimizing Memory Footprint
A large plumbing model at BIMData.io
Inside xeokit
Drawing Many Objects Interactively
1. ANGLE_instanced_arrays
Two rendering techniques on WebGL:
2. Batched Geometry Arrays:
Inside xeokit
A Technical Hurdle - Rounding Jitter on WebGL
Need to emulate double-precision rendering to eliminate rounding jitter
Model centered at (1842022, 10, -5173301), provided by BIMData.io
Inside xeokit
Solution - How we Eliminate Rounding Jitter
Read about RTC coordinates in virtualglobebook.com
Inside xeokit
How we Navigate Precisely
Ray-cast every n frames to find distance to nearest object, scale dolly and zoom rates accordingly
Inside xeokit
Who's using xeokit?
Who's using xeokit?
Text
D-Studio
Centralized BIM Data
Requirements Management
BIM Model Viewer
Rule-Based Quality Checks
Clash Detection
KPI Dashboard
Coordination & Reports
Who's using xeokit?
Text
Contributed IFC metadata tool and React integration boilerplate
Who's using xeokit?
Who's using xeokit?
Who's using xeokit?
Who's using xeokit?
xeokit in Research: UMass Boston
3D Visualization of a Building
A semi-automatic pipeline to transform 2D floorplans to 3D models
Honors Senior Thesis Project
Who's using xeokit?
What's in the works for xeokit 2.0
Big thanks to our supporters:
D-Studio
Sponsor of many public xeokit features, including xeokit-bim-viewer
Sponsor of various public xeokit features
Help with feature design, QA and data sets for demos
Contributed MIT-licensed IFC metadata extractor tool and a React boilerplate
Collaborated on the XKT model format
xeokit's exclusive business partner
Thanks!
lindsay.kay@xeolabs.com