The new glTF import supported in 4.19 preview is awesome. [Experimentation]

Capture.JPG
glTF is a new format, created by khronos (openGl, openCL, collada, others), designed to share game assets and scenes beetween engines. Mostly designed as a webGL exchange format, it turns out is quite good for normal assets.

UE4.19 preview has a experimental importer for it, and right now its extremelly promising. This is an open format, that, once final, should work better than FBX, and actually work great with Blender.

I went to test the 4.19 preview and started doing a few experiments with it. Right now its much superior to FBX for some simple cases.
The cool point about glTF is that the same file holds a full scene, with multiple 3d objects, each of them with animation, and each of them with materials, and each material actually imports as a material graph, and with textures.

This means that glTF is **one click import and it setups every single mesh in your scene with correct materials and textures, from one file **This allows you to setup your game assets in blender, with a blender material graph and textures, and import it directly into ue4, with everything getting translated.

This gif shows the workflow:

My tests have resulted in this:

Basic static mesh support works. Skeletal meshes and animations are not supported yet.
Each of the objects in the scene will become a single static mesh in unreal. This is good for a modular pack, but very bad for complex multiobject files. An option to merge objects would be great (like in FBX import). This fails spectacularly if you try to import one of the complex models from glTF (GL Transmission Format) - Sketchfab , like the unity robot model (he imports as a ton of tiny objects) The same happens with the drone mode;.

Interestingly enough, Blender export works by default, without any setup. There are no more scale ******** to deal with as with FBX, and also it will use the correct axis by default, so no flipped models or badly scaled models. Great improvement over FBX. It “Just Works”

All objects in the scene will import as static meshes, with their scale and position reset. If you have any scale or position at “object” level in blender, when importing into unreal this will be reset. An option to apply the scale/position would be great, but working around it is absolutely trivial.
Smooth groups export perfectly by default, exactly as they are with blender (no more import normals or not as with FBX). Another great improvement over FBX

Whole scenes cant be imported well, as every object will just become a separated static mesh centered at origin, but without the “scene hierarchy”. The importer having the option to create a blueprint that holds the scene information would be a huge plus, and would allow one to create a whole scene in blender and import it as 1 object into ue4.

The material/texture import is a lot better than i expected, and its what makes this a superior format and workflow over FBX (for static meshes) right now. A blender cycles node tree will get completely translated to UE4, as long as it follows the roughness/metallic workflow. The fact that the importer already supports textures and recreates the material is awesome.

The one that benefits the most from this is Blender, as FBX support has allways been terrible, but gltf already works well. Once Blender 2.8 releases, you will be able to author your meshes from it, using the PBR viewport, and then export the file to UE4 and it will keep all the material setup, looking similar.

If unreal also adds glTF export, you would be able to extract any game asset in unreal, and import it into blender for use in a cinematic or a render with the pathtracer. With all the materials being compatible.

AFAIK there is no support for skeletal meshes and animation in glTF.

On top of that Blender 2.8 will not be production ready for some loooong time. So full support for mesh/skel/anims in Blender 2.79 is a must have thing and that’s not going to happen afaik.

glTF does support skeletal animation, in fact its designed precisely to work with game engines, with different animations separated, and a bone system like the one in game engines. One of the gltf demos in sketchfab comes with animation. Once unreal adds skeletal support and a way to import scenes as a blueprint (to keep scene hierarchy/setup), the format willl make FBX obsolete.

If the importer could generate the maps automatically sent to specific project folders then this would be perfection.

Thanks for taking the new glTF importer for a spin! This sort of feedback is really valuable. We’ll continue to improve the plugin during UE4.19’s lifetime and I hope to do some bigger enhancements for 4.20 and beyond.

The initial design goals were focused on someone creating assets specifically for games, who has control over their DCC application and pipeline. Supporting glTF files from external sources (Sketchfab, freelancers, etc.) is also important, and makes import flexibility/options more important.

The current plugin is geared toward one object per file, or multiple independent objects per file – an asset “pack” like you said. One file containing a composite object would be a good next step. Importing a whole scene is a much bigger step, but we’ll get there.

I’m just getting into animation, and have not started implementing bones, skins, morph targets, etc. So the Skeletal Mesh pipeline will come later & I’m hoping it will be as painless as today’s Static Mesh support.

BTW: Blender’s Eevee renderer was designed from the beginning to be compatible with Unreal’s material & lighting system. The long-term plan is for glTF to provide a clear path between these.

Good point! So far I’ve been thinking mostly about how to get things into UE4. The hardest thing about export would be materials, since glTF uses texture maps or single values for material inputs, not a general node graph. Still, this would be good to have after glTF import is in better shape!

Great write-up and feedback. Really excited to see the first iteration of the importer already works that well. Awesome job by Epic! :slight_smile:

Also glad to see the feedback is being listened to. As a Blender user myself, I can’t wait to have a fully functional asset pipeline for using Blender, the Substance Package and Unreal Engine via glTF.

Thank you Epic for glTF support!

Super happy that this is a thing in 4.19 :slight_smile:

I’m really looking forward to this as this format once fully supported is far superior than anything that is out there right now. Thank you Epic for looking into it.

Works great with Substance Painter, seems like it would help keep things organized and speed up jumping between applications.

@ When you say roughness/metallic workflow, do you mean the new Principled BSDF node? This sounds really great and it’s the first time I’ve heard of glTF. My interest is thoroughly piqued.

Well well, i’m gonna step up my Blender game then :p…

This is awesome, looking forward to animations and armatures working as well as imported static meshes.

We are very much looking forward to getting rid of FBX. What is the timeline for this to move out of the experimental phase?

Hopefully you will work with the Datasmith team to support full CAD assemblies in glTF.

@

Since glTF format specs have no support for LOD groups, would it be possible for you to add an option to import LODs from separate glTF files using specific file name convention?

You also can try to use my plugin to import gltf - glTF for UE4.
It is free and has a lot of features, visits this roadmap.

Good idea, I’ll look into that.

Anything that screws over the monopoly of the extremely rigid and limited FBX format of big brother Autodesk is fine by me.

One issue with glTF is that skin bindings only allow a maximum of four joints per vertex. This is meant to allow instant loading for glTF meshes on mobile gpus, but it’s going to be a bit of a pain for UE hero assets.

It’s exciting to see the adoption of a hopefully more open transfer format.

Is there a place to track progress on this glTF import functionality? Like on the roadmap?

Is re-import supposed work? I can’t seem to get it to.