Engine Features Preview 11/14

We’re excited to share a few of the new features now available on the Master branch on GitHub. To be able to try out these new features, you will need to download the source code for the Master branch and build the Engine yourself. For more information about how to build the Engine from source code, please see this page. The Master branch on GitHub is constantly being updated and is not quality tested so it may be potentially unstable. We do not recommend using the Master branch for project development. If you wish to wait, these features will be made available to all in an upcoming official release.
**
Engine News**

New Features
Animation Blueprints
**Root Motion from Everything
**
Recently we have added different modes for handling root motion with Animation Blueprints.
The mode can be set via the “Root Motion Mode” drop down on the Anim Blueprint Editor.
Code can also modify this setting at run-time if dynamic behaviour is required.

1.png&stc=1

​The options are as follows:

  • No Root Motion Extraction - Root motion is left as is (applied to the root bone).
  • Ignore Root Motion - Root motion is extracted (and removed from the root bone), but not applied to the character.
  • Root Motion from Everything - New method of handling root motion (explained below).
  • Root Motion from Montages Only - This is the original root motion behaviour (and the default for all new blueprints).

Setting up root motion on assets:

2.png&stc=1

There is a new “Enable Root Motion” setting in your AnimSequence.
This replaces the older “Enable Root Motion Translation” and “Enable Root Motion Rotation” options that used to be in the AnimMontage (they will automatically be updated when loaded.)

NOTE: The original settings on AnimMontage still exist and have not yet been flagged as deprecated. This is intentional as it helps us correctly propagate them to their animation sequences.
They are no longer editable from Persona and no one should be writing code that reads/writes to them.

Root Motion from Everything:

Each animation asset (sequence, blendspace, montage etc) that contributes to the final character pose has its root motion extracted (if it has been set as containing root motion).
Each piece of extracted root motion is blended based on the weight of the source assets contribution to the pose.

3.png&stc=1

​For example: In the above graph the root motion of Jog_Loop_Fwd_RM and Jog_Loop_Right_RM would each be blended together with a weight of 0.5.
The resulting animation in this case is a character running diagonally forwards and right across a map.

NOTE: The original system (now labelled “Root Motion from Montages Only”) was designed with network games in mind, which is the reason for its more restricted functionality.
Since “Root Motion from Everything” does not have these restrictions it is not suitable for networked games out of the box and should be thought of as a single player only tool.

New Experimental Feature
New Experimental Feature: Cylindrical Projection

Enabling this feature distorts the planar projection to a cylindrical projection.
It can be useful to make a wider field of view look less deformed (first person weapons, humans).
From console:

r.Upscale.Cylinder <value> (1.0 for the full effect)
**r.ScreenPercentage.Editor 1 **(to see the effect in the editor as well)

Bottom: with the feature

4.png&stc=1

Notice how the classic planar projection (GPUs work like that) distorts the head in the top image and how former straight lines appear bent.

Composite Font Support for UMG and Slate
Recently we have been working on improving the fonts used by UMG and Slate, with a view to generally improving font localization support, and also making fonts easier to use in UMG.

To this end, Slate now supports font families and composite fonts, and the font asset type has been updated to support embedding a composite font along with its associated TTF or OTF font file data.

Font Assets

Font assets now support two caching methods; “Runtime” which is the new composite font way, or “Offline” which is the older pre-computed font atlas way.
You can easily switch between the two in the font editor, providing a simple way to convert existing font assets without having to replace them.

Creating a new font asset will now default to creating an empty composite font, and you’re also able to create a composite font asset by importing a TTF or OTF file into the Content Browser.

Font Editor

The font editor has been updated to allow you to create composite font assets.

5.png&stc=1

A composite font will always contain a default font family, and may also contain any number of sub-font families that should be used for a given range of characters.
Each font family is itself made up of any number of fonts that can be named based on their style.

At runtime we pick the most suitable font to use for each character based on the fonts available in the font family for that character range.

As you can see in the preview above, the Japanese text falls within the character ranges of the Japanese font family, and so is drawn using Source Han Sans rather than Roboto.
Fonts in a sub-font family are preferably chosen by name match, as in the case of Regular, Bold, and Light, however can also fallback to matching based on the attributes of the default font, as is the case of Bold Italic (it automatically chose the Bold Japanese font because the font contained the Bold attribute, and was the best match).

UMG

The old interface in UMG that let you specify a TTF or OTF file from disk has been removed, and replaced with an asset picker that lets you choose a composite font asset, and then pick a font from the default font family.

6.png&stc=1

6_2.png&stc=1

None of your existing file based font settings will be lost, however going forwards you must use font assets with UMG.

UMG currently only supports “Runtime” cached font assets.

**Slate
**
Any existing font code in C++ based Slate style sets will still work, however you might want to consider updating your style sets to take advantage of composite fonts.

We recommend using FStandaloneCompositeFont rather than font assets when dealing with composite fonts in C++ Slate code.

This is because font objects contained within Slate style sets are not visible to the garbage collector.
Using a font asset directly would require an external reference to be maintained yourself, using something like FGCObject.

**Canvas
**
Canvas supports both types of font asset caching, however this is to improve the localization support for some of our tools.

We do not recommend using Canvas for new game UIs, and would suggest using UMG instead.

Viewport Controls Overlay
A new button in the bottom left of the viewport will summon a “cheat sheet” that displays useful controls for navigating in 3D viewports.

7.png&stc=1

EXR Texture Importing

EXR texture importing is now available (at the moment 2D textures only, RGBA) !
The EXR file format allows storage of high dynamic range images.

Awesome update, Keep up the good work Epic :slight_smile:

[]
New Experimental Feature: Cylindrical Projection
[/]

Brilliant!

Sick!

Epic you have saved my work!

I’m loving the root motion news, its most welcomed !

how do we get r.Upscale.Cylinder to work? I can’t seem to enable it as an experimental feature in 4.6 preview or the release I just downloaded.

did the experimental cylinder projection make it to release? can’t find it in 4.6…