Install Asset
Install via Godot
To maintain one source of truth, Godot Asset Library is just a mirror of the old asset library so you can download directly on Godot via the integrated asset library browser
Quick Information
A GDExtension for loading buildingSMART IFC files directly in Godot 4.It creates a node tree of IFCNode meshes with the full geometry, properties, and quantity sets of the model.
GDIFC
A GDExtension for loading buildingSMART IFC files directly in Godot 4.
It creates a node tree of IFCNode meshes with the full geometry, properties, and quantity sets of the model.
Features
- Asynchronous, threaded loading β the editor and game remain responsive while the model is parsed
- IFC schema support: IFC 2x3, IFC 4.0, 4.1, 4.2, 4.3
- Per-object property sets, quantity sets, and attributes exposed as
Dictionary - Automatic material deduplication (single draw call per unique colour/transparency)
- Optional collision shape generation per object
- Georeferencing data (
MapConversion/ProjectedCRS) available after load - Platforms: Windows, Linux, Android, Web (WASM)
IFC 4.3 example on godot 4.7 dev outline branch
Installation
Godot Asset Library (recommended)
- Open your Godot 4 project.
- Go to AssetLib tab β search for GDIFC.
- Click Download β Install.
- Enable the plugin under Project β Project Settings β Plugins.
Manual
- Copy the
addons/GDIFC/folder into your project'sres://addons/directory. - Enable the plugin under Project β Project Settings β Plugins.
Quick Start
Add a GDIFCManager node to your scene, then call read_ifc from a script:
extends Node3D
@onready var ifc_manager: GDIFCManager = $GDIFCManager
func _ready() -> void:
# Load an IFC file. Pass an empty Array for collision_classes to skip
# collision generation, or list IFC class names to include (e.g. ["IfcWall"]).
ifc_manager.read_ifc("res://models/building.ifc", false, [])
After loading finishes, child IFCNode nodes are automatically added under the GDIFCManager.
To load from a base-64 encoded string (e.g. data received over the network):
ifc_manager.read_ifc_base64(base64_string, false, [])
API Reference
GDIFCManager β Node3D
The entry point for all IFC loading.
| Member | Type | Description |
|---|---|---|
read_ifc(path, create_collision, collision_classes) |
Error |
Load an IFC file from disk. path is a Godot resource path or absolute path. collision_classes is an Array[String] of IFC class names to generate collision shapes for (pass [] to disable). |
read_ifc_base64(data, create_collision, collision_classes) |
Error |
Load an IFC file from a base-64 encoded string. Same parameters as read_ifc. |
geometric_settings |
GDIFCLoaderSettings |
Resource controlling geometry tessellation, memory limits, and tolerances. Assign before calling read_ifc. |
IFCNode β MeshInstance3D
Represents a single IFC object in the scene tree.
| Property | Type | Description |
|---|---|---|
ifc_class |
String |
IFC class name, e.g. "IfcWall", "IfcSlab". |
attributes |
Dictionary |
Core IFC attributes (GlobalId, Name, Description, β¦). |
properties |
Dictionary |
All property sets keyed by set name. |
quantities |
Dictionary |
All quantity sets keyed by set name. |
GDIFCLoaderSettings β Resource
Attach to GDIFCManager.geometric_settings to control the loader.
| Property | Default | Description |
|---|---|---|
coordinate_to_origin |
false |
Translate the model so the project origin aligns with the IFC site origin. |
circle_segments |
12 |
Number of segments used to approximate circular profiles. |
tape_size |
67108864 (64 MB) |
Internal parser tape buffer size in bytes. |
memory_limit |
2147483648 (2 GB) |
Maximum memory the geometry processor may use in bytes. |
line_writer_buffer |
10000 |
Internal line-writer buffer size. |
tolerance_plane_intersection |
1.0e-1 |
Tolerance for plane-intersection tests. |
tolerance_plane_deviation |
3.0e-4 |
Tolerance for plane-deviation tests. |
tolerance_back_deviation_distance |
3.0e-4 |
Tolerance for back-deviation distance tests. |
tolerance_inside_outside_perimeter |
1.0e-10 |
Tolerance for inside/outside perimeter tests. |
tolerance_scalar_equality |
1.0e-4 |
Tolerance for scalar equality comparisons. |
plane_refit_iterations |
10 |
Maximum iterations for the plane-refit solver. |
boolean_union_threshold |
150 |
Maximum number of boolean union operations per object before the operation is skipped. |
Building from Source
Requirements
- Python 3.8+ and SCons (
pip install scons) - A C++17 compiler (MSVC 2022, GCC 12+, or Clang 14+)
- Boost headers β fetched automatically by the setup script (see below)
- Android:
ANDROID_HOMEset with the NDK installed - Web: Emscripten SDK installed and activated (
emccinPATH)
Steps
# 1. Clone with submodules
git clone --recurse-submodules https://github.com/Muniz1994/GDIFC.git
cd GDIFC
# 2. Download Boost headers into thirdparty/boost/
python tools/setup_boost.py
# 3. Build for the host platform (debug by default)
scons
# Or specify platform and target explicitly:
scons platform=windows target=template_release
scons platform=linux target=template_release
scons platform=android target=template_release arch=arm64
scons platform=web target=template_release
The compiled library is placed in ifc-godot-project/addons/GDIFC/ automatically.
Dependencies
| Library | Purpose |
|---|---|
| web-ifc | Geometry processing β converts IFC solid geometry into triangle meshes |
| IfcOpenShell / IfcParse | IFC file parsing and schema support |
| godot-cpp | Godot 4 GDExtension C++ bindings |
Licence
See LICENCE.md.
A GDExtension for loading buildingSMART IFC files directly in Godot 4.
It creates a node tree of IFCNode meshes with the full geometry, properties, and quantity sets of the model.
Reviews
Quick Information
A GDExtension for loading buildingSMART IFC files directly in Godot 4.It creates a node tree of IFCNode meshes with the full geometry, properties, and quantity sets of the model.