External content – FBX creation and import

Wikis > Game engine manual > External content - FBX creation and import

This page gives an overview of the FBX import pipeline: what you can import, some guidelines for FBX content creation, and the important points of how to import it.

This page focuses on a quick overview of getting content into the level editor using the content browser’s Import FBX window for individual FBX files. This is useful to quickly get the occasional FBX file into your project, as well as for tweaking FBX settings. When running the Batch Exporter, all FBX files in the project are batched using the settings stored when tweaking assets through the FBX Import window.

For a detailed description of the FBX Import Window and its options, see the reference for that. For a continued high-level discussion of the various types of content, how they are used by the game, and specific workflows – continue reading the manual.

 

Importing FBX Assets

1. In the Content Browser, go to File>Import FBX to bring up the window. Select the asset to be imported by finding it in the browser.

ImportFBX

2. If the file you have chosen isn’t in the project’s folder structure, the importer will create a copy of the file and insert it there. You can then assign it to a category (folder) and rename the imported asset.

ImportOptions_1

 

3. Within the FBX importer you can choose how to import the asset. Review the settings and, if necessary, change them. When done, press the import button and the asset will be imported into the engine.

ImportOptions_2_Mesh

 

3.b. If you ever want to change some of these options on an asset, right click the asset in the Content Library and choose reconfigure model.

ReconfigureModel


4. Assign a shader in the Content Browser’s Asset Settings tab. Static is the default, base shader. For animated (skinned and deformed) meshes, you’ll need to apply a Skinned shader. Apply textures to the shader’s material slots, and save the asset when done.
shader
It’s now ready to be placed in the level editor as a static Environment Entity.

 

 

 

General guidelines for FBX content

  • One should always freeze transforms, delete history and unneeded objects and nodes, and set a useful pivot point before exporting. Avoid groups(folders), combine meshes and materials, make sure the geometry has UVs and proper normals. 
  • Generally, when exporting, it can be a good idea to only Export Selected.
  • Nebula’s default unit is 1 meter. However, by default (to accommodate Maya default settings, which is 1 cm) Nebula will read FBX units as cm. So one should leave Maya’s unit scale to 1 cm but work as if it was 1 m. If you’re creating physics (simulating in Maya, baking and exporting as joint animation) this requires a bit of a work-around.
  • For animations, all joints should be keyed on all frames, and animations should be baked to the skeleton (rather than the rig itself, which should be deleted before exporting). Also, all joints should be keyframed at frame 0 (1?) in the bind pose.
  • For skinned meshes, one mustn’t use more than 4 joint influences per vertex.

 

Supported FBX content – guides

 

Geometry/meshes

Importing meshes is a straight-forward process.

The workflow is as follows:

1. Model your asset in Maya or another software

2. Export as .fbx

3. Import to Nebula. The default settings should work most of the time

4. Assign a shader and textures to the shader’s material slots

 

When creating, make sure to:

  • Create your assets to scale

Before exporting as FBX, make sure to:

  • Clean them up – delete unnecessary polygons, check for backface culling, delete history, freeze transforms, place the pivot point, etc

When importing to Nebula, make sure to:

  • Import the assets to the same scale they were built

 

 

 

Skeletons and animation

Animations are more involved. When importing them, you are essentially importing three things at the same time: the skeleton, the keyframe animations, and the skin – the mesh that’s bound to the skeleton. All animation is done by joints, so even rigid animations (such as doors sliding open etc) will go through this workflow.

The workflow is as follows:

1. Create your character in Maya/elsewhere: model, skin, rig and animate it. You can animate all joint transforms: translate, rotate and scale.

2. When you’ve got your animation all done, bake the animation to your joints and delete the rig.

3. Export as .fbx

4. Import into Nebula. In the FBX Import Window, under Mesh Import options, make sure it says it’s importing as a Skeletal Mesh.

5. Under the Animation Import options, name and define the frame ranges of the animation clips on the timeline. You can also set whether the clip should cycle or be constant (clamp). For instance: a walk cycle should be set to cycle for the duration of the clip being played, while a death animation should be set to constant, so as to freeze on the last frame of animation in the clip.

animationClips

6. Import the asset. When you open the model in the Content Library, you should see two tabs in the Asset Settings: one for the character (skeleton and animation) and one for the skin (mesh and shader). In the Skin’s tab, apply a Skinned shader – otherwise you won’t see any deformations!

7. In the Character tab under Skin Information, you can select which skins to make visible (you can have multiple skins, for instance, several characters sharing the same animation sets, or a character with swappable body parts). Under Animation Information, you can add existing animation clips to the play queue and play/pause/seek through the animations with the controls below.

animation

 

When creating, make sure to:

  • Standard procedures for rigging apply, but make extra sure to always freeze transforms, delete history, etc
  • When skinning, use a maximum of 4 joint influences per vertex
  • Also, Nebula does not support more than 256 joints per character.
  • Keyframe all joints at frame 1 in your skin’s bind pose.
  • When rigging, you’ll want to make sure your rig can easily be removed from the scene so that you can bake animation from the rig directly to the joints.
  • When animating, either animate all animations in a sequence along the timeline, or use a program that can export multiple FBX Takes. (Maya can’t export FBX Takes.)
  • Even rigid animations need to be skinned to a skeletons
  • Your root joint should be placed on origo (on the ground), otherwise your character will be offset.

Before exporting as FBX, make sure to:

  • Keyframe all joints on frame 1 in the bind pose
  • Bake animation from the rig to the skeleton’s joints – then delete the rig, and all extra nodes

When importing to Nebula, make sure to:

  • Import the FBX as a Skeletal mesh
  • Create animation clips in the Animation tab of the Import window
  • Give the animation clips names you can remember: these are often referred to in scripting
  • Apply a Skinned shader to the Skin

 

 

 

Multi-part meshes

Nebula will combine all meshes in a FBX import. If you want to export multi-part meshes in Nebula (for instance, separating a character into several different body parts so that they can be switched in-game, or to be able to apply different shaders to different parts of the model) you’ll have to assign different materials to each part before exporting.

The workflow is as follows:

1. Create your meshes

2. Assign each mesh a separate shader in Maya

3. Export them all as .fbx

4. Import to Nebula – the Import options should not matter

5. You can now see the different meshes as tabs in the Asset Settings and can apply different shaders to each

multiParts

 

 

When creating, make sure to:

  • Know if you’ll need to be able to control the meshes separately in the game engine

Before exporting as FBX, make sure to:

  • Assign a separate shader for all the parts you want to have separate control of

When importing to Nebula, make sure to:

  •  If the meshes are skins to a character, you can view several skins in the Content Browser by adding them to the list of visible skins when previewing the character’s animations etc.
  • However, this won’t make them visible in the level editor or in-game. If you want to make multiple skins visible in-game at the same time, you’ll have to use scripting. See this tutorial for how to do that

 

 

 

 

LODs

LODs (level of detail) are simplified models which replace your high-detail models at distances. LODs can be created with Maya’s LOD groups and exported normally, and can then be assigned their own shaders and materials.

The workflow is as follows:

1. Create your high-resolution mesh (Lod 0) and your optimized LOD meshes

2. Group them with a Maya LOD group and set the threshold distances

lod

3. Export the group as a .fbx

4. Import it to Nebula – the default settings should do. Nebula automatically takes the threshold settings from the LOD group

5. When you zoom in and out from your model, you should see the LOD in effect. You can also see the different LOD meshes as tabs in the Asset Settings panel, so that you can apply shaders and textures to each LOD mesh individually.

 

When creating, make sure to:

  • Review if you really need LODs to optimize the game. Creating LODs can be time-expensive: make sure that they will really solve your problem before starting to create them.

Before exporting as FBX, make sure to:

  • Combine each LOD level to a single mesh. Maya can handle groups for each level within the LOD group, but that gets lost in translation.

When importing to Nebula, make sure to:

  •  Apply shaders to each LOD level – they won’t automatically use the same shader/textures.

 

Physics meshes

Nebula’s physics system is discussed more in-depth further on in the manual. Suffice to say, you can create custom meshes to be used for physics calculation and import them to Nebula. All you need to do in Maya is to create a group called “physics” and place your physics meshes in it.

The workflow is as follows:

1. Create a simplified version of your mesh and place it in a group named “physics”

physics

2. Export as a .fbx

3. Import to Nebula. In the Import window, under Physics, check “Use physics shape from file”.

 

When creating, make sure to:

  • Physics, and physics meshes, are discussed in more detail in the Physics section. Generally, you want to avoid very complicated models, models that are concave (with depressions in the surface – things will get stuck), with hard edges (such as stair cases – the steps are usually simplified to an inclined plane), or open (you want closed volumes)

Before exporting as FBX, make sure to:

  • Place the meshes in a group named “physics”
  • If you plan on using joint-animated physics – where meshes are parented to a particular joint – the mesh needs to have the same name as the joint.

When importing to Nebula, make sure to:

  • Under the Importer’s Physics tab, select to use the file’s physics shape
  • If the physics are to be animated, you’ll need to – in the Level Editor – use a Game Entity with the Animated Physics property for it to work.

 

 

Animated physics meshes

In certain cases, you’ll want to drive your physics meshes with your skeletal-based animation. Nebula handles these cases through the “Animated Physics” entity/property and requires physics meshes to have identical naming to the joint they are to be animated with.

The workflow is as follows:

1. Create a physics mesh version of your graphics mesh and place it in a group named “physics”

2. Create your joints (and skin your graphics mesh to it). Rename your physics mesh to have identical naming to the joint it is to follow

physicsCollisionMesh

3. Export as a .fbx

4. Import to Nebula. In the Import window, under Physics, check “Use physics shape from file”.

5. Add an “Animated Physics” game entity to your game and use your imported model as its graphics mesh.

6. Play the animation (by means of scripting or otherwise). Cycling through view modes with F4 should let you see your physics mesh being animated along with the graphics mesh.

 

Vertex colors

Vertex color information is used by some shaders to control certain effects. The Multilayered shader, for instance, supports three layers of tiling textures that are masked by the RGB vertex colors of the mesh. The Vegetation shader applies a wind-like deformation to the geometry, but the effect can be scaled with the Alpha vertex color.

Simply paint vertex colors on the mesh in Maya, export it as a .fbx, and import into Nebula. The importer should automatically detect the existence of vertex colors and you can then apply vertex color-dependent shaders.

The workflow is as follows:

1. Paint vertex colors in Maya for the RGBA channels

2. Export as .fbx

3. Import to Nebula. In the Mesh Import settings, make sure to check Import Vertex Colors.

 

When creating, make sure to:

  • (ShaderFX in Maya can allow previewing the layering of textures through vertex color channels. That’s not a function that exists in Maya otherwise, and it can be a bit tricky to see what you’re doing.)

Before exporting as FBX, make sure to:

  • Export the vertex color information! It can be turned off in the FBX options.

When importing to Nebula, make sure to:

  • Check the Import Vertex Colors option in the Importer
  • Select a shader that uses Vertex Colors. Vertex colors aren’t used, and have no effect, for most shaders.

 

 

 

Secondary UV sets

Certain shaders – such as the Lightmapped shader – expects a secondary UV set for the lightmap texture.

The workflow is as follows:

1. Create a second UV set in Maya for your model.

2. Export as .fbx

3. Import to Nebula. In the Mesh Import settings, make sure to check Import Secondary UVs.

 

When creating, make sure to:

Before exporting as FBX, make sure to:

When importing to Nebula, make sure to:

  • Check the Import Secondary UVs option in the Importer

 

Skip to toolbar