CLI Tool
FCS CLI tool provides a script-based interface for automating facial capture and animation processing workflows. It allows you to load sessions, modify session properties, process videos, and upload animations to Maya—all through a simple YAML script format.
Table of Contents
Installation
The CLI tool is part of the FCS (Facial Capture System) package starting from FCS 26.04. It is automatically installed when you install FCS.
Quick Start
Create a YAML script file (e.g., my_script.yaml):
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
wait_seconds_after_scene_open: 2.0 # Optional: wait 2 seconds after scene opens
fisheye: true # Optional: enable fisheye correction
pipeline: "Rich" # Optional: use Rich pipeline
denoising: "my_profile" # Optional: load denoising profile from presets
initial_scene_open: true # Optional: open scene after validation (default: true)
command_port: 42069 # Optional: Maya commandPort for all operations
rename_controllers: # Optional: modify controller name prefixes
prefix: "char_face_"
action: "prepend" # or "remove"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
audio: true
overrides:
command_port: 42070 # Optional: use different port for this step
Run the script:
FCS_CLI.exe --file my_script.yaml
Script Format
Top-Level Structure
Every script must have three required sections:
version: 1 # Required: Must be exactly 1
context: # Required: Script context
session: <string> # Required: Path to fcs_session.yaml
steps: # Required: List of steps to execute
- <step> # One or more steps
Version
Currently, only version 1 is supported. This field ensures forward compatibility as the script format evolves.
Context
The context section defines the session file to load at the start of script execution.
session(required, string): Path to the FCS session YAML file. Must point to a file named exactlyfcs_session.yaml; any other filename will fail validation.wait_seconds_after_scene_open(optional, float): Global sleep time in seconds to wait after a Maya scene is opened. This applies to all scene opening operations in the script, including when scenes are opened viareopen_maya_sceneinprocesssteps or when Maya launches with a scene. Default:0.0(no wait)fisheye(optional, bool): Enable or disable fisheye correction for video processing. If provided, overrides the UI setting. Default:truepipeline(optional, string): Processing pipeline to use for video processing. Must be one of:"Rich","Robust","RP","RP++","Robust++","Rich++". If provided, overrides the UI setting. Default:"RP++"denoising(optional, string): Path to a denoising/smoothing profile file, or a filename to load from the smoothing presets directory. If it’s a full path, it must exist. If it’s just a filename (not a full path), it will be loaded fromFCS_TMP_DIR/smoothing_presets/filename.yaml. If provided, loads the profile before processing. Default: No Smoothingcommand_port(optional, integer): Maya commandPort number to use for all Maya operations in the script. Must be an integer between 1 and 65535. If provided, recreates the connection with the specified port and uses it for all Maya preflight checks and uploads. Default: 42069.initial_scene_open(optional, bool): Iftrue(the default), automatically opens the Maya scene once after data validation and before running all steps. The scene is opened only once at the start of script execution (after the preflight check), not before each step. Iffalse, skips the initial scene opening. Default:true(scene will be opened automatically ifmaya_sceneandmaya_baseare set in the session).rename_controllers(optional, mapping): Modify controller names by prepending or removing a prefix. This is applied once after the session is loaded, before any steps execute. Useful for adapting controller names to match Maya scene naming conventions.prefix(required, string): The prefix to prepend or remove from all controller namesaction(optional, string): Operation to perform -"prepend"(default) or"remove"
playblast(optional, mapping): Override playblast settings for all process steps that export playblast. If not set, application settings are used.camera(optional, string): Maya camera name (e.g."persp").width(optional, integer): Output width in pixels.height(optional, integer): Output height in pixels.percent(optional, integer): Resolution percent (e.g. 100, must be 1–100).quality(optional, integer): Playblast quality (e.g. 100, must be 1–100).
profiles(optional, list): Rules to enable/disable ROM profiles in the loaded session before any steps run. See Profiles for full details.
Steps
Steps are executed sequentially in the order they appear. Each step must be a single-key mapping with one of these keys:
process- Process a video and optionally upload to Mayasleep- Pause script execution for a specified duration
Validation Strictness
Script validation follows a strict schema contract. The validator rejects any deviation from the defined schema:
Unknown top-level fields → error: Only
version,context, andstepsare allowed at the top level. Any other field will cause validation to fail.Unknown context fields → error: Only the documented context fields are allowed. Unknown fields in the
contextsection will cause validation to fail.Unknown step types → error: Only
processandsleepare valid step types. Any other step type will cause validation to fail.Unknown step fields → error: Each step type has a defined set of allowed fields. Any field not explicitly documented for that step type will cause validation to fail.
Extra keys in nested structures → error: Nested structures (like
uploadinprocesssteps, oroverrides) only accept their documented fields. Unknown keys will cause validation to fail.Order matters: Steps are executed sequentially in the exact order they appear in the
stepslist. The execution order is significant and cannot be changed.
Examples of validation failures:
# ❌ Invalid: Unknown top-level field
version: 1
context:
session: "path/to/session.yaml"
steps: []
unknown_field: "value" # Error: unknown top-level field
# ❌ Invalid: Unknown context field
version: 1
context:
session: "path/to/session.yaml"
unknown_context_field: "value" # Error: unknown context field
steps: []
# ❌ Invalid: Unknown step type
version: 1
context:
session: "path/to/session.yaml"
steps:
- unknown_step: {} # Error: unknown step type
# ❌ Invalid: Unknown step field
version: 1
context:
session: "path/to/session.yaml"
steps:
- process:
video: "path/to/video.mp4"
unknown_field: "value" # Error: unknown field in process step
# ❌ Invalid: Unknown nested field
version: 1
context:
session: "path/to/session.yaml"
steps:
- process:
video: "path/to/video.mp4"
upload:
animation: true
unknown_upload_field: true # Error: unknown field in upload
Profiles
The profiles context field lets you enable or disable profiles in the session before any steps run. Rules are applied sequentially — later rules override earlier ones for the profiles they match.
Each rule has three fields:
Field |
Required |
Values |
Description |
|---|---|---|---|
|
yes |
|
Which profiles to target |
|
yes |
|
What to do with matched profiles |
|
no |
|
How to combine multiple criteria |
match criteria — each item in the list is a single-key mapping:
Key |
Matches when… |
|---|---|
|
Profile’s source video filename (without extension) equals value |
|
Profile has no source video, or its stem differs from value |
|
Profile has this user tag |
|
Profile does NOT have this user tag |
select values:
"all"— enable all matched profiles"none"— disable all matched profilesinteger N — randomly enable N of the matched profiles (error if fewer than N matched)
Examples:
profiles:
# Disable everything first
- match: all
select: none
# Then enable exactly 10 profiles whose source video is "ROM_walk"
- match:
- video: "ROM_walk"
select: 10
# Enable all profiles tagged "hero" OR tagged "featured"
- match:
- user_tag: "hero"
- user_tag: "featured"
condition: OR
select: all
# Enable profiles tagged "validated" AND whose video is NOT "ROM_bad"
- match:
- user_tag: "validated"
- not_video: "ROM_bad"
condition: AND # default, can be omitted
select: all
Note:
matchmust be a YAML list (using-items). A plain mapping is rejected to prevent YAML’s silent duplicate-key merging (e.g. twovideo:keys would collapse into one).
Execution Model
Understanding how scripts execute helps you write effective automation workflows. The FCS CLI follows a predictable execution model:
Execution Lifecycle
Script Initialization: The script is loaded and validated against the schema. Any schema error exits immediately with code 1 before any session or Maya operations occur.
License Check: License is checked out/validated. Failure exits with code 3.
Session Loading: The session file specified in
context.sessionis loaded once. The session remains in memory throughout execution.Controller Renaming: If
rename_controllersis specified, controller name prefixes are prepended or removed once before any steps run.Profile Selection: If
profilesis specified, the rules are applied sequentially to set each ROM profile’s enabled state.Affogato Initialization: A connection to Maya’s commandPort is established.
Maya Preflight: Maya reachability is verified. Failure exits with code 2 — no steps execute.
Initial Scene Opening: If
initial_scene_openistrue(the default) and the session hasmaya_sceneandmaya_baseconfigured, the Maya scene is opened once before any steps run. Failures are non-fatal (logged as warnings). The script waits forwait_seconds_after_scene_openseconds after opening.Step Execution: Steps execute sequentially in the order they appear. The license is re-checked before each step after the first. There is no rollback, branching, or parallelism.
Context and Overrides
Context Fields: All fields defined in the
contextsection apply globally to all steps unless explicitly overridden. This includes settings likefisheye,pipeline,denoising,command_port, andplayblast.Step Overrides: The
overridessection in aprocessstep applies only for the duration of that specific step. After the step completes, the global context values are restored. This allows you to temporarily change settings (likecommand_port,maya_scene, ormaya_base) for individual processing operations.
Execution Guarantees
Sequential Execution: Steps always execute one at a time, in order
No Rollback: If a step fails, execution stops; previous steps are not undone
No Branching: Conditional logic or loops are not supported
No Parallelism: Multiple steps cannot run simultaneously
Session Persistence: The session remains in memory throughout execution; changes are not persisted to disk
Commands
Run Script
Execute a YAML script:
FCS_CLI.exe --file <script_path>
Options:
--file,-f: Path to the YAML script file (required)--dry-run: Validate the script without executing it
Examples:
# Run a script
FCS_CLI.exe --file my_script.yaml
# Validate without executing
FCS_CLI.exe --file my_script.yaml --dry-run
Step Types
process Step
Processes a single video file and optionally uploads results to Maya.
Format:
- process:
video: <string> # Required
upload: # Optional
animation: <bool> # Default: false
audio: <bool> # Default: false
frames: <bool> # Default: false
lm_frames: <bool> # Default: false
export: # Optional
scene: <bool> # Default: false
playblast: <bool> # Default: false
force_reprocess: <bool> # Optional, default: true
time_offset_frames: <int> # Optional, default: 0
reopen_maya_scene: <bool> # Optional, default: auto (see below)
overrides: # Optional
command_port: <int> # Optional, override commandPort for this step
maya_scene: <string> # Optional, override maya_scene for this step
maya_base: <string> # Optional, override maya_base for this step
out_scene_path: <string> # Optional, path to save Maya scene file (.ma or .mb)
out_playblast_path: <string> # Optional, path to save playblast video
Fields:
video(required, string): Path to the video file to processupload(optional, mapping): Upload options to Mayaanimation(bool): Upload animation curvesaudio(bool): Upload audio trackframes(bool): Upload video frames as image sequencelm_frames(bool): Upload landmark-annotated frames. Not supported with++pipelines (RP++,Rich++,Robust++); raisesLM_FRAMES_UNSUPPORTED_PIPELINEif used with one.
export(optional, mapping): Export options after processingscene(bool): Export Maya scene fileplayblast(bool): Export playblast video
force_reprocess(optional, bool): Force reprocessing even if cache exists. Default:truetime_offset_frames(optional, integer): Frame offset for animation upload. Default:0, must be >= 0.reopen_maya_scene(optional, bool): Controls whether the Maya scene is reopened before processing:true— always reopen, regardless of overrides or upload flagsfalse— never reopen (explicit opt-out)omitted — auto: reopen only when any override (
command_port,maya_scene, ormaya_base) is present AND at least oneupload.*flag istruePositive values: Animation starts at the
time_offset_framesth frame on MayaZero: No offset
overrides(optional, mapping): Override values for this specific process stepcommand_port(optional, integer): Maya commandPort number to use for this step. Must be an integer between 1 and 65535. If provided, recreates the connection with the specified port for this step only, overriding the port fromcontext.command_portor application settings. A preflight check is performed after to ensure Maya is reachable.maya_scene(optional, string): Path to Maya scene file to use for this step. Overrides the session’smaya_scenewhenreopen_maya_sceneistrue.maya_base(optional, string): Path to Maya workspace base directory to use for this step. Overrides the session’smaya_basewhenreopen_maya_sceneistrue.out_scene_path(optional, string): Path to save Maya scene file (must have.maor.mbextension). If not provided whenexport.sceneistrue, a warning is logged and the scene is not saved.out_playblast_path(optional, string): Path to save playblast video, without a file extension (.mp4is appended automatically). If not provided whenexport.playblastistrue, a default path is derived from the session’s output folder and app settings.
Note: The process step always recreates the Affogato connection with the effective port (override or context) and performs a preflight check before processing. When
reopen_maya_sceneis omitted and overrides are present, the scene is reopened automatically (seereopen_maya_sceneabove).
Internal Maya Workflow
When any upload.* option is enabled in a process step, the CLI performs the following operations in Maya via commandPort, in strict sequence:
Scene timing setup
Set the Maya scene FPS to match the input video.
Set the scene playback range to match the total frame count of the video.
Audio setup (if
upload.audio = true)
Import the audio track from the input video.
Attach the audio to the Maya timeline.
Reference frame setup (if
upload.frames = trueorupload.lm_frames = true)
Extract video frames as an image sequence.
Create or update an imagePlane using: raw frames if upload.frames = true landmark-annotated frames if upload.lm_frames = true
Animation reset
Remove all existing animation keyframes for every controller defined in the session.
This guarantees deterministic uploads and prevents keyframe accumulation across runs.
Animation upload
Apply newly computed animation curves to all session controllers.
If time_offset_frames > 0, all keyframes are shifted forward by the specified number of frames prior to insertion.
Output saving
Save the playblast video (if export.playblast = true).
Save the Maya scene file (if export.scene = true).
Notes
All operations are executed atomically per process step; partial uploads are not supported.
If reopen_maya_scene = true, the Maya scene is reopened before this workflow begins.
Controller matching is name-based. Controllers that cannot be resolved will silently receive no animation; no rollback is performed.
This workflow is executed only when at least one upload.* option is enabled. Processing without uploads does not modify the Maya scene.
Example:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
audio: true
export:
scene: true
playblast: true
force_reprocess: true
reopen_maya_scene: true
time_offset_frames: 100
overrides:
command_port: 42070
maya_scene: "D:/maya_scenes/alternate_scene.mb"
maya_base: "D:/maya_workspace"
out_scene_path: "D:/output/take_01.ma"
out_playblast_path: "D:/output/take_01_playblast"
sleep Step
Pauses script execution for a specified duration. Useful for waiting between operations or allowing external processes to complete.
Format:
- sleep:
seconds: <float> # Required: number of seconds to sleep
Fields:
seconds(required, float): Number of seconds to pause execution. Must be a non-negative number.
Example:
- sleep:
seconds: 5.0 # Wait 5 seconds
- sleep:
seconds: 2.5 # Wait 2.5 seconds
Examples
Example 1: Basic Processing
Process a video and upload animation to Maya:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
Example 2: Multiple Videos with Scene Changes
Process multiple videos, changing Maya scene between them. Because maya_scene is overridden and upload.animation is true, the scene is reopened automatically:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
audio: true
overrides:
maya_scene: "D:/maya_scenes/scene_01.mb"
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_01_t00.mp4"
upload:
animation: true
overrides:
maya_scene: "D:/maya_scenes/scene_02.mb"
Example 3: Animation with Time Offset
Upload animations with different time offsets:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
time_offset_frames: 100 # Starts at frame 100 in Maya
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_01_t00.mp4"
upload:
animation: true
time_offset_frames: 200 # Starts at frame 200 in Maya
Example 4: Controller Prefix Management
Add controller prefix in context before processing:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
rename_controllers:
prefix: "char_face_"
action: "prepend"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
Example 5: Full Processing Pipeline
Complete workflow with all features. Note: lm_frames requires a non-++ pipeline (e.g. Rich, Robust, RP), so the context sets pipeline: "Rich":
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
wait_seconds_after_scene_open: 2.0
initial_scene_open: true
command_port: 42069
pipeline: "Rich"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
audio: true
frames: true
lm_frames: true
export:
scene: true
playblast: true
force_reprocess: true
time_offset_frames: 0
# reopen_maya_scene omitted — auto-reopens because overrides are present and upload is requested
overrides:
command_port: 42070
maya_scene: "D:/maya_scenes/alternate_scene.mb"
maya_base: "D:/maya_workspace"
out_scene_path: "D:/output/take_01_processed.ma"
out_playblast_path: "D:/output/take_01_playblast"
Example 6: Skip Initial Scene Opening
Disable the automatic scene open at startup, then explicitly reopen per-step:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
initial_scene_open: false # Skip initial scene opening after validation
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
reopen_maya_scene: true # Explicitly reopen before this step
Example 7: Profile Selection
Disable all profiles then randomly enable 10 from a specific video:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
profiles:
- match: all
select: none
- match:
- video: "ROM_walk"
select: 10
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
Logging
When a script is executed (not in --dry-run mode), the CLI automatically creates a log file next to the script at <script_name>.log. For example, running my_script.yaml produces my_script.log in the same directory.
Log level: INFO and above (INFO, WARNING, ERROR)
Encoding: UTF-8
Lifecycle: The log file is created when execution begins and the log sink is removed when execution completes (regardless of success or failure). If the log file already exists, it is overwritten.
This log file captures the same structured messages shown in the console output, providing a persistent record of script execution for debugging and auditing.
Error Handling
Error Codes
The CLI uses structured error codes for programmatic error handling:
Code |
Description |
|---|---|
|
Session file does not exist |
|
Session file is invalid or corrupted |
|
Error loading session (generic load failure) |
|
Attempted operation without loading a session |
|
Missing prefix in |
|
Invalid prefix value in |
|
Invalid action in |
|
|
|
Video file does not exist |
|
Maya commandPort is not reachable |
|
Maya scene path not set in session or overrides |
|
Maya scene file does not exist |
|
Failed to open Maya scene (raised when |
|
Maya base path not set in session |
|
Maya base folder does not exist |
|
Video processing pipeline failed (train/predict failure) |
|
Animation cache file not found after processing |
|
|
|
Denoising profile file not found at specified path |
|
Failed to load denoising profile file |
|
Failed to create required output directory |
|
Expected output file(s) were not created after processing |
|
|
Execution Behavior
Validation Errors: Script validation fails before any steps are executed (exit code 1)
Maya Errors: Maya-related failures (not reachable, scene open failure, etc.) exit with code 2
Execution Errors: Script stops at the first failed step (exit code 3)
Exit Codes
0: Success1: Validation error (script schema validation, missing fields, invalid values)2: Maya related error (Maya not reachable, scene open failure, Maya configuration issues)3: Execution failure (license check failed, session load error, pipeline error, step execution failure)
Maya Integration
Prerequisites
Maya must be running with commandPort enabled
CommandPort must be open (typically port 42069, or as specified in the script’s
context.command_port)
Maya Preflight and Scene Opening
Before executing any steps, the CLI performs a preflight check:
Tests Maya commandPort connectivity
If Maya is not reachable:
Logs error:
MAYA_NOT_REACHABLEExits with code 2
No steps are executed
If Maya is reachable and
initial_scene_openistrue(the default):Automatically opens the Maya scene specified in the session (
maya_sceneandmaya_base)Waits for
wait_seconds_after_scene_openseconds if configuredThis ensures the scene is ready before processing begins
Upload Options
When processing videos, you can upload:
Animation: Facial animation curves (blendshapes, controllers)
Audio: Audio track from video
Frames: Video frames as image sequence for reference
LM Frames: Landmark-annotated frames for visualization
Scene Management
reopen_maya_scene: Controls when the Maya scene is reopened before a process step.true= always,false= never, omitted = auto (when any override is present and at least one upload flag is true). When reopening, override values formaya_scene/maya_basetake precedence over session values.overrides.out_scene_path: Saves the Maya scene to a specific path after processingoverrides.out_playblast_path: Saves a playblast video to a specific path after processingScene paths are resolved from the session’s
maya_baseandmaya_scenepropertiesProcess Step Preflight: Before each process step, a connection is recreated with the effective port (from override or context), and a preflight check is performed to ensure Maya is reachable
Time Offset
The time_offset_frames parameter allows you to control where animation starts on the Maya timeline:
Positive offset: Animation starts later (e.g.,
100starts at frame 100)Zero: Animation starts at the default position (typically frame 0)
Note: Only non-negative values (>= 0) are allowed
This is useful for:
Combining multiple takes in a single timeline
Aligning animation with existing keyframes
Creating animation sequences with gaps
Troubleshooting
Script Validation Fails
Problem: Script fails validation with error about structure or types.
Solutions:
Ensure
version: 1is present and exactly1Check that
context.sessionis a non-empty stringVerify
stepsis a non-empty listEnsure each step has exactly one key (
processorsleep)Check field types match the schema (strings, booleans, integers)
Maya Not Reachable
Problem: Script exits with MAYA_NOT_REACHABLE error.
Solutions:
Ensure Maya is running
Verify commandPort is open: In Maya, run
cmds.commandPort(n=':42069', stp='python')(or use the port specified incontext.command_portif provided)Verify firewall/network settings allow localhost connections
If using a custom
command_portin context, ensure Maya’s commandPort matches the specified port number
Video Processing Fails
Problem: PIPELINE_ERROR during video processing.
Solutions:
Verify video file exists and is readable
Check session has valid solver configuration
Ensure sufficient disk space for cache
Review logs for detailed error messages
Animation Not Uploading
Problem: Animation upload appears to succeed but nothing appears in Maya.
Solutions:
Verify Maya scene has the correct character rig loaded
Check controller names match between session and Maya scene
Ensure animation layer exists in Maya (default: “BaseAnimation”)
Review Maya script editor for Python errors
Best Practices
Always validate first: Use
--dry-runto validate scripts before executionUse explicit paths: Prefer absolute paths for reliability
Test incrementally: Start with simple scripts, add complexity gradually
Check Maya connection: Ensure Maya is running before processing with upload
Use time offsets carefully: Verify frame ranges to avoid overlaps
Version control scripts: Keep scripts in version control for repeatability
Advanced Usage
Batch Processing
Process multiple videos in sequence:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
time_offset_frames: 0
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_01_t00.mp4"
upload:
animation: true
time_offset_frames: 1000
- process:
video: "D:/shots/take_03.mp4"
upload:
animation: true
time_offset_frames: 2000
Controller Prefix Management
Add controller prefix in context before processing:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
rename_controllers:
prefix: "char_face_"
action: "prepend"
steps:
- process:
video: "D:/Expo/Celllook/Facial/RecData/000_00_t00.mp4"
upload:
animation: true
Conditional Scene Switching
Change Maya scene per step. Scene is reopened automatically because maya_scene is overridden and upload is requested:
version: 1
context:
session: "D:/Expo/Celllook2/FCS/Mao/Nike2/fcs_session.yaml"
steps:
- process:
video: "D:/shots/closeup_01.mp4"
upload:
animation: true
overrides:
maya_scene: "D:/maya_scenes/closeup_scene.mb"
- process:
video: "D:/shots/wide_01.mp4"
upload:
animation: true
overrides:
maya_scene: "D:/maya_scenes/wide_scene.mb"
Support
For issues, questions, or feature requests, please refer to the main FCS documentation or contact the development team.