Modular scene import (fbx & mesh instances)

Is it possible (or is it planned) to allow import fbx with mesh instances information. It would allow provide modular scene build without time expensive rebuilding inside Unreal. I use Modo and I would like to have possibility import instances to svae game memory.

After import it looks like this printscreen (mesh + modo instance). It works only when I check off combine meshes. Unfortunately when I place one mesh after another and set 0,0,0 values both meshes are in the same place so instance position is lost. Second thing is strange instance shading. Third thing is that I`m not sure is that instance or second mesh. How to check it? I would like to save memory and use many time one mesh imported with Modo instances
[1]:

When using modularity for your designs you’ll only want to export the individual pieces that are needed to reconstruct in UE4.

There is a feature request in for allowing the original pivot to keep its position without shifting to the FBX world origin on import. However, there is no timeline for if/when this feature will be in the engine.

Each piece that is imported with the FBX is considered its own mesh. Using the modular construction pieces that would make up the whole piece are all you need to import and rebuild them in the editor.

With regards to the “instance shading” are your meshes setup with a second UV for the light maps?
If so, you may want to increase the lightmap resolution from the default 32 to a higher value like 64, 128, 256.

Thanks!

Tim

This feature will improve dramatically my production workflow. Please mind to include this. Even a single object in 0,0,0 as a master (i.e. column.fbx) + a txt or comma separated (i.e. column.txt) file with nine values for the instancing (xpos,ypos,zpos,xrot,yrot,zrot,xscale,yscale,zscale) would be usefull. I managed an addon to export my scene from blender this way but I can not find a tool able to instance in Unreal the column.fbx (pivot in 0,0,0) + column.txt (several rows with nine values) with the instance positions exported from blender.

Two years passed, is this feature anywhere ready or planned? Do you know any third party script or plugins? This will be a huge time saver. Thank you!

Hello Tim,

actually i am dealing with an similar issue. I am building large scale levels with a lot of details and within “a lot” asset pieces are reused in form of instances inside 3dsmax. It would be a bummer to rebuild/build the whole thing in UE4.

Example: simple landing platform = platform-frame, four support beams and a lot of low poly extra details.

All four beams are the same, low poly assets are sharing same base meshes as well. The whole level is build in 3dsmax. (fixed pipeline, other artists are working on assets as well). When i’m going to import the FBX for a room with this assets, each asset like a support beam is going to be imported as separate object instead of using “one” beam asset and reusing this as reference on all instances. Performance and schedule wise, we need to improve this task.

Since Epic is improving the engines resource management which is also important for VR - is there a way to improve the FBX pipeline or do you have any tip from one of your level designers how to deal with instances. (we’re using certain third party tools for placing instanced objects - building the level inside UE4 would take ages)

I am not a programmer but as an artist i could live with this suggestion:

Checkbox inside FBX import called: “Direct import into level and remember mesh by naming”. Literally it would take a screw_01 for example, importing it as one asset directly into the editor…and is placing meshes called screw_02…03…04 inside the editor using screw_01 as reference and world coordinates from the instances. With this technique we would be able to build a whole level outside of UE4 and after import using 50 instanced meshes instead of having 1000 copies in the editor browser.

Best and good monday,
Tobias

@ Kajisan

The intended workflow is still to build your build your game levels inside the editor rather than a modeling program. Any instances used in a program like Max/Maya will not be seen as instances when they are imported but as individual assets. So your projects size will grow because of this.

I’m not sure if something like this will be available in the future or not, but as far as I’m aware at the moment there are no plans for this type of feature.

No problem, i will figure a way. Thanks for the fast reply! :slight_smile:

Hi Kajisan, I was stuck in the same problem, so my friends and I are working on something that efficiently solved this issue. It’s still in development, maybe you can help us by providing your input, we can work together and help the community. I will message you.

Hello, I may have a solution for this, but not sure if it is the best way to create environments in UE4… My solution is to store the transforms of a bunch of things in Maya as locators that have the same pos,rot&scale as the object.

Then rename the locator to “SOCKET_nameofthing” and parent all the locators to a cube. I then export the cube and import into UE4.

On import make sure combine all meshes is ticked, then open up the mesh asset and you’ll see all the sockets with the correct transforms.

Then I just made a quick blueprint that loops through all the sockets, gets each transform then creates an instanced static mesh at that location.

Its pretty straight forward and once you do it a few times it’s very quick. I even scripted the Maya locator part so that’s all automated as well.

My question is, is this the right way of doing this though? Or should these sorts of assets just be combined into one mesh in Maya? I’m a bit confused about the most efficient way to bring in assets. To me it makes more sense to instance everything rather than combine it, but then when you build lighting, UE4 complains about the map being too big for the instance.

Any advice would be much appreciated and I hope the above helps someone :slight_smile:

Some interesting work being done by Fabric Engine on Maya to Unreal pipeline.
http://fabricengine.com/fabric-unreal-alembic-workflows/

Same for me. If you think deep about this, the main pro on maintain instancing while in editor and builds is to reduce all the realtime rendering pipeline and to have a lightweighted pak for customers, always with low or mid end computers. Of course to not repeat the work done in 3dsMax or Revit (my pipeline). But (as richst42 says) I’m figuring out that if you have several instances of a unique mesh with its own UVmap for lightmapping (because cooking lighting is your decision instead realtime lighting)…, What would do UE4 to apply different lightmappings on every instance if all of them have the same UVmap? Actually this is not possible. A solution would be to give to the instances the aim to share the same reference mesh/material/texture mapping but different lightmapping calculations. Difficult to apply instances/references phylosophy. For me the only choice is to blueprint a kind of process to substitute the instanced/referenced meshes in Max by prefabs in UE4 automatically. By now.

I don’t understand why such an important feature isn’t supported. I believe it wouldn’t take much time for Unreal Devs to do this and it would save artists TONs of time while creating the scenes. With all respect to Unreal Editor, specialized modelling programs are much better at assembling the scene, instancing, putting materials on objects etc…

Recognizing instances during FBX scene import from 3D apps (including Blender) would be an amazing feature; I hope to see something like this added. It would make level design even easier, as you could work with your 3D app’s native tools. Thanks for considering this.

If i understand you, you want instances from max to be instance in UE because of memory, only solution that I know for now is genuine plugin unreal studio (architects) Unreal datasmith, it brings instances perfectly but rest of import options is lame! so 4 years later is there something with FBX?

Kratos_88: You can use File → Import into Level…
It has weaknesses but works fine with care ^^
Reason not to use it is material and lightmapUVs generation that Datasmith takes care of for you.

Material in datasmith is lamex2, also i have big problem changing UV of lightmaps i have 40 objects and need to change uv lightmap index and destination index have no idea how to do that (not one by one)… still totaly confused what channel is lightmap channel, datasmith and fbx confused me totaly

Sorry to hear that Kratos. I think Datasmith does a good job as long as your materials aren’t crazily complex. And when multiple object editing is concerned, you might want to check out Bulk Edit via Propery Matrix… Property Matrix | Unreal Engine Documentation You can change lightmap Index on many objects this way. Your problem might be though that you exceeded the 8 UV channel limit in your app so Datasmith couldn’t create lightmap UV anyway as that would replace your UVs.

This is a really good solution. Thank you.

If you have a higher resolution of the socketblueprint.jpg image I would appreciate you sharing it.

I don’t understand some of the variables as they are hard to read. Also where is the Construction Script taking place?

I needed to convert locations from particle system in 3Ds Max so I ended up using Mesher (Compound Objects) to convert particle cubes to geometry. Then I used Explode option in Editable Mesh (with tolerance of 180) to make separate objects. After that I centered pivots for each object to the center of the object (can be done automatically for the entire selection) and finally I wrote a little script in Max to create a Locator for each selected object and translate it to its pivot.

Here is the script in case anyone has the same problem.


mySel = selection;

for i in mySel do(

loc = point()

loc.cross = on

loc.position = i.position

)

I managed to solve my problem with much simpler script. If anyone has the same problem I hope this will help.