Check out our latest project ✨ OpenChapter.io: free ebooks the way its meant to be πŸ“–

GDIFC

An asset by bmuniz1994
The page banner background of a mountain and forest
GDIFC thumbnail image
GDIFC thumbnail image
GDIFC thumbnail image
GDIFC hero image

Quick Information

0 ratings
GDIFC icon image
bmuniz1994
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.

Supported Engine Version
4.2
Version String
1.1.1-alpha
License Version
MPL-2.0
Support Level
community
Modified Date
7 days ago
Git URL
Issue URL

GDIFC

README 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)

README Bridge

IFC 4.3 example on godot 4.7 dev outline branch

Installation

  1. Open your Godot 4 project.
  2. Go to AssetLib tab β†’ search for GDIFC.
  3. Click Download β†’ Install.
  4. Enable the plugin under Project β†’ Project Settings β†’ Plugins.

Manual

  1. Copy the addons/GDIFC/ folder into your project's res://addons/ directory.
  2. 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_HOME set with the NDK installed
  • Web: Emscripten SDK installed and activated (emcc in PATH)

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

0 ratings

Your Rating

Headline must be at least 3 characters but not more than 50
Review must be at least 5 characters but not more than 500
Please sign in to add a review

Quick Information

0 ratings
GDIFC icon image
bmuniz1994
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.

Supported Engine Version
4.2
Version String
1.1.1-alpha
License Version
MPL-2.0
Support Level
community
Modified Date
7 days ago
Git URL
Issue URL

Open Source

Released under the AGPLv3 license

Plug and Play

Browse assets directly from Godot

Community Driven

Created by developers for developers