New Cad/BIM user

Hi All,

Just got myself an Oculus Go and am hoping to bring in some of my CAD/BIM models to see what we can make them look like in a VR headset.

Anyone got any pointer as to where to start, problems people have had etc.

Just starting to find my way about all this stuff.



Here’s a quick dump of everything I’ve sussed out doing the same task;

I use Navisworks Manage to convert the CAD files, because it can import many formats (eg IFC), and then export an FBX file.

The resulting FBX files can be imported directly into UE4, but the results will not be good. This is because Navisworks exports all currently visible objects to a single file. If your project is too big, it will probably crash during the export. Even if it succeeds, the exported file could contain thousands of parts, which poses a problem for UE4;

  • If you import the file as “combined mesh”, your performance will tank because the mesh is so huge and nothing can be culled.
  • If you import the file as separate meshes, your performance will tank because there are too many meshes for it to handle.

So to fix, you need to group the parts up into manageable chunks, which you can then import as single meshes.
You can do this in Navisworks by only having small sections visible as you export. Unfortunately, there is no automatic method to do this, but you can write your own .NET plugin to do the work for you.
Alternatively, you can bring the files into 3dsmax and sort the parts out there. You can merge groups of meshes into individual meshes, and then import 1 file containing those large meshes, OR you can export many files containing many parts, and import those files as combined meshes. Maxscript can make these tasks easy, but 3dsmax will bog down if you bring in too many files.
The end result needs to be hundreds of meshes, each containing 10’s of parts.

There is yet another problem though. When using simple renderer in Navisworks (ie plain colors), the FBX file has 1 “material” per part, even if the “material” is the same color. So this also destroys UE4 performance, because if you make 1 large mesh consisting of 20 parts, the mesh will then have 20 materials, and this is a problem. So you need to sort these materials out too. You can write a maxscript do this.

Another thing to consider is UV maps. An FBX exported whilst using the simple renderer does not have UV maps, which means a lot of textures you download/try will not work. You can generate these UV maps in 3dsmax. Or, you can use the advanced renderer in Navisworks, and add actual materials to all your parts. I’ve not used this method in production, but it seems if you add a textured material to a part in Navisworks, it will then generate UV maps, and export them. Who knows what the quality of those UV maps will be though?!
Alternatively, you can just make materials in UE4 that do not rely upon UV maps.

Further to this, if you intend to use static/baked lighting, then your parts must have UV maps, because UE4 uses the imported material/texture UV map to generate a UV map for lighting. So if you don’t import a UV map, it won’t be able to generate a lightmap, and you will get a lot of errors and no shadows. You can of course switch to dynamic lighting, but this might decrease your performance too much for VR.

Another thing to consider is the actor pivot, and the actor location. Using the regular FBX importer, you can have the actor import to the correct location in world, but the pivot of every mesh will likely be at 0,0,0, which sometimes isn’t useful. To import the pivot, you need to use the scene importer, but this has it’s own pro’s/con’s.

Another thing to consider is mesh instancing. AFAIK Navisworks does nothing to handle this, so you need to do it manually in 3dsmax or similar.

That’s all I can think of from the top of my head. There are many hurdles to overcome, but it is possible. There is also the Datasmith plugin you could checkout (I have not). Good luck!

Wilson, Thanks for the write up. I though it would be hard. I’m going to start playing around with the CAD files I’ve got out of Bentley’s AECOsim. I know Navisworks well and use that to bring together many different models from different software companies, Autodesk, Bentley, Archicad etc.

Will start with just one floor and one ductwork model. Not too worried about materials or mapping just yet. even looking around with everything plain colours would be a good start.

Thanks again.


Wilson briefly mentioned the Datasmith plugin, and I’ll expand on that. It is part of the Unreal Studio free beta program, and allows for the quick and efficient import of data from various CAD applications. Datasmith is under rapid development and regularly supporting additional applications.

Check it out: