Skip to content

IFC to GLTF - possible enhancement using EXT_mesh_features and EXT_structural_metadata #140

Open
@sweco-sekrsv

Description

@sweco-sekrsv

I really like the idea of being able to convert/export the IFC files to GLTF and reuse them later instead of loading the original IFC file. Great job!
I think this can possibly be improved further by collapsing meshes together (saving draw calls) and also simplified by skipping storing the properties in an external json file. Instead of having the attributes in separate json files these can be added directly to the gltf file itself.

EXT_mesh_features: Features for structured data
Basically allows to merge geometry to save draw calls but be able to keep original ID's to the objects/faces even after being merged. This will allow for picking/selecting even if the orginal objects have been merged together.
KhronosGroup/glTF#2082
https://github.com/CesiumGS/glTF/tree/3d-tiles-next/extensions/2.0/Vendor/EXT_mesh_features

EXT_structural_metadata: Properties for structured data
Defines how fine-grained metadata can be stored within a glTF asset
KhronosGroup/glTF#2151

These extensions are already being used in 3D Tiles next
https://github.com/CesiumGS/3d-tiles/tree/main/next

Some examples:
https://github.com/javagl/3d-tiles-samples/blob/gltf-metadata-samples/glTF/README.md

gltfpack
It seems that gltfpack will possibly add support for these extension, this will allow compressing the gltf files further. Gltfpack can really make a big difference in both drawcalls but also to squeeze file size. I have seen file sizes 10 times smaller than the original gltf file.
https://meshoptimizer.org/gltf/

This would also make it possible to load the gltf files easier with all the properties into other gltf vievers (such as babylon.js, Unity3D etc) as long as they add support for these extensions.
By using these extensions, other tools would also be able to produce gltf files with standardized properties which could be consumed directly by the ifc.js ecosystem.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions