<aside> ℹ️ See also: Converting Models to XKT with convert2xkt

</aside>

<aside> ℹ️ See also: Converting IFC Models to XKT using ifc2gltf

</aside>

<aside> ℹ️ There is also a newer version of this tutorial: Converting IFC Models to XKT using Open Source Tools - A Simpler Pipeline, which removes COLLADA2GLTF within the conversion process. This tutorial includes COLLADA2GLTF.

</aside>


The xeokit SDK enables us to load large, full-precision BIM models over the Web in seconds and view them in the browser. To do this, we pre-convert our IFC files into xeokit's native XKT format. The XKT format compresses model geometry and metadata into a compact payload that a xeokit viewer can load quickly while using minimal browser resources.

In this tutorial, we'll use open source command line tools convert an IFC file into XKT. Then we'll create a simple viewer in JavaScript using the xeokit SDK, to view our XKT with.



Introduction

What's IFC?

The Industry Foundation Classes (IFC) data model is used to describe architectural, building and construction industry data.

IFC defines an entity-relationship model consisting of various entities organized into a object-based inheritance model, with classes representing various building elements such as IfcWall, geometry such as IfcExtrudedAreaSolid, and basic constructs such as IfcCartesianPoint.

The data model is developed by buildingSMART to facilitate interoperability in the AEC industry, and is a commonly used open collaboration format in BIM based projects.

An IFC file is usually provided as an IFC-SPF file ("STEP-file") , which is a text format in which each line represents an entity that instantiates a class within the data model.

What's XKT?

XKT is xeokit's native 3D model format, which compresses IFC and CAD models into a compact binary payload from which we can load large numbers of objects over the Web in seconds, at full geometric precision.

An XKT file also contains metadata on its objects, which enables a xeokit viewer to classify and manipulate them according to their types. That's useful for building things like object tree view UIs, automatic building storey plan views, and so on.

For each object/element, the metadata stores: