Everything An Asset
Unreal Engine usually sits at the end point of most creative production pipelines, and as such, we have to be able to convene all of our models, textures, animations, and everything else into one big project. Whether we're working with single Blender files or a group of individual Maya projects, we have to be able to 1. Export everything we need from the starting DCC, 2. Arrange everything into somewhat organized folders, and 3. Import everything into Unreal Engine.
Fortunately for us, Epic is multiple steps ahead of us. Since game engines have been the endpoint for all types of assets, the developers have given us a single ubiquitous file type that Unreal Engine will play nice with; the UAsset. The only tradeoff is that UAssets are *meticulously* managed by UE itself. If you happen to move, rename, or change some aspect of a UAsset file, you might end up breaking a lot more than just the file itself.
However, as far as we're concerned we don't have to worry too much about breaking things. Once something is inside of Unreal Engine, then we'll almost always be managing it through Unreal Engine. Specifically, we'll be using the Content Browser for most of our actions relating to UAssets.
The Content Browser
As we mentioned last week, the Content Browser is the first place to go when dealing with assets. Our Unreal project's folder structure is replicated 1:1 in the Content Browser, allowing us to see exactly where all of our files are as they appear on our hard drives. Even more handy is the fact that if you move certain file types into your project's folder structure, Unreal Engine will automatically detect it and ask to import it into the project.
Importing an asset isn't a complex task. You can either place a file inside the file on your hard drive, drag it into the Content Browser itself (open to the folder you'd like it to be), or use the handy Import Button at the top of the Content Browser window. All three will start the same process, first prompting you if you'd like to import the specific file, then presenting you a list of potential options depending on what file type you've chosen, and finally displaying a notification whether the import process was successful or not. If you want to import multiple files at the same time, you'll be presented with a button that will only present you one list of options to apply to every file. This will save you countless minutes if you have to check one option for a large group of files.
The list of options you see will mostly be irrelevant, however it's worth reading them to double check that all of the options look correct. You don't need to know what every option does, but there are several that will stick out. Take the FBX Import Options, for example. If you're importing a static mesh (a mesh without an armature or animated movement), then making sure that the *Skeletal Mesh* toggle is off will help sort out any sort of import errors.
As mentioned above, importing assets into Unreal Engine creates UAssets, a unique file type that only Unreal Engine can read. You can think of the UAsset as a compatibility wrapper that takes the original file and re-interprets the data within to work inside UE. There isn't too much to be concerned with here, but there are some things to keep in mind as you move forward though.
Managing UAssets
With each UAsset file Unreal Engine creates comes its relative file path. Unreal Engine keeps track of every UAsset file by noting where they're located in the project folder structure.
UAssets you’ve imported will go into Content/ImportedContent
by default, however you have the ability to create new folders and move selected items there. Be warned though, that moving UAssets isn't as simple as dragging and dropping.
Since Unreal Engine keeps track of your project's UAssets by their file paths, moving a file from one folder to another means that Unreal Engine has to change not only the folder path where the asset it stored, but also the file path that every other file in your project uses when referencing that particular asset. The same goes for deleting UAssets as well.
Speaking of moving and or deleting UAssets, doing so will prompt you with three options; Move, Copy, or Advanced Copy.
Move will do as it says, move the UAsset to the specified folder and all references to that UAsset will attempt to be rectified.
Copy will create a duplicate UAsset in the specified folder, but leave the original in its current spot.
Advanced Copy will create a copy of the UAsset in the new location, and then attempts to automatically resolve all of the references to the copy from the original.
If you're just starting a new project, you won't have to worry too much about this process, but if you're somewhat far along, it might be worth your time to see how these operations will affect the rest of the project.
To easily view your references and what UAssets rely on other UAssets, you can use the Reference Viewer. I won't cover it now as it's a little outside the scope, but you can think of it as a dependency graph that will list every item in your project that has a reference to the selected UAsset, including all of the different types of files as well.
Supported Import File Types
That brings us nicely to our final area, what file types does Unreal Engine support? The short answer is a lot, and the long answer is a lot, but really you'll probably only use a couple at most. For the sake of convenience, I'll group the different file types together by how common they are and what their purpose is.
FBX, OBJ, Alembic Files
These are the basic file types that we've covered in the past. You should be familiar with them, but if not, here's a quick summary.
OBJ files are solely made up of mesh data. They might have an attached .mdl file that contains information about shaders, but the OBJ file itself only has vertices, edges, faces, and UVs within.
A FBX file is a file type owned by Autodesk that allows you to save animation data and shader data alongside the mesh data. FBX files are the standard way of managing individual assets across most 3D industries, however they've started to show their age as newer formats are able to handle a lot more than just animation, shader, and mesh data.
Alembic files allow for saving mesh, animation, and shader data, but with the option of caching any movement as static, preset actions rather than an adjustable component. Alembics are used mostly for simulations, as the caching ability allows the complex calculations to be baked out and imported into DCCs that can't perform the same operations.
glTF & USD
glTF files are an extensible open-standard file format that focuses on creating compact files that load quickly and represent scenes completely. These files are slowly being adopted as the preferred method of cross-DCC pipelines when it comes to individual files, as the extensible nature of the file type means that individual features and capabilities can be developed and tacked on when needed. Unreal Engine (along with other DCCs) only support a limited number of extensions by default, which can be found here.
USD scenes are less individual files, and more collections of files that are easily bundled together to ensure that 3D scenes can be reproduced in any supported DCC the same way. This format was pioneered by Pixar Studios, however NVIDIA and other industry members have tentatively reached an agreement to support the format as a "neutral ground". Instead of containing individual assets, a USD scene is more like whole collections of assets as they relate to each other. The benefit of USD scenes is that individual components that might be structurally different across the various DCCs can all be interpreted by the USD scene as the same object type. Support will vary from DCC to DCC, but most of the big players support most of the USD format.
Extensible Import Options
One of the wonderful aspects of Unreal Engine is that Epic has formatted the tool to be adaptable for almost any use case. The Interchange Framework is the process that Unreal Engine uses to import everything, and is completely open to those who have a file type that isn't natively supported by the engine. If you want to (and have the technical know-how, that is), you can extend the Interchange Framework to support whatever file type you'd like.
Other Options
Finally, here are some other options that I didn't cover for one reason or another.
Outro
Working with assets inside of Unreal Engine can seem daunting, but once you have the principles, the rest of the process gets a lot easier. Hopefully you've been able to gain a clearer view of the process from this article, and if you haven't checked out last week's article on navigating Unreal Engine's interface, make sure to do so!
Thanks for reading,
- Adam