Tuesday, October 18, 2011

Realistic architectural visualizations using IfcOpenShell and free open source software

From time to time we get reports of people using IfcOpenShell to create visualizations of their architectural IFC models. I figured it was about time to take IfcOpenShell for test drive myself and see how it performs for creating architectural visualizations. I used the build of IfcBlender that is available on GraphicAll and imported this IFC file. A lot of sample IFC files are not that detailed to create interesting interior visualizations, but the FZK haus from EliteCAD is an exception and has quite a detailed interior. Blender has been used to quickly slap some materials onto the model, other than that no real adjustments have been made. The model has been rendered in LuxRender.

FZK haus EliteCAD

What has been discovered after taking IfcOpenShell for a test drive:
  • IfcOpenShell is making some great progress and is able to import the vast majority of the geometry successfully 1
  • UV coordinates are generally not present in IFC files, making them perfect for the use of procedural materials
  • The fact that only blank materials are assigned in IfcBlender is not such a problem since one would probably have to redefine them anyway for the rendering engine
  • The fact that there is no normal smoothing for curved surfaces is quite appearant and has priority to be fixed
  • Often objects contain multiple parts, these parts should be preserved to make assigning different materials to different subsets of the meshes easier 2
  • Mapped representations should result in instanced geometry to reduce memory usage and limit manual work involved in finetuning the meshes 2

I would love to hear your comments and hear how IfcOpenShell fits into your workflow.

1 If you want to get an idea of the progress IfcOpenShell is making, compare this wireframe view of the FZK haus to an import done only a month ago by Rafael Moya.
2 For example consider the following representation (with apologies for the IFC lingo):
#100 = IFCSHAPEREPRESENTATION(#13, 'Body', 'MappedRepresentation', (#101, #102, #103, #104, #105));
#101 = IFCMAPPEDITEM(#106, #107);
#106 = IFCREPRESENTATIONMAP(#108, #109);
At this moment this results in one mesh with id #100. An alternative would be to mesh the five representations that are referenced by #90-#94 [indeed, one of them is #109] seperately and share them amongst the objects that reference them.


  1. Hi Thomas,
    Really good work you did there. I'll be glad to help if i have time.
    For the feedback/bugs :
    - performance : More than 3 min f*to import that 7Mb house you show, more than Half an hour for Ettenheim-GIS-05-11-2006_optimized.ifc from the same website. That on a Core2Duo 3GHz.
    - mesh are not clean : on both models, some vertecies are in the sky.
    - it makes blender 2.62 x64 crash on linux.
    Not sure the size are ok, i found the doors to be 4m high in the Ettenheim's town model.

    Keep up the good work and tell me if you need help. I'm no professionnal programmer and can't promise i'll find time. I'm porting my pug'ins to bmesh and have the highschool work as well... But i may have time.
    Und ich spreche Deutsch. Du bist Deutsch oder ?

  2. Hi matali,

    Thanks for your comment :)

    - Some models indeed take a very long time to process. It's a known issue, but perhaps not communicated clearly enough. I'm working on fixing it before the 0.4 release.
    - Hm loose vertices is something I've never witnessed. It would be great if you could show a screenshot and tell to which object these vertices belong.
    - Crashes are serious... I've you have more detailed information please let me know... Although I must say I have not yet looked beyond 2.61

    As with any open source project, any help is very much appreciated. I have not looked into bmesh yet, if you have some ideas, let me know.

    Would be great if you could add the bugs you encountered with as much info as possible to the bug tracker: https://sourceforge.net/tracker/?group_id=543113&atid=2204966
    Contributions to the code are very welcome, feel free to mail me if you need to discuss something: thomas@ifcopenshell.org

    Kind regards,

  3. why does it take longer for 500mb file? is it possible to bring down to seconds?

    1. IFC files can contain non-trivial boolean operations that take time to process. Performance improvements are on the roadmap: https://sourceforge.net/p/ifcopenshell/discussion/1782718/thread/b5e3ee85/

      Kind regards,

  4. This comment has been removed by a blog administrator.

  5. This comment has been removed by a blog administrator.