FaceFX Documentation and support
The .clientspec file is a special file that FaceFX loads when it starts up. In this file you can add custom locations to the various search paths FaceFX searches when attempting to find files. This file allows you to keep the files FaceFX uses in your source control system so that all of your FaceFX users can share the same scripts, analysis actors, custom analysis languages, templates, rendering resources, and themes. The root path in the .clientspec file is also how FaceFX locates your audio files.
The format of this file is very simple. It consists of comments (lines starting with the pound sign #), path assignments, and optional macros. Macros allow you to refer to a previous path by name rather than having to type out the full path each time and are referenced like so: $(name)
Detailed information about the format and how to use it are included in the default .clientspec file created for you the first time FaceFX Studio runs. This file, in its entirety, is embedded below:
# The FaceFX clientspec file allows you to set up your installation to work seamlessly with source control systems. # root should be set to the root of your source control system to easily share actors and animsets with your team # without losing the audio information. Since FaceFX Studio references audio files by relative paths, this is important # to set if you are working in a team environment. For example, we have our sample actors and sample audio in a path # like this: # # - \facefx # - \facefx\Samples # - \facefx\Samples\Audio # - \facefx\Samples\Actors # # With this setup I would want to set root to the full path to the facefx directory on my system: # C:\Users\John Smith\SourceControl\facefx # It is important to note that root can only be set to one path. If multiple paths are set FaceFX Studio will # issue a warning and only use the first path. # root = c:\Users\John Smith\SourceControl\facefx # # You can reference any value you set by using the macro format $(lowercase_name). For example: # # MY_VALUE = HELLO # my_other_value = $(my_value)\WORLD # # $(my_value) is replaced by HELLO by the parser, so the value of my_other_value is set to HELLO\WORLD # In this way you can reference any value anywhere else in the file. The only exception is that you cannot reference the macro itself. # This is ignored, for example, with the final result being my_value set to HELLO\$(my_value): # # my_value = HELLO\$(my_value) # # Overrides the templates directory found in the user's documents folder. Only one path can be set for templates. #templates = # All of the following values may contain multiple paths separated by the ; character. # Uncomment the lines and set paths to use them. # Appends paths to the Scripts search path. #scripts = # Appends paths to the Analysis Actors search path. #analysis_actors = # Appends paths to the Analysis Languages search path. #analysis_languages = # Appends paths to the Themes search path. #themes = # Appends paths to the Ogre search path #ogre =
It is important to note that when you assign paths in the .clientspec file you are adding a path to the built-in FaceFX search paths; you are not replacing the built-in search path (except for the special case templates path – the templates directory is simply the initial directory of the file open dialog box when syncing to a template). This means that when FaceFX searches for a file it will first search the built-in search path, then it will search for any additional search paths in the .clientspec file for that file type, and it will search in the order the paths are listed in the .clientspec file. When FaceFX finds the first file that matches what it is looking for the search stops, so take care not to put files with the same name in the search paths because FaceFX will use the first one it finds, which may not be the one you intended to use.
You can also create multiple .clientspec files and tell Studio which one to use with the -clientspec command line parameter. If you do not specific this parameter, facefx.clientspec is used (the default). If you use -clientspec to specify an alternate .clientspec file, the .clientspec file you specify must be in the same directory as facefx.clientspec (C:\Users<username>\Documents\FaceFX Studio XXXX – where XXXX is the current FaceFX Studio version number).
In prior versions of FaceFX you would edit the autoexec.fxl file in the FaceFX Studio install directory to automatically perform work and run scripts on startup. Starting with version 2013 this has changed. When Studio starts up, it will attempt to import a Python script named facefxcustomize.py. The facefxcustomize.py Python script is where you will do any work (such as connecting handlers to FaceFX Studio Python signals) or issue any commands to be run on startup. The facefxcustomize.py file is a file that you create and you can put it anywhere in the scripts search path.
When combined with the new .clientspec system, the new facefxcustomize.py system is significantly more powerful because you can run different scripts and perform different work on startup based on which .clientspec file Studio loaded. As an example, consider you are part of a team working on two games simultaneously: Game A and Game B. You could create game_a.clientspec and game_b.clientspec that set up the environment differently, and “boot” Studio into the appropriate environment by using the -clientspec command line option.