Unreal Revit

Hi,

I am starting this tread to gather enough info to start the process of the getting Revit Data aka Modeled Geomentry into the Unreal Engine 4. I am looking for people input. Through this I would like to create a pipeline. My knowledge of Revit is advance but I’m learning entry level of Unreal Engine.

What is the most practical approach.

???

I’m a BIM manager and I can tell you from experience you can import Revit geometry directly to Unreal by exporting it as an .fbx file. However, you’re going to have some issues unless you pass the Revit model through another application like 3DS Max to re-scale the geometry and create your UV’s, beforehand.

Revit will not create UV’s for your models and in my experience, your geometry is going to be pretty messy (very high poly and un-optimized geometry, inverted face normals, etc.).

If you just want a quick walk-through of your Revit model, you can make some minor tweaks in 3DS Max and have a decent, untextured model to view in Unreal. For anything more - even close to an ArchViz quality scene (let alone photo-real) - you’re better off re-modelling everything in another program.

This is why you don’t see architects pulling their revit models directly for renders; instead they re-model/hire another company for visualizations.

Hope this helps.

If you’re using UE4.5+ and you’re only importing simple meshes like walls, floors and such, then you usually can do a direct port with no hassle or fuss.

If you’re using an older version and/or have more complex geometry like pipes, furniture etc, then you’re going to have to pass the file through a program that can do lightmapping as mentioned above by Kadeschui.

Some tips:

  1. Try to break up larger models. If you have a house with 10 rooms, don’t import them all at once as one model. Break it up into seperate rooms and import 10 files, then just drop them into the scene (they should automatically be arranged if you click+drag them in all at once)

  2. In addition to above, you don’t want to separate any wall or floor that is visually contiguous. Walls that meet at corners are fine but separating a continuous wall and joining them together causes seaming since UE4 renders each geometry on a different thread during building. You can see what I mean here: https://forums.unrealengine.com/showthread.php?40787-Same-material-different-appearance-light-bleeding

We’re currently developing our Revit to UE4 workflow are having a some decent success. It’s not simple by any means, but we are able to reuse the geometry, generate collision hulls, and light map UV’s on the fly. We do take everything through Max right now and making regular UV’s are definitely the bottle neck at the moment. You also have to watch out for smoothing groups, most stuff out of Revit does not had any smoothing group information, which may or may not cause a problem when the asset gets to unreal. We also create materials in UE4, discarding the revit materials, in fact they are only used for assignment. Be sure to convert them to standard materials. Also, take a look at tom shannon’s maxscript, it’s a huge time saver. TS_Tools v1.1: UE4 Mass FBX Exporter v1.1 and UCX Namer v1.0

Sounds like a lot of work, but it’s not too bad. The speed and visual fidelity in which you work in Unreal makes it very attractive. The ability to work on visuals, render animations, add interactivity, etc, al in real time, is frankly amazing.

Going foward, we are looking at automating much of the conversion process: Taking all the meshes from revit (via FBX or IFC), finding duplicates/instances (think of all the CW mullions), maybe remove unneeded polys, then recording their locations in 3d space, then running a placement script in UE after working on and importing the representative meshes.

My tests have been quite small at the moment, but we’ve got revit models for every project we do, and I’m pushing for Unreal to become part of our design viz pipeline.

If export DWG solids, then import as one object, adjust materials in Max the FBX file imports faster, with less triangles.
The advanced sample project is 250 000 triangles/400 000 verts in UE4, not to bad since the default Revit FBX is 1,3 milion in Max, and 5000 objects :(.
“edit” I merged/converted to poly, and welded it so with some work the Revit FBX ended up at 600 000 verts

This is with LPV, as a fast test with +50fps on a Titan.
http://s14.postimg.org/wz51q008t/revitsample.jpg

Thanks for the info. I greatly see the potential of the unreal engine. I really don’t think having to rework or regroup in 3dsmax that much work. Also thanks for the link to the blog. I find it really useful.

Some interesting replies here…I should add that I primarily work on large healthcare Revit projects and the size of the models coupled with Revit’s not-so-optimized meshes really makes a direct import untenable.

Looks like some of you are having some successes though…@czoog - What sorts of poly counts are you working with, if you don’t mind? What are you methods for optimizing geometry, if any?

Cheers

Like I said, I’ve been doing some small tests, mainly as proof of concept, and to see what we need to do to smooth out the workflow. My current scene has bout 300k tris, but only 100k of that is from revit. (the rest is highpoly furniture from max, and speedtree). As far as otimization goes, I’ve run the wall geometry (via IFC) through a program called FME, in which I was able to strip out the unneeded faces (bottoms/top of walls, coplaner wall joins, etc). In the same tool also look for duplicate object instances and record their location in 3d space in hopes of using some kind of placement script some day (not working yet). Only downside is that FME does not write out to FBX so I use OBJ, but then I sometimes have smoothing group issues. If you are not familiar with it, FME comes from the GIS world, its like a swiss army knife of spatial data, it can convert and manipulate data from hundreds of formats. We use it to do all kinds of things.

Another test I am doing with FME has to do with finding all the circular objects revit makes (railings, columns, etc) decimating them to a lowpoly mesh.

I’ll be coming to a stopping point in a few weeks, and I hope to share some visuals then.

We also do a lot of very large hospitals, which tend to be our biggest and most unweidly revit models. Well, some of our airports, and few master planning projects can be bigger, but hospitals are the worst for bringing revit to it’s knees quickly :wink:

Hi guys, I’m also trying to take the jump and figure out a pipeline for revit>ue4. I’ve had the same experiences as Czoog.
However, unlike Czoog who sounds like he knows what hes talking about, I come from a nearly nonexistent background when it comes to 3d modeling in regards to rendering/uv/texture related things.

My experiences so far:
FBX(revit) > ue4 give me alot of ‘overlapping uv’ and 'lightmap UVs are overlapping by XX%)
-----> UE4.5.1 Allows you to generate a second UV channel for lightmaps (in import dialouge & after the fact), which you have to manually assign ------in the ue4 mesh editor.

My findings:
Revit does NOT provide you with unwrap uv’s or a lightmap uv’s which is what causes the uv errors upon lighting build.

What I’ve tried:
FBX>3ds where I used this script I found (here) to create unwrap UV’s all at once (which I’m unsure if its doing exactly what I need).
— I then export FBX(3ds)>UE4 and the importer chokes about halfway through when I have the ‘generate uv lightmaps’ option checked in the 4.5.1 fbx importer dialouge. Without the ‘generate uv lightmaps’ checked, everything imports.

That still leaves the problem of telling ue4 to use the generated uv channel 1, of which you would have to do for every single object in your scene. I’ve been unable to test this either.

I figured I’d share my experiences so someone else at my level doesn’t struggle through some of the same things.

@Cgooz – any tips/video tutorials(that you’ve found) that you can offer? (Specific steps taken in 3ds>ue4?)

If anyone wants some good reading material i would recommend Mastering Unreal Technology Books I & II. I know its basically taking about an older version of the Unreal Software but there is alot of knowledge stored in it.

Revit -> FBX -> 3dsmax

I do also believe that going from revit to udk that we need to focus only on the required. Compact model from Revit to blocks. That way we can build the set like lego. Hopefully i will begin testing my theories and posting that somewhere on the site.

Strange. In UE4.5.1 it automatically chooses the correct UV channel when I import my fbx files (from Sketchup).

Regardless you don’t need to manually change every individual static mesh to use lightmap channel 1.

Go to your content browser, select all your static meshes, right click and select property matrix. In the new window on the right hand side, change the light map coordinate to 1. That should change every static mesh that was highlighted all at once to use the correct UV channel. Really big time saver. This also works for assigning basic collisions too.

Pro tip, thanks. I’ll check it out.

Since LPV is not possible with mobile platform I tested automatic lightmap generation when import to UE4, and to my surprice the simple sample project generates in 5min even with LM res set to 768 on all assets, and very high settings for lightmass 70 bounces, 4 in quality etc :smiley:

I used DWG solid export from Revit, so very clean meshes.

http://s30.postimg.org/yvbyelmy5/sampletest.jpg

Wow it does look very clean. Thanks for the share. Gonna have to start experimenting with the different options.

Hi - Some really interesting workflow stuff coming out in this thread, useful reading through the posts.

We’ve been experimenting with Revit FBX -> UE4 recently and it’s really useful however definitely temperamental. If anyone here has worked with Unity, their proposed Revit FBX workflow is to import the FBX to 3DS Max, then run a script that converts all the Autodesk Materials to Standard materials before re-exporting the FBX for import. I’ve never managed to get this working as I’ve not had the script installed and it looks like UE4 works differently.

One thing I have wanted to get on top of is default lighting set ups for external architectural viz. Has anyone played with time of day/sky/environment set ups and the Dynamic Global illumination system (therefore no light mass lighting build which is a timesaver)?

so how did you get the materials all seperated with dwg solid export? what steps are involved i tried this.

I export as DWG 2013, import with “split by material”, and most come in as multi/sub object materials, some as a single material that can be added to the multi/sub, and if convert the meshes to poly a wall with no windows is 8 verts/12 edges just like a box in Max, so a a very clean model.

This is in Revit/Max 2015, with latest updates.

Elliptical shapes are better to seperately import(FBX) or model in Max though.

Would you mind posting a few screen shots of the process, outlining some of the material related things? I’m assuming since you mention that they ''came in with multi/sub object mats" that you did your material assigning in revit? Or did you do revit>dwg 2013>max>fbx>ue4? or revit>dwg2013>max>dwg2013>ue4?

Really appreciate it as the visuals that come with unity are pretty paltry.

Just noticed the post(on a travel), so may be a bit late :slight_smile:
It´s just manual export of ver 2013 DWG from Revit with “solids” enabled, then import with “Layer, Blocks as Node Hierarchy to Max , Split by Material”
You might also tick weld option, and set solid curve res to your taste, and if a complex model merge as much as possible before export to FBX, since UE4 import takes more time merging then Max, and it merges everything.

In Max I not do anything with the materials, they transfer with textures also, but I replace them in UE4 anyway.
This is with latest updates, so DWG exports very fast, and I don’t use Suite workflow.

So I select one mesh, modify tab, then “attach list” add the meshes I want joined, and if different materials a multi/sub is created.
Then you can convert to poly if want less edges/bevel/smooth etc.

I use LPV in UE4 so I just add a uvmap modifier to adjust the texture tiling, and everything animated like doors/elevators are not merged.

Not late at all :slight_smile:
This is all really good information (much appreciated!), I’m more or less just over the cusp of grasping some of the max/ue4 concepts, so I’m going to try and relay some of this back to you in a linear way to make sure I understand your process.

  1. Revit dwg 2013 export w/ mentioned options ticked.
  2. If a complex model, merge objects in 3ds max where possible.
    2.5. Select one mesh>modify>attach list modifier>convert to editable poly for optimization. (I’m assuming this is all in max)
  3. Export from max to ue4 via fbx.
  4. Replace materials/textures(these are considered the ‘same’ things right?). I’m going to need to find a few tutorials to help deal with ue4 material assigning/editing

You mentioned LPV (going to have to research this, I’m not familiar with the term, or benefits) and using a uvmap modifier(in max correct?). So this step would fall somewhere around 2-2.5.

Thanks for fleshing out your process a bit more for us!