xeokit IFC Conversion Tests

The xeokit SDK empowers us to quickly load large, full-precision IFC models on the Web, enabling seamless browser viewing within seconds. To achieve this, we use our CLI tools to pre-convert IFC models into xeokit's efficient and fast-loading native XKT format.

We routinely validate the effectiveness of our conversion tools through tests with xeokit's conversion test suite. This suite performs batch conversions on a selected set of IFC models, resulting in the XKT models listed in the "Converted IFC Models" section below.

In this page, you'll also find detailed information on how we configure and execute the conversion process, providing insights for establishing your own IFC conversion pipeline with xeokit.

Converted IFC Models

In the table below are the results from our most recent IFC conversion run. On the far right, select "View" to observe the converted model in a xeokit web viewer. Choose "Log" to inspect the conversion log associated with that model. Additionally, "Link" provides a link through which you can hot-load the converted model into a xeokit web viewer.

IFC FileIFC Size (Mb)XKT Size (Mb)Conversion Time (Secs)Converted XKT
2011-09-14-Clinic
Clinic_A_20110906.ifc 18.1414 0.5076 0 View Debug Log Link Zip
Clinic_A_20110906_optimized.ifc 13.2081 0.4824 0 View Debug Log Link Zip
Clinic_MEP_20110906.ifc 207.3372 4.2968 0 View Debug Log Link Zip
Clinic_MEP_20110906_optimized.ifc 125.7807 4.1341 0 View Debug Log Link Zip
Clinic_S_20110715.ifc 19.3760 0.1519 0 View Debug Log Link Zip
Clinic_S_20110715_optimized.ifc 19.3760 0.1541 0 View Debug Log Link Zip
AC20-FZK-Haus
AC20-FZK-Haus.ifc 2.5708 0.0923 0 View Debug Log Link Zip
Archicad
AR-Demo_Sample_Single_Building_01.ifc 59.6020 0.9096 0 View Debug Log Link Zip
Archicad-Demoprojekt.ifc 56.8785 0.9155 0 View Debug Log Link Zip
ME-Demo_Sample_Single_Building_01.ifc 44.6952 0.5828 0 View Debug Log Link Zip
ST-Demo_Sample_Single_Building_01.ifc 12.0577 0.2310 0 View Debug Log Link Zip
Archicad_Based_Bexel_Sample_Project
ARCHICAD_Demoprojekt_Büro_23-IFC2x3.ifc 185.3826 3.2431 0 View Debug Log Link Zip
Electric.ifc 7.8783 1.5750 0 View Debug Log Link Zip
HCS.ifc 73.8566 0.8132 0 View Debug Log Link Zip
Ven.ifc 9.5959 0.1581 0 View Debug Log Link Zip
BIM1
BIM1841.ifc 30.9475 0.6971 0 View Debug Log Link Zip
BIM2
bim1840.ifc 1.5403 0.0864 0 View Debug Log Link Zip
BIMData
19_rue_Marc_Antoine_Petit_Ground_floor.ifc 4.1119 0.2113 0 View Debug Log Link Zip
MAP.ifc 28.7794 0.9215 0 View Debug Log Link Zip
CS_Auckland_AC_NZ
20160124OTC-Conference_Center.ifc 70.3272 2.5256 0 View Debug Log Link Zip
20160125Autodesk_Hospital_Parking_Garage_2015-IFC4.ifc 6.4500 0.3160 0 View Debug Log Link Zip
20160125Autodesk_Hospital_Parking_Garage_2015.ifc 6.4065 0.3275 0 View Debug Log Link Zip
20160125WestRiverSide_Hospital-IFC4-Autodesk_Hospital_Metric_Electrical.ifc 4.4353 0.1213 0 View Debug Log Link Zip
20160125WestRiverSide_Hospital-IFC4-Autodesk_Hospital_Metric_FireAlarm.ifc 0.9050 0.0435 0 View Debug Log Link Zip
20160125WestRiverSide_Hospital-IFC4-Autodesk_Hospital_Metric_Structural.ifc 6.4846 0.2566 0 View Debug Log Link Zip
20160125WestRiverSide_Hospital-IFC4-Autodesk_Hospital_Sprinkle.ifc 33.9901 1.2649 0 View Debug Log Link Zip
20190104WestRiverSide_Hospital-IFC4-Autodesk_Hospital_Metric_Architecture.ifc 80.9371 3.8243 0 View Debug Log Link Zip
20190104WestRiverSide_Hospital-Ifc2x3-Autodesk_Hospital_Metric_Mechanical.ifc 78.7642 3.0881 0 View Debug Log Link Zip
20190228ifc_saxion_28-09-2016.ifc 25.3028 0.5900 0 View Debug Log Link Zip
20191002Mechanical_Piping.ifc 43.6270 1.7149 0 View Debug Log Link Zip
20200117TOWER_TOTAL_00_10006320176.ifc 6.7246 0.9867 0 View Debug Log Link Zip
20200404UFCSPA-ARQ-PE-R0-correto.ifc 24.2418 1.1190 0 View Debug Log Link Zip
20201022mapping_IFC4_Convenience_store.ifc 11.0915 0.1268 0 View Debug Log Link Zip
20201027Mechanical_Piping.ifc 43.6270 1.6955 0 View Debug Log Link Zip
20201126GEN_DOE_GSE_ARC_Exploit.ifc 112.6139 3.6072 0 View Debug Log Link Zip
20201208DigitalHub_ARC.ifc 14.3227 0.2695 0 View Debug Log Link Zip
20201208FM_ARC_DigitalHub.ifc 14.3227 0.2681 0 View Debug Log Link Zip
202101082003_casbah_alger.ifc 44.7370 2.9054 0 View Debug Log Link Zip
20210219Architecture.ifc 113.3281 3.0936 0 View Debug Log Link Zip
20211108ARA_ASH_S3B_ARCHITECTURE_wall.ifc 94.2171 2.1331 0 View Debug Log Link Zip
261110Ettenheim-GIS-05-11-2006.ifc 31.0680 0.7909 0 View Debug Log Link Zip
261110Ettenheim-GIS-05-11-2006_optimized.ifc 18.3779 0.7750 0 View Debug Log Link Zip
Clinic
Clinic_A_20110906_optimized.ifc 13.2081 0.4846 0 View Debug Log Link Zip
Clinic_Architectural.ifc 13.0032 0.4871 0 View Debug Log Link Zip
Clinic_Electrical.ifc 6.8002 0.1898 0 View Debug Log Link Zip
Clinic_HVAC.ifc 0.0000 0.0000 0 View Debug Log Link Zip
Clinic_MEP_20110906_optimized.ifc 125.7807 4.1225 0 View Debug Log Link Zip
Clinic_Plumbing.ifc 0.0000 0.0000 0 View Debug Log Link Zip
Clinic_S_20110715_optimized.ifc 19.3760 0.1500 0 View Debug Log Link Zip
Clinic_Structural.ifc 19.0582 0.1520 0 View Debug Log Link Zip
Dormitory-ARC-Level2-only-IfcSpace-only
Dormitory-ARC-Level2-only-IfcSpace-only.ifc 0.0246 0.0022 0 View Debug Log Link Zip
Dormitory-ARC-Level2-only.ifc 2.5068 0.1463 0 View Debug Log Link Zip
Duplex
Duplex.ifc 1.2971 0.0710 0 View Debug Log Link Zip
Duplex-IFC2x3-2011-05-05
Duplex_2x3_2011-05-05.ifc 2.3278 0.0688 0 View Debug Log Link Zip
Duplex-IFC2x3-2011-09-07
Duplex_2x3_2011-09-07.ifc 2.3808 0.0691 0 View Debug Log Link Zip
Duplex-IFC2x3-2011-09-14
Duplex_A_20110907.ifc 2.3808 0.0702 0 View Debug Log Link Zip
Duplex_A_20110907_optimized.ifc 1.6286 0.0700 0 View Debug Log Link Zip
Duplex_MEP_20110907.ifc 17.8714 0.4211 0 View Debug Log Link Zip
Duplex_MEP_20110907_optimized.ifc 10.9338 0.4129 0 View Debug Log Link Zip
Esplanades
1807_EP_AR_v18.ifc 12.1092 0.3641 0 View Debug Log Link Zip
FOJAB_Landsarkivet
FOJAB_Landsarkivet.ifc 177.5226 11.3248 0 View Debug Log Link Zip
GitHub
0591IFCRohbau_20230922.ifc 10.2037 0.4442 0 View Debug Log Link Zip
231110AC-11-Smiley-West-04-07-2007.ifc 3.3090 0.0645 0 View Debug Log Link Zip
261110ADT-Smiley-West-5-Buildings-14-10-2005.ifc 8.2250 0.0547 0 View Debug Log Link Zip
301110FJK-Project-Final.ifc 14.3929 0.2684 0 View Debug Log Link Zip
Office_with_Balcony_Slabs.ifc 1.5788 0.0596 0 View Debug Log Link Zip
Vectorworks2016-IFC2x3-EQUA_IDA_ICE.ifc 14.1503 0.2458 0 View Debug Log Link Zip
HolterTower
Holter_Tower_10.ifc 177.4656 4.8153 0 View Debug Log Link Zip
IFCPlate_Color_Test
eed01637-d47a-46a4-8707-0438319a5cbd_AR-Demo_Sample_Building_01.ifc 0.0638 0.0008 0 View Debug Log Link Zip
IfcCurtain_IfcElementAssembly
Assembly_selection_TEST1_IFC4.ifc 2.7802 0.2480 0 View Debug Log Link Zip
IfcOpenShell
IfcOpenHouse2x3.ifc 0.1128 0.0094 0 View Debug Log Link Zip
IfcOpenHouse4.ifc 0.1133 0.0094 0 View Debug Log Link Zip
Karhumaki
Karhumaki-Bridge.ifc 67.7471 5.5510 0 View Debug Log Link Zip
Karhumaki-Terrains.ifc 67.7162 0.4078 0 View Debug Log Link Zip
LTU_A-House_2014-09-25_ifc
LTU_A-House_Air.ifc 25.3529 1.7664 0 View Debug Log Link Zip
LTU_A-House_Cooling.ifc 32.2849 2.5269 0 View Debug Log Link Zip
LTU_A-House_Ducting.ifc 8.3809 0.5885 0 View Debug Log Link Zip
LTU_A-House_Heating.ifc 34.2293 2.5578 0 View Debug Log Link Zip
LTU_A-House_K-modell.ifc 32.4027 1.0343 0 View Debug Log Link Zip
LTU_A-House_Plumbing.ifc 72.9708 8.2685 0 View Debug Log Link Zip
LTU_A-House_Sanitation.ifc 26.9642 2.0160 0 View Debug Log Link Zip
LTU_A-House_VOIDS.ifc 25.2962 1.7589 0 View Debug Log Link Zip
Molio
Molio_with_URIs.ifc 73.9451 0.7161 0 View Debug Log Link Zip
NBS_Lakeside
NBS_LakesideAC01_Arch.ifc 42.2630 1.4440 0 View Debug Log Link Zip
NBS_LakesideAC10_Arch.ifc 39.8622 1.4334 0 View Debug Log Link Zip
NBS_LakesideRVT01_Arch.ifc 9.6013 0.3246 0 View Debug Log Link Zip
NBS_LakesideRVT10_Arch.ifc 38.1755 1.8644 0 View Debug Log Link Zip
NBS_LakesideVW00_Arch.ifc 38.1954 1.8551 0 View Debug Log Link Zip
Nullpunkt
ARC_NUL_Nullpunkt_--_E_A.ifc 0.0135 0.0007 0 View Debug Log Link Zip
OTMH
OTMH.ifc 729.2747 23.5246 0 View Debug Log Link Zip
OTMH_L5_-_optimized.ifc 472.9840 15.0324 0 View Debug Log Link Zip
OTMH_L9_-_optimized.ifc 256.7725 8.9423 0 View Debug Log Link Zip
RAC
rac.ifc 10.5307 0.2891 0 View Debug Log Link Zip
Revit
Duplex.ifc 2.3278 0.0709 0 View Debug Log Link Zip
rac_advanced_sample_project.ifc 45.3167 1.7671 0 View Debug Log Link Zip
rme_advanced_sample_project.ifc 35.3099 1.3501 0 View Debug Log Link Zip
RiverSideOffice
RiverSideOffice.ifc 3.5706 0.0548 0 View Debug Log Link Zip
SGD_BODO_ifc
SGD_BODO_Arch-2.ifc 23.4692 1.4991 0 View Debug Log Link Zip
SGD_BODO_Arch-3.ifc 64.0959 1.7393 0 View Debug Log Link Zip
SGD_BODO_Eng-HVAC-Plumbing.ifc 72.8230 1.5618 0 View Debug Log Link Zip
SGD_BODO_Eng-HVAC-Ventilation.ifc 47.2323 0.6084 0 View Debug Log Link Zip
SGD_Munkerud
SGD_Munkerud_Arch-1.ifc 2.9567 0.1165 0 View Debug Log Link Zip
SGD_Munkerud_Arch-2.ifc 4.0062 0.1721 0 View Debug Log Link Zip
SGD_Munkerud_Arch-3.ifc 3.0109 0.1143 0 View Debug Log Link Zip
SGD_Munkerud_Eng-ELE.ifc 15.1005 0.0753 0 View Debug Log Link Zip
SGD_Munkerud_Eng-HVAC-Sanitary.ifc 10.7152 0.1743 0 View Debug Log Link Zip
SGD_Munkerud_Eng-HVAC-Ventilation.ifc 5.4814 0.0551 0 View Debug Log Link Zip
SGD_Munkerud_Merged.ifc 35.2096 0.4576 0 View Debug Log Link Zip
Schependomlaan
Schependomlaan.ifc 49.2870 0.7378 0 View Debug Log Link Zip
blenderbim
auto-geolocation.ifc 0.0055 0.0009 0 View Debug Log Link Zip
buildingSMART_IFC2.3
Clinic_Architectural.ifc 13.0032 0.4712 0 View Debug Log Link Zip
Clinic_Electrical.ifc 6.8002 0.1927 0 View Debug Log Link Zip
Clinic_HVAC.ifc 26.9146 0.9192 0 View Debug Log Link Zip
Clinic_Plumbing.ifc 55.8345 1.9198 0 View Debug Log Link Zip
Clinic_Structural.ifc 19.0582 0.1517 0 View Debug Log Link Zip
Schependomlaan.ifc 49.2870 0.7332 0 View Debug Log Link Zip
buildingSMART_IFC4.0
air-terminal-element.ifc 0.0145 0.0018 0 View Debug Log Link Zip
air-terminal-library-object.ifc 0.0257 0.0005 0 View Debug Log Link Zip
basin-advanced-brep.ifc 0.0100 0.0010 0 View Debug Log Link Zip
basin-faceted-brep.ifc 0.0319 0.0031 0 View Debug Log Link Zip
basin-tessellation.ifc 0.0122 0.0026 0 View Debug Log Link Zip
bath-csg-solid.ifc 0.0035 0.0005 0 View Debug Log Link Zip
beam-curved-i-shape-tessellated.ifc 0.3569 0.0614 0 View Debug Log Link Zip
beam-extruded-solid.ifc 0.0058 0.0009 0 View Debug Log Link Zip
beam-revolved-solid.ifc 0.0064 0.0000 0 View Debug Log Link Zip
beam-standard-case.ifc 0.0370 0.0005 0 View Debug Log Link Zip
beam-straight-i-shape-tessellated.ifc 0.1514 0.0254 0 View Debug Log Link Zip
beam-varying-cardinal-points.ifc 0.0063 0.0013 0 View Debug Log Link Zip
beam-varying-extrusion-paths.ifc 0.0046 0.0020 0 View Debug Log Link Zip
beam-varying-profiles.ifc 0.0045 0.0017 0 View Debug Log Link Zip
brep-model.ifc 0.0062 0.0007 0 View Debug Log Link Zip
column-extruded-solid.ifc 0.0032 0.0005 0 View Debug Log Link Zip
column-straight-rectangle-tessellation.ifc 0.0046 0.0007 0 View Debug Log Link Zip
construction-scheduling-task.ifc 0.0187 0.0011 0 View Debug Log Link Zip
csg-primitive.ifc 0.0051 0.0005 0 View Debug Log Link Zip
cube-advanced-brep.ifc 0.0106 0.0007 0 View Debug Log Link Zip
extruded-solid.ifc 0.0055 0.0005 0 View Debug Log Link Zip
geographic-referencing.ifc 0.0034 0.0005 0 View Debug Log Link Zip
grid-placement.ifc 0.0306 0.0025 0 View Debug Log Link Zip
mapped-shape-with-multiple-items.ifc 0.0079 0.0005 0 View Debug Log Link Zip
mapped-shape-with-transformation.ifc 0.0068 0.0005 0 View Debug Log Link Zip
mapped-shape-without-transformation.ifc 0.0067 0.0005 0 View Debug Log Link Zip
reinforcing-assembly.ifc 0.0221 0.0007 0 View Debug Log Link Zip
reinforcing-stirrup.ifc 0.0043 0.0005 0 View Debug Log Link Zip
slab-openings.ifc 0.0047 0.0005 0 View Debug Log Link Zip
slab-standard-case.ifc 0.0035 0.0005 0 View Debug Log Link Zip
slab-tessellated-unique-vertices.ifc 0.0050 0.0008 0 View Debug Log Link Zip
structural-curve-member.ifc 0.0149 0.0005 0 View Debug Log Link Zip
surface-model.ifc 0.0063 0.0007 0 View Debug Log Link Zip
tessellated-item.ifc 0.0054 0.0007 0 View Debug Log Link Zip
tessellation-with-blob-texture.ifc 0.0319 0.0010 0 View Debug Log Link Zip
tessellation-with-image-texture.ifc 0.0187 0.0010 0 View Debug Log Link Zip
tessellation-with-individual-colors.ifc 0.0027 0.0007 0 View Debug Log Link Zip
tessellation-with-pixel-texture.ifc 0.8051 0.0010 0 View Debug Log Link Zip
wall-elemented-case.ifc 0.0255 0.0005 0 View Debug Log Link Zip
wall-standard-case.ifc 0.0035 0.0007 0 View Debug Log Link Zip
wall-with-opening-and-window.ifc 0.0126 0.0010 0 View Debug Log Link Zip
ifc
nested-elements
Sample_Nested_Family.ifc 3.5560 1.3415 0 View Debug Log Link Zip
wefly
wefly.ifc 0.0115 0.0014 0 View Debug Log Link Zip



IFC Conversion System Configuration

We're running our converter on a fairly well-specced system, which keeps the office cat warm on a cold day. Below is a summary of our system specifications, along with the versions of the CLI converter tools and xeokit SDK we used. In this case, we're running everything on Linux, but you can just as easily run it on Windows and Mac O/S.

Date Wed Nov 13 2024 22:11:08 GMT+0100 (Central European Standard Time)
CPU Manufacturer Intel
CPU Brand Xeon® Gold 6134
Memory 135 GB
OS Platform linux
OS Distro Ubuntu
OS Release 22.04.4 LTS
Node.js v20.12.0
ifc2gltfcxconverter 4_30_beta
@xeokit/xeokit-convert 1.1.23
@xeokit/xeokit-sdk 2.6.55

IFC Conversion Pipeline Setup

We ran our converter tools on each IFC file in our test collection using the CLI commands shown below. For each IFC file, we substitute "model" with the name of that file.


ifc2gltfcxconverter

The ifc2gltfcxconverter tool is the first stage of our pipeline and converts IFC into glTF and JSON-encoded IFC metadata. Contact us here if you would like to evaluate this tool.

ifc2gltfcxconverter -i model.ifc -o model.glb -m model.json -s 20 -t 1000 -e 3

This creates a set of glb and JSON files that contain the IFC geometry and metadata, along with a JSON manifest that lists them, as shown below. The tool splits the IFC into multiple files like this so that they may be processed more reliably by the next step, and ulltimately loaded more reliably into xeokit's browser-based viewer.

Note the tool's -s option, which specifies that output glb files should be a maximum of 20Mb each, in this case. Also, the -t option splits the 3D geometry coordinates into tiled regions of size 1000 x 1000 x 1000 meters. That enables the xeokit viewer to render geometry with huge real-world coordinates accurately, without rounding jitter.

.
├── model.glb.manifest.json
├── model_1.glb
├── model_1.json
├── model_2.glb
├── model_2.json
├── model_3.glb
├── model_3.json
├── model.glb
└── model.json

convert2xkt

The convert2xkt tool is the second stage of our pipeline, and converts glTF into XKT, which we can view in the browser with xeokit. This is a NodeJS-based CLI tool that often needs us to allocate it some extra memory. Thanks to splitting our files, our NodeJS process is not overwhelmed by any memory stress!

node --max-old-space-size=14000 convert2xkt -n -a model.glb.manifest.json -o model.xkt.manifest.json

That converts the glb and JSON files into a set of XKT and JSON files, along with a JSON manifest that lists them, as shown below. XKT is xeokit's web-friendly native binary model format, designed to load quickly into its web viewer. The JSON files are the same files that were output by ifc2gltfcxconverter. We could have caused those JSON files to be embedded in the XKT, but since we configured convert2xkt with externalMetadata: true (see: convert2xkt Configs below), they are managed as external attachments in this pipeline setup.

.
├── model.xkt.manifest.json
├── model_1.xkt
├── model_1.json
├── model_2.xkt
├── model_2.json
├── model_3.xkt
├── model_3.json
├── model.xkt
└── model.json

xeokit-sdk

Finally, we visualize our XKT files in the browser using xeokit's web viewer. In JavaScript, we simply create a Viewer, add an XKTLoaderPlugin, and then load our XKT file manifest.


ifc2gltfcxconverter Arguments

The table below provides a comprehensive list of all arguments we're providing to ifc2gltfcxconverter.

Option Value Description
-i IFC file to convert.
-o Name of binary glTF file(s) to create as output.
-m Name of IFC metadata JSON file(s) to create as output.
-s 20

Maximum glTF file size in megabytes.

Once the size is reached, all following objects will be written into the next file, with _1, _2 etc. appended to the file name.

-t 1000

Geographical tile size in meters.

Sometimes, IFC models have objects that are so large that double precision values on the GPU are necessary to visualise it without distortion (for example infrastructure models). Double precision coordinates require too much memory on the GPU. That's why xeokit SDK uses local coordinate systems and single precision or even lower data types to optimise memory consumption on the GPU and improve performance. The local coordinate systems are called a tile.

This converter prepares and optimises large triangle meshes for improved usage of the tile feature of xeokit. Without that, large meshes are rendered with significant distortions. By default, tiles with a size of 200x200x200 meters are applied by the converter.

-e 3

Geometry embedding mode. Accepted values are:

  • 1 (default): Embed buffers into gltf file up to a file size of 32 Mb, separate .bin files otherwise.
  • 2: Always embed buffers.
  • 3: Never embed buffers Embedding buffers into the glTF file has one small advantage: fewer files (no separate .bin file). The disadvantage is a much bigger file, because writing float numbers into an ASCII file takes much more space than writing them into a binary file, which is basically raw memory, maximum efficiency.
For small files, it does not make a big difference, but for big models it is significant. So it depends on the use case: in an automated workflow, a separate .bin file is probably not an issue, so -e 3 (never embed buffers) is the best option.

convert2xkt Arguments

The table below lists the arguments we're providing to convert2xkt.

-c convert2xkt.conf.json Path to convert2xkt configs file.
-a Path to the input manifest of glTF and JSON files created by ifc2gltfcxconverter.
-o Path to the manifest of XKT files to create as output.

convert2xkt Configs

As shown from the provided arguments, we pass configurations to convert2xkt through a JSON configuration file named convert2xkt.conf.json. The configuration file's content is displayed below.

In the configuration file, the "sourceConfigs" object contains the "glb" and "gltf" objects, which contain the configurations used by convert2xkt in our IFC conversion tests. We're actually only using the "glb" object for these tests, since ifc2gltfcxconverter is creating .glb files for conversion by convert2xkt.


...