Coder Social home page Coder Social logo

facefx-ue4's Introduction

FaceFX Unreal Engine 4 Plugin

NOTE: This is the Unreal Engine 4 plugin. The Unreal Engine 5 plugin is located here.

Welcome to the FaceFX Unreal Engine 4 plugin source code!

This repository gives you all the information you need to successfully compile and install the FaceFX UE4 plugin.

The FaceFX UE4 plugin currently supports the Windows, Mac, Xbox One, PS4, Nintendo Switch, iOS, and Android platforms.

Important Information

Starting with the UE4 version 4.27.2 update, the FaceFX UE4 Plugin has been updated to the FaceFX Runtime v2.1. It is important that you use the FaceFX Runtime v2.1 (or newer) data compiler and FaceFX Studio plugin. If you are upgrading from a previous version of the FaceFX UE4 Plugin, please make sure that you fully update your tool chain to the FaceFX Runtime v2.1 (or newer) as well.

License

Complete licensing information can be found in the LICENSE.md file located in this repository. The short version is:

  • The FaceFX UE4 plugin source code is licensed under the MIT license (this is the code that interfaces with UE4; in other words, the code contained in this repository).

  • The FaceFX Runtime is licensed under the FaceFX Runtime End User License. Once the FaceFX UE4 plugin source code is compiled and linked with the FaceFX Runtime, the resulting binary falls under the FaceFX Runtime End User License.

Supported Unreal Engine 4 versions

The FaceFX UE4 plugin supports UE4 version 4.27. It will not work unmodified on earlier versions of UE4.

Documentation

The FaceFX UE4 Plugin documentation is located in the Documentation directory of this GitHub repository. Be sure to check out the Troubleshooting section if you run into any problems.

Installation

First, make sure that you have obtained a binary build of UE4; or, have obtained, and successfully built, the source code distribution of UE4. More information can be found on the Unreal Engine website.

There are two ways to obtain the FaceFX UE4 plugin. You can download a pre-built binary version and simply drop it into your UE4 install, or you can build the plugin from source. The quickest way to get up and running is simply to download and install the pre-built version.

The following steps describe how to install the FaceFX UE4 plugin:

Pre-built binaries

Note: The pre-built binaries distribution will only work with the version of UE4 that is installed from inside the Epic Games Launcher application (currently 4.27). If you are using the UE4 GitHub source code you need to follow the directions for building the plugin from source.

Windows
  1. Download the pre-built binaries distribution.

  2. Unzip the pre-built binaries distribution into your C:\Program Files\Epic Games\UE_4.27\Engine\Plugins\Runtime directory. You should now have this directory: C:\Program Files\Epic Games\UE_4.27\Engine\Plugins\Runtime\FaceFX.

  3. Run UE4 from the Epic Games Launcher.

Mac
  1. Download the pre-built binaries distribution.

  2. Unzip the pre-built binaries distribution into your /Users/Shared/Epic Games/UE_4.27/Engine/Plugins/Runtime directory. You should now have this directory: /Users/Shared/Epic Games/UE_4.27/Engine/Plugins/Runtime/FaceFX.

  3. Run UE4 from the Epic Games Launcher.

Source

First, make sure you are familiar with the process of cloning Unreal Engine from GitHub and have performed the necessary UE4 build steps for your target platform. The following instructions assume you know how to successfully build the GitHub version of Unreal Engine 4.

Windows
  1. Fork and clone this repository.

  2. In order to build the source code you need to download the FaceFX Runtime distribution.

  3. Create a directory named FaceFX in your UnrealEngine/Engine/Plugins/Runtime directory. You should now have this directory: UnrealEngine/Engine/Plugins/Runtime/FaceFX.

  4. Copy the contents of your cloned repository from step 1 into the newly created FaceFX directory.

  5. Unzip the FaceFX Runtime distribution .zip file you downloaded in step 2.

  6. Inside the extracted folder from step 5 you should find a facefx-runtime-2.1.0 directory.

  7. Copy the facefx-runtime-2.1.0 directory into your UnrealEngine/Engine/Plugins/Runtime/FaceFX/Source/FaceFXLib directory. You should now have this directory: UnrealEngine/Engine/Plugins/Runtime/FaceFX/Source/FaceFXLib/facefx-runtime-2.1.0.

  8. Run the GenerateProjectFiles.bat file located in your UnrealEngine directory.

  9. Load the UE4 solution in Visual Studio. Set your solution configuration to Development Editor and your solution platform to Win64, then right click on the UE4 target and select Build.

  10. Run UnrealEd according to Epic's instructions.

Mac
  1. Fork and clone this repository.

  2. In order to build the source code you need to download the FaceFX Runtime distribution.

  3. Create a directory named FaceFX in your UnrealEngine/Engine/Plugins/Runtime directory. You should now have this directory: UnrealEngine/Engine/Plugins/Runtime/FaceFX.

  4. Copy the contents of your cloned repository from step 1 into the newly created FaceFX directory.

  5. Unzip the FaceFX Runtime distribution .zip file you downloaded in step 2.

  6. Inside the extracted folder from step 5 you should find a facefx-runtime-2.1.0 directory.

  7. Copy the facefx-runtime-2.1.0 directory into your UnrealEngine/Engine/Plugins/Runtime/FaceFX/Source/FaceFXLib directory. You should now have this directory: UnrealEngine/Engine/Plugins/Runtime/FaceFX/Source/FaceFXLib/facefx-runtime-2.1.0.

  8. Run the GenerateProjectFiles.sh or double-click the GenerateProjectFiles.command file located in your UnrealEngine directory.

  9. Load the UE4 project in Xcode. Select the UE4Editor - Mac for My Mac target in the title bar, then select the 'Product > Build' menu item.

  10. Run UnrealEd according to Epic's instructions.

Contributing

If you would like to contribute to the development of the FaceFX UE4 plugin, we accept contributions through pull requests on GitHub. Pull requests should be based on the master branch and should be associated with a GitHub issue. We use GitHub issues to track bugs, suggestions, questions, and feature requests.

All contributions must be under the MIT license, just like the FaceFX UE4 plugin source code itself.

facefx-ue4's People

Contributors

dpakatheman avatar dwrpayne avatar jcredmond avatar oliverzx avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

facefx-ue4's Issues

Unreal Engine 4.9 build fails

Assuming this is a quick fix. Getting this error when trying to rebuild plugin for 4.9.

Error 1 error : Module rules for 'FaceFXEditor' should not be dependent on modules which are also dynamically loaded: AssetTools D:\UE4 Source\UnrealEngine-release\Engine\Intermediate\ProjectFiles\EXEC UE4

Fix "Unlink from FaceFX Actor" option for FaceFX Animation

It is not possible to cleanly delete a FaceFX Animation without also deleting its actor. You need to resort to "Replace References" or "Force Delete". The animation is referenced by the actor, and the "Unlink from FaceFX Actor" does not work.

Copying FaceFX Runtime Libraries correctly

Might be worthwhile updating the instructions to mention that after copying the FaceFX Runtime files, you should have a folder structure like this:

Engine\Plugins\Runtime\FaceFX\Source\FaceFXLib\facefx-1.0.0\bin

Win32 Development linker error

Hello,
I'm having an issue building our UE4 (4.11.2) in Win32 Development. The linker is complaining with this error:

2>EXEC : fatal error C1905: Front end and back end not compatible (must target same processor).
2>LINK : fatal error LNK1257: code generation failed

I have verified that FaceFX is what is causing the error and I've verified that the issue happens in a stock version of UE4 4.11.2. It appears that Win64 configs are not affected by this error.

Any advice?
Thanks!
Erik

Add Linux support

The FaceFX Runtime ships with Linux libraries, so it should be pretty easy to add support for building the UE4 plugin on Linux.

Add sequencer documentation

Sequencer support should be documented in its own markdown file just like Matinee, and linked to from the main documentation.

Use relative path to avoid "FaceFX Compilation Folder does not exist"

If User A creates a FaceFX asset in UE4, and User B attempts to update it by right-clicking on the asset (or right-clicking on the animation) and selecting "Reimport FaceFX Studio Assets", User B can get a message "FaceFX Compilation Folder does not exist" if User B is using a different drive than User A.

The workaround is for User B to right-click on the FaceFX asset (or animation) and select "Set new FaceFX Studio Assets", then browse to the asset on their computer and (if an animation was selected) select the appropriate animation from a dropdown.

Is it possible to store a relative path to the FaceFX compilation folder? User B could then update an animation that User A created, even if User B had his game installed to D:\ and User A had all files on E:.

UE4 works like this: When the UE4 project is on the same drive as an asset being imported, a relative path is stored to the source file for that asset. The relative path is relative to the .uasset file, and it always backs up to the root of the drive before navigating to the file.

TAssetPtr and FStringAssetReference have been renamed

From the 4.18 release notes:

New: Cross-level Actor references are now better supported, using SoftObjectPath and SoftObjectPtr (called Soft Object Reference in Blueprints). As part of this, FStringAssetReference and TAssetPtr were renamed to FSoftObjectPath and TSoftObjectPtr.

FaceFX animations on new blueprint do not play from Sequencer before PIE

Attempting to play a FaceFX animation via Sequencer on a newly setup blueprint can fail with errors in the console like:

LogFaceFX:Error: UFaceFXComponent::Stop. FaceFX character does not exist for given SkelMeshComp . Caller: None
LogFaceFX:Error: UFaceFXComponent::Pause. FaceFX character does not exist for given SkelMeshComp . Caller: None
LogFaceFX:Error: UFaceFXComponent::JumpTo. FaceFX character does not exist for given SkelMeshComp . Caller: FaceFX

Running PIE or saving and reloading the project will resolve the issue

Cooking error: "The cooking platform MacNoEditor is not supported by FaceFX"

when cooking, you will see errors in the log like:
LogFaceFX:Error: UFaceFXAsset::ClearPlatformData. The cooking platform MacNoEditor is not supported by FaceFX. Asset: SladeFaceFX

The cooked build plays the animations fine despite the error.

Like Epic's plugins, FaceFX's uplugin file has: “WhitelistPlatforms” : [ “Win64", “Win32”, “Mac” ], but adding MacNoEditor to the whitelist causes unintended behavior in IOS / HTML5 output folders.

Support absolute audio paths in .ffxamap files

Currently the plugin only supports relative paths in the audio map file. The FaceFX Runtime v1.4 will add support for gracefully falling back to absolute paths in the audio map file, so the UE4 plugin needs to be updated to accept them.

UE 4.11 Support

Hi,

Wanted to find out what the ETA might be for a 4.11 compatible FaceFX plugin. Thanks!

wWise integration requires and imports audio files

wWise users do not want sound wav objects created, so import should not fail when audio files aren’t found, and no audio should be imported when wWise is support is compiled in.

Animations will not play with sound initially, but will after the AK event is hooked up to the animation.

Morph targets named "open" do not work in cooked builds

We're not sure if this is an Unreal Engine issue or a FaceFX plugin issue, but initial indications are that it is an engine issue of some sort. The problem is that if you have a morph target named "open" it will be driven except when cooked. Changing the morph target name to "open_mouth" or something other than simply "open" works everywhere, including cooked builds.

FaceFX fails to compile with Visual Studio 2017

Unreal 4.14 added provisional support for Visual Studio 2017 and 4.15 has full support for it. When generating projects and compiling I encountered issues resolving the path to and linking against the runtime libraries. The root cause for this is in FaceFXLib.Build.cs (ln86):

string CompilerFolder = WindowsPlatform.Compiler == WindowsCompiler.VisualStudio2015 ? "vs14" : "vs12";

I modified our version to be:

string CompilerFolder = (WindowsPlatform.Compiler == WindowsCompiler.VisualStudio2015 || WindowsPlatform.Compiler == WindowsCompiler.VisualStudio2017) ? "vs14" : "vs12";

Apologies for the lack of a pull request.

Incompatible animation error dragging Sequencer event over current time

This is a tricky bug to reproduce, but I have reproduced it semi-consistently on PC, OSX, and with several different levels/characters.

The bug occurs when you drag a FaceFX sequencer event over the current time selector (by default this is at time=0). You can drag the whole event, or you can drag only the start time, either will trigger it. If you have the Output log window open when the bug occurs, as you are dragging around the sequencer event in negative time, you will see something like the following getting spammed to the log:

LogFaceFX: Warning: UFaceFXCharacter::Play. Animation is not compatible with FaceFX actor handle. Actor: SladeFaceFX. Animation: SladeFaceFX_Default_welcome
LogFaceFX: Error: UFaceFXCharacter::JumpTo. Current animation is invalid. Asset: SladeFaceFX
LogFaceFX: Warning: UFaceFXCharacter::Play. Animation is not compatible with FaceFX actor handle. Actor: SladeFaceFX. Animation: SladeFaceFX_Default_welcome
LogFaceFX: Warning: UFaceFXCharacter::Play. Animation is not compatible with FaceFX actor handle. Actor: SladeFaceFX. Animation: SladeFaceFX_Default_welcome
LogFaceFX: Warning: UFaceFXCharacter::Play. Animation is not compatible with FaceFX actor handle. Actor: SladeFaceFX. Animation: SladeFaceFX_Default_welcome

When you move the sequencer event back into positive time and away from the current time selector, you can drag it around without getting any warnings or errors.

To reproduce, I load up a level with a level sequence playing a FaceFX animation that starts at time greater than 0, and open sequencer and the Output log. Before I move the sequencer event into negative time however, I have to perform some other steps. At minimum, I've performed a Launch operation and waited for the launch to play before trying to trigger the rest of the bug. I do not know if performing the Launch operation is required to trigger the bug, (perhaps it is a garbage collection issue and Launch is simply triggering some sort of memory cleanup that could happen in other scenarios).

At this point, I'm fairly confident that I will not be able to find a 100% reproducible test case, and I believe some sort of memory issue is to blame for the randomness. I am also confident that if we fix the bug, I will be able to confirm that the bug is fixed because I can reproduce the bug sufficiently frequently that the absence of the bug after a day or two of testing will indicate it is fixed.

Wwise audio does not play from sequencer

This issue is not a problem with the FaceFX plugin itself when Wwise support is compiled in, but with Wwise versions 2017.1.1.6340, 2017.1.3.6377, and potentially others. 2016.2.6.6153 works correctly. UE4.16.3 and 4.18 behave similarly.

Setting up an AkAudioEvent sequencer track, and adding an audio play event will not result in audio being played if you hit play from sequencer. PIE works, but hitting play from sequencer is broken, even when FaceFX is not involved. FaceFX animations that trigger Wwise audio events behave in a similar way....they work from PIE, but do not result in audio being played when you hit play from sequencer.

This issue is just a placeholder and will be closed when a future Wwise integration fixes the issue.

Namespaces are stripped from bones in UE4, but not the runtime

UE4 strips Maya namespaces ("ns1:ns2:joint_name") from nodes during FBX import. (In FbxMainImport.cpp according to this thread: https://answers.unrealengine.com/questions/370703/does-unreal-have-to-strip-maya-namespaces.html)

FaceFX leaves them in, resulting in bones that don't move in UE4 with messages in the log about how FaceFX can't find the bones.

I don't think there is anything we can do on the UE4 side to fix this, but it seems that any bone name in the form *:* will not animate in UE4, so we should detect it and output a warning or error (perhaps in the Import Errors dialog?).

Unless I'm mistaken, the only fix would have to happen in the FaceFX Ogre Exporters with an additional option, or in the Runtime compiler as an additional option.

MAX_PATH issue on windows

I'm hitting the 260 character path length maximum due to some of the files in the faceFX runtime folder. While I don't think its the only offender, the files in this path are nested particularly deep:

\facefx-runtime-1.2.0\facefx\tools\compiler\src\extern\yaml-cpp\build\osx\CMakeFiles\3.7.1\CompilerIdC\CompilerIdC.build\Debug\CompilerIdC.build

once the facefx-runtime-1.2.0 is copied into my UE4 workspace (the plugin folder is already nested fairly deeply) I'm violating the limit by ~20 characters. For reference my workspace root for the UE4 engine is ~30 characters.

I don't think any of the missing offending files are causing issues for us at the moment, but it would be nice if this folder would copy cleanly. Is there any way you guys could reorganize the folder structure a bit to alleviate this issue?

Thanks!
Erik

Packaging Failure

Currently get build failures when trying to package a project with FaceFX enabled:

"MainFrameActions: Packaging (Windows (64-bit)): UnrealBuildTool: ERROR: Couldn't find module rules file for module 'FaceFX'."

Output log:

MainFrameActions: Packaging (Windows (64-bit)): Project.Build: ********** BUILD COMMAND STARTED **********
MainFrameActions: Packaging (Windows (64-bit)): InternalUtils.SafeFileExists: SafeFileExists C:\Program Files (x86)\Xoreax\IncrediBuild\xgConsole.exe=False
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: XGE was requested, but is unavailable, so we won't use it.
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: ************************* UE4Build:
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: ************************* ForceMonolithic: False
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: ************************* ForceNonUnity:False
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: ************************* ForceDebugInfo: False
MainFrameActions: Packaging (Windows (64-bit)): UE4Build.Build: ************************* UseXGE: False
MainFrameActions: Packaging (Windows (64-bit)): InternalUtils.SafeFileExists: SafeFileExists D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
MainFrameActions: Packaging (Windows (64-bit)): InternalUtils.SafeFileExists: SafeFileExists D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
MainFrameActions: Packaging (Windows (64-bit)): InternalUtils.SafeFileExists: SafeFileExists D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe=True
MainFrameActions: Packaging (Windows (64-bit)): CommandUtils.Run: Run: D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe Klepto Win64 Development -clean "D:\Unreal Projects\Klepto\Klepto.uproject" -nobuilduht -rocket -NoHotReloadFromIDE
MainFrameActions: Packaging (Windows (64-bit)): UnrealBuildTool: ERROR: Couldn't find module rules file for module 'FaceFX'.
MainFrameActions: Packaging (Windows (64-bit)): CommandUtils.Run: Run: Took 3.2881881s to run UnrealBuildTool.exe, ExitCode=5
MainFrameActions: Packaging (Windows (64-bit)): ErrorReporter.Error: ERROR: AutomationTool error: Command failed (Result:5): D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe Klepto Win64 Development -clean "D:\Unreal Projects\Klepto\Klepto.uproject" -nobuilduht -rocket -NoHotReloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
MainFrameActions: Packaging (Windows (64-bit)): BuildCommand.Execute: ERROR: BUILD FAILED
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: ERROR: AutomationTool terminated with exception:
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: ERROR: Exception in AutomationTool: Command failed (Result:5): D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe Klepto Win64 Development -clean "D:\Unreal Projects\Klepto\Klepto.uproject" -nobuilduht -rocket -NoHotR
MainFrameActions: Packaging (Windows (64-bit)): eloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
MainFrameActions: Packaging (Windows (64-bit)): Stacktrace: at AutomationTool.CommandUtils.RunAndLog(String App, String CommandLine, String Logfile, Int32 MaxSuccessCode, String Input, ERunOptions Options, Dictionary2 EnvVars) MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.CommandUtils.RunUBT(CommandEnvironment Env, String UBTExecutable, String CommandLine, String LogName, Dictionary2 EnvVars)
MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.UE4Build.CleanWithUBT(String ProjectName, String TargetName, UnrealTargetPlatform Platform, String Config, String UprojectPath, Boolean ForceMonolithic, Boolean ForceNonUnity, Boolean ForceDebugInfo, String InAddArgs, Boolean ForceUnity, Dictionary2 EnvVars) MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.UE4Build.Build(BuildAgenda Agenda, Nullable1 InDeleteBuildProducts, Boolean InUpdateVersionFiles, Boolean InForceNoXGE, Boolean InForceNonUnity, Boolean InForceUnity, Dictionary2 PlatformEnvVars) MainFrameActions: Packaging (Windows (64-bit)): at Project.Build(BuildCommand Command, ProjectParams Params, Int32 WorkingCL) MainFrameActions: Packaging (Windows (64-bit)): at BuildCookRun.DoBuildCookRun(ProjectParams Params) MainFrameActions: Packaging (Windows (64-bit)): at BuildCommand.Execute() MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.Automation.Execute(List1 CommandsToExecute, CaselessDictionary`1 Commands)
MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.Automation.Process(String[] CommandLine)
MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.Program.MainProc(Object Param)
MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.InternalUtils.RunSingleInstance(MainProc Main, Object Param)
MainFrameActions: Packaging (Windows (64-bit)): at AutomationTool.Program.Main()
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: ERROR: Command failed (Result:5): D:\Program Files\Epic Games\4.8\Engine\Binaries\DotNET\UnrealBuildTool.exe Klepto Win64 Development -clean "D:\Unreal Projects\Klepto\Klepto.uproject" -nobuilduht -rocket -NoHotReloadFromIDE. See logfile for details: 'UnrealBuildTool.txt'
MainFrameActions: Packaging (Windows (64-bit)): ProcessManager.KillAll: Trying to kill 0 spawned processes.
MainFrameActions: Packaging (Windows (64-bit)): Program.Main: AutomationTool exiting with ExitCode=5
MainFrameActions: Packaging (Windows (64-bit)): Domain_ProcessExit
MainFrameActions: Packaging (Windows (64-bit)): ProcessManager.KillAll: Trying to kill 0 spawned processes.
MainFrameActions: Packaging (Windows (64-bit)): copying UAT log files...
MainFrameActions: Packaging (Windows (64-bit)): RunUAT.bat ERROR: AutomationTool was unable to run successfully.
MainFrameActions: Packaging (Windows (64-bit)): BUILD FAILED

Error creating cooked build with ContainsNaN function

  1. Launch New Project in UE4.19
  2. Enable FaceFX plugin
  3. Click "Launch" from the Editor

Error message below indicates that the problem relates to this commit that created the ContainsNaN function.

LogPlayLevel: ********** BUILD COMMAND STARTED **********
LogPlayLevel: Completed Launch On Stage: Build Task, Time: 1.263398
LogPlayLevel: Running: C:\Program Files\Epic Games\UE_4.19\Engine\Binaries\DotNET\UnrealBuildTool.exe Slade419 Win64 Development -Project="C:\Users\Doug\Documents\Unreal Projects\Slade419\Slade419.uproject"  "C:\Users\Doug\Documents\Unreal Projects\Slade419\Slade419.uproject" -NoUBTMakefiles  -remoteini="C:\Users\Doug\Documents\Unreal Projects\Slade419" -ski
pdeploy -ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=Disabled -noxge -generatemanifest -NoHotReload
LogPlayLevel: Took 1.5426072s to run UnrealBuildTool.exe, ExitCode=0
LogPlayLevel: Running: C:\Program Files\Epic Games\UE_4.19\Engine\Binaries\DotNET\UnrealBuildTool.exe Slade419 Win64 Development -Project="C:\Users\Doug\Documents\Unreal Projects\Slade419\Slade419.uproject"  "C:\Users\Doug\Documents\Unreal Projects\Slade419\Slade419.uproject" -NoUBTMakefiles  -remoteini="C:\Users\Doug\Documents\Unreal Projects\Slade419" -ski
pdeploy -ini:Game:[/Script/UnrealEd.ProjectPackagingSettings]:BlueprintNativizationMethod=Disabled -noxge -NoHotReload -ignorejunk
LogPlayLevel:   Performing 1 actions (4 in parallel)
LogPlayLevel:   [1/1] Link Slade419.exe
**LogPlayLevel:   UE4-FaceFX.lib(Module.FaceFX.cpp.obj) : error LNK2005: "bool __cdecl ContainsNaN(class TArray<struct FBoneTransform,class FDefaultAllocator> const &)" (?ContainsNaN@@YA_NAEBV?$TArray@UFBoneTransform@@VFDefaultAllocator@@@@@Z) already defined in UE4-AnimGraphRuntime.lib(Module.AnimGraphRuntime.cpp.obj)**
LogPlayLevel:      Creating library C:\Users\Doug\Documents\Unreal Projects\Slade419\Binaries\Win64\Slade419.lib and object C:\Users\Doug\Documents\Unreal Projects\Slade419\Binaries\Win64\Slade419.exp
LogPlayLevel:   C:\Users\Doug\Documents\Unreal Projects\Slade419\Binaries\Win64\Slade419.exe : fatal error LNK1169: one or more multiply defined symbols found
LogPlayLevel:   ERROR: UBT ERROR: Failed to produce item: C:\Users\Doug\Documents\Unreal Projects\Slade419\Binaries\Win64\Slade419.exe

4.14 support

Just wanted to get an eta on a plugin build for 4.14, thx!

Morph Target animation does not play temporarily after initial setup

After the initial import of a morph-based character into UE4 and setup with the FaceFX plugin, in some cases the morph targets will not activate initially when playing from the Editor. This happens even if "Import Morph Targets" is correctly checked when importing the FBX file. Launching the level works, but PIE does not. The following steps will resolve the issue:

  1. Saving, closing, reopening the project.
  2. Reimporting the skeletal mesh.

Given that the bug does not survive the process of saving/reopening the project, it is difficult to reproduce, and it resolves itself automatically.

Reproduced with "Roger" sample content.

Crash in Sequencer with multiple Actors - 4.15

There is a crash in in Sequencer when dealing with multiple actors. It is very easy to reproduce once you have two actors in Sequencer, each with a FaceFX track, and an animation in it. You can reproduce with two instances of Slade in the scene and set them up to play the same animation from sequencer. I've seen it crash on play from the Sequencer tab, or moving the FaceFX Sequencer tracks around

Happens on Windows and OSX, but on OSX I managed to get a callstack:

FFaceFXAnimationSectionTemplate::Evaluate(FMovieSceneEvaluationOperand const&, FMovieSceneContext const&, FPersistentEvaluationData const&, FMovieSceneExecutionTokens&) const Address = 0x16d90d460 (filename not found) [in UE4Editor-FaceFX.dylib]
FMovieSceneEvaluationTrack::EvaluateStatic(int, FMovieSceneEvaluationOperand const&, FMovieSceneContext, FPersistentEvaluationData const&, FMovieSceneExecutionTokens&) const Address = 0x116f2811c (filename not found) [in UE4Editor-MovieScene.dylib]
FMovieSceneEvaluationTrack::Evaluate(int, FMovieSceneEvaluationOperand const&, FMovieSceneContext const&, FPersistentEvaluationData const&, FMovieSceneExecutionTokens&) const Address = 0x116f2624d (filename not found) [in UE4Editor-MovieScene.dylib]
FMovieSceneRootEvaluationTemplateInstance::EvaluateGroup(FMovieSceneEvaluationGroup const&, FMovieSceneContext const&, IMovieScenePlayer&, FMovieSceneExecutionTokens&, FMovieSceneSequenceID) const Address = 0x116f25c18 (filename not found) [in UE4Editor-MovieScene.dylib]
FMovieSceneRootEvaluationTemplateInstance::Evaluate(FMovieSceneContext, IMovieScenePlayer&, FMovieSceneSequenceID) Address = 0x116f24233 (filename not found) [in UE4Editor-MovieScene.dylib]
FSequencer::EvaluateInternal(FMovieSceneEvaluationRange) Address = 0x11a258776 (filename not found) [in UE4Editor-Sequencer.dylib]
FSequencer::Tick(float) Address = 0x11a257111 (filename not found) [in UE4Editor-Sequencer.dylib]
UEditorEngine::Tick(float, bool) Address = 0x1089e6d56 (filename not found) [in UE4Editor-UnrealEd.dylib]
UUnrealEdEngine::Tick(float, bool) Address = 0x10965153c (filename not found) [in UE4Editor-UnrealEd.dylib]
FEngineLoop::Tick() Address = 0x1011113f9 (filename not found) [in UE4Editor]
GuardedMain(wchar_t const*) Address = 0x101118ba2 (filename not found) [in UE4Editor]
-[UE4AppDelegate runGameThread:] Address = 0x10112653c (filename not found) [in UE4Editor]
-[FCocoaGameThread main] Address = 0x101350366 (filename not found) [in UE4Editor-Core.dylib]
Unknown() Address = 0x7fff836b2c6d (filename not found) [in Foundation]
_pthread_body Address = 0x7fff973fcaab (filename not found) [in libsystem_pthread.dylib]
_pthread_body Address = 0x7fff973fc9f7 (filename not found) [in libsystem_pthread.dylib]
thread_start Address = 0x7fff973fc1fd (filename not found) [in libsystem_pthread.dylib]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.