You can now specify a .facefx file to load in Studio or a .fxl or .py file to execute on the DOS command line. Or you can drag these files onto the facefx-studio.exe or double click them (not .py files) to load in Studio.
Added FxStudio.hasAnimationTextChanged() Python function that returns True if the text file associated with a given animation has changed since the animation was created.
Added FxStudio.markAnimationAudioUnchanged() Python function that marks an animation’s audio as being unchanged.
Added FxStudio.markAnimationTextUnchanged() Python function that marks an animation’s text as being unchanged.
Added FxStudio.hasAnimationBeenEdited() Python function that returns True if the specified animation has been edited from its original, post analysis state.
FxSDK can now sort the face graph nodes by name.
The FBXImporter plugin can now be called from script
Added the ability to create dictionary files that override native language pronunciations.
The actor XML file format now includes face graph node positions. When importing a version 2015+ created XML file in version 2015+, the node positions are imported. When importing an XML file created in a version prior to 2015 (containing no node position data), the graph is automatically laid out. When importing a version 2015+ XML file in prior versions the node position data is ignored and the graph is automatically laid out.
Added FxAnalysisStartupFromMemory() API to the FxAnalysis library so that it can be started up from a memory block containing the contents of the data file in addition to being started up from the path to the data file.
Added the -keepusercurves flag to the analyze command.
Enabled the render command in the no-save version.
Added the -zoomtofit (-zf) flag to the graph command to zoom to fit the face graph display.
The vertex normals for the current mesh can now be visualized using the button in the renderer controls tool bar.
The vertex bone weights for the current mesh can now be visualized using the button in the renderer controls tool bar.
Implemented support for language-specific Unicode character range filtering when using text for analysis.
The bounding box for the current mesh can now be visualized using the button in the renderer controls tool bar.
Wireframe mode has been changed to by default be “solid”. This can be changed in the renderer settings dialog box.
The skeleton for the current mesh can now be visualized using the button in the renderer controls tool bar.
Improved the automatic text encoding determination algorithm.
Added VS2013 support for core libraries.
Improved support for handling different text encodings.
Implemented plugin reloading via the plugin manager. When you unload a plugin and then load it again, a reload operation takes place where the plugin’s import modules are recursively scanned and also reloaded.
Workspace slider label drawing has changed. Now all labels are drawn with their slider and always drawing all labels can be toggled with a new button in the workspace toolbar.
Plugins can now create their own log files and subtabs in the log tab with FxStudio.createPluginLog(), FxStudio.writeToPluginLog(), and FxStudio.destroyPluginLog() Python methods.
Delta nodes are no longer addable from the FaceFX Studio graphical interface.
Workspace modes have been tweaked. Create Combiner and Visual Mapping mode now deselect any selected animation. Selecting an animation now automatically enters animate mode. In addition, the load current frame to sliders button has been removed.
Fixed a crash caused by loading huge PSD textures that led to an out-of-memory condition. Now if loading a texture would cause memory exhaustion the new safe checkered texture is used instead and a warning is issued.
Fixed crash related to using unicode characters not supported in the given analysis language (text is now filtered with language-appropriate filters)
FaceFX no longer crashes when attempting to load a bogus file (e.g. an .animset file was renamed to .facefx or vice versa).
Fixed a crash that happened when garbage audio chunk tags were used which resulted in mismatched text events being generated during analysis.
Removed duplicate keys from the slow baker. Collapsed XML and published files will have up to 5% fewer keys. This issue did not impact the FaceFX runtime compiler.
-skipifmissingtext no longer deletes animations that already existed but have had their text files removed.
FaceFX Studio no longer keeps the audio file handles open longer than it should.
Fixed memory leak in FxOgreFBX
Better handling of custom analysis language expiration dates.
Fixed removebones plugin to use connectSignal and disconnectSignal correctly with class mothods.
.SCENE files now have spotlight inner angle output correctly
Fixed error message printed from FxHelperLibrary.anim_exists() Python function if the animation does not exist. Now it only returns False, without the log spam.
Fixed bug in visibility support for FBX meshes
Unrecognized commands while executing scripts in command line mode now cause %ERRORLEVEL% to be set to -1 indicating an error has occurred.
Analysis no longer creates empty animation groups.
Fixed the FxStudio.getCurveNames() Python function so that it no longer spams the log with an error message if the animation does not exist. Now it only throws the exception. In addition, the exception thrown is now the correct one.
Fixed the missing placeholder animation error in FBXImporter
The FBX@Animations group is only created if there are full body FBX animations other than the facefx_poses anim
Removed a spurious error that was issued when creating or removing an animation group with no animation selected.
Fixed spurious preview animation errors that were periodically issued when no actual preview animation was set.
An error is no longer issued when deleting the currently selected animation group.
Changed the method by which events are deemed out-of-date and as a result this determination is now much more accurate.
Fixed a coarticulation issue where it was possible for the mouth to stay closed during a vowel if it was between two M, B, or P phonemes.
Syncing to a bogus template file now prints a reasonable error message into the log.
The bone label display setting now persists across render asset loads.
Fixed an edge case in the 2 digit numeral handling in the analysis text emoticon parser where certain 2 digit numerals were being incorrectly stripped from the text.
The FxStudio.hasAnalyzeCommand() now correctly returns False in the no-save version.
Fixed the placement of popup dialog boxes in the License Manager on systems with DPI scaling (e.g. retina displays).
Log tabs are now automatically cleared after 2500 lines to keep them fast. You can now double click inside a log view to open up your default text file viewer and inspect the current log file.