CLI ツール
FCS CLI ツールは、フェイシャルキャプチャとアニメーション処理のワークフローを自動化するためのスクリプトベースのインターフェースを提供します。YAML スクリプト形式で、セッションの読み込み、セッション設定の変更、動画の処理、Maya へのアニメーションのアップロードを実行できます。
目次
インストール
CLI ツールは FCS(Facial Capture System)パッケージに含まれています。FCS 環境のセットアップと依存関係のインストールが完了していることを確認してください。
クイックスタート
YAML スクリプトファイル(例: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
スクリプトを実行します:
FCS_CLI.exe --file my_script.yaml
スクリプト形式
トップレベル構造
すべてのスクリプトには、次の3つの必須セクションが必要です:
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
バージョン
現在サポートされているのはバージョン 1 のみです。このフィールドは、スクリプト形式の進化に伴う前方互換性を確保します。
コンテキスト
context セクションでは、スクリプト実行開始時に読み込むセッションファイルを定義します。
session(必須、文字列):FCS セッション YAML ファイルへのパス。ファイル名はfcs_session.yamlでなければならず、他のファイル名では検証が失敗します。wait_seconds_after_scene_open(任意、float):Maya シーンを開いた後に待機するグローバルな秒数。スクリプト内のすべてのシーンオープン操作(processステップのreopen_maya_sceneや Maya 起動時のシーンを含む)に適用されます。デフォルト:0.0(待機なし)fisheye(任意、bool):動画処理の魚眼補正の有効/無効。指定した場合は UI 設定を上書き。デフォルト:true。pipeline(任意、文字列):動画処理に使用するパイプライン。次のいずれか:"Rich"、"Robust"、"RP"、"RP++"、"Robust++"、"Rich++"。指定した場合は UI 設定を上書き。デフォルト:"RP++"。denoising(任意、文字列):ノイズ除去/スムージングプロファイルファイルへのパス、またはスムージングプリセットディレクトリから読み込むファイル名。フルパスの場合は存在する必要があります。ファイル名のみ(フルパスでない)の場合はFCS_TMP_DIR/smoothing_presets/filename.yamlから読み込まれます。指定した場合は処理前にプロファイルを読み込み。デフォルト:スムージングなし。command_port(任意、整数):スクリプト内の全 Maya 操作で使用する Maya commandPort 番号。1 ~ 65535 の整数である必要があります。指定した場合は指定ポートで接続を再作成し、すべての Maya プリフライトチェックとアップロードに使用します。デフォルト:42069。initial_scene_open(任意、bool):true(デフォルト)の場合、データ検証後、全ステップ実行前に Maya シーンを1回自動的に開きます。シーンはスクリプト実行開始時(プリフライトチェック後)に1回だけ開かれ、各ステップの前には開かれません。falseの場合は初期シーンオープンをスキップします。デフォルト:true(セッションにmaya_sceneとmaya_baseが設定されている場合に自動でシーンを開く)rename_controllers(任意、マッピング):プレフィックスを付加または削除してコントローラ名を変更。セッション読み込み後、いずれのステップが実行される前に1回適用されます。Maya シーンの命名規則に合わせてコントローラ名を調整する際に便利です。prefix(必須、文字列):すべてのコントローラ名に付加または削除するプレフィックスaction(任意、文字列):実行する操作 —"prepend"(デフォルト)または"remove"
playblast(任意、マッピング):プレイブラストをエクスポートする process ステップで、プレイブラスト設定をアプリ設定の上書きとして適用します。指定しない場合はアプリ設定を使用します。camera(任意、文字列):Maya カメラ名(例:"persp")。width(任意、整数):出力幅(ピクセル)。height(任意、整数):出力高さ(ピクセル)。percent(任意、整数):解像度パーセント(例:100、1~100)。quality(任意、整数):プレイブラスト品質(例:100、1~100)。
profiles(任意、リスト):ステップ実行前に、読み込んだセッションの ROM プロファイルの有効/無効を設定するルール。詳細はプロファイルを参照。
ステップ
ステップは記述順に順次実行されます。各ステップは次のいずれかのキーを持つ単一キーのマッピングである必要があります:
process— 動画を処理し、必要に応じて Maya にアップロードsleep— 指定時間だけスクリプト実行を一時停止
検証の厳格さ
スクリプト検証は厳格なスキーマ契約に従います。定義されたスキーマからの逸脱はすべて検証で拒否されます:
未知のトップレベルフィールド → エラー:トップレベルで許可されるのは
version、context、stepsのみ。他のフィールドがあると検証が失敗します。未知の context フィールド → エラー:文書化された context フィールドのみが許可されます。
contextセクションの未知のフィールドがあると検証が失敗します。未知のステップタイプ → エラー:有効なステップタイプは
processとsleepのみ。他のステップタイプがあると検証が失敗します。未知のステップフィールド → エラー:各ステップタイプには許可されるフィールドの定義セットがあります。そのステップタイプで文書化されていないフィールドがあると検証が失敗します。
ネスト構造の余分なキー → エラー:ネスト構造(
processステップのuploadやoverridesなど)は文書化されたフィールドのみを受け付けます。未知のキーがあると検証が失敗します。順序が重要:ステップは
stepsリストに出現する正確な順序で順次実行されます。実行順序は意味を持ち、変更できません。
検証失敗の例:
# ❌ 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 コンテキストフィールドを使用すると、ステップ実行前にセッション内の プロファイルの有効/無効を設定できます。ルールは順次適用され、後のルールがマッチしたプロファイルについて先のルールを上書きします。
各ルールには3つのフィールドがあります:
フィールド |
必須 |
値 |
説明 |
|---|---|---|---|
|
はい |
|
対象とするプロファイル |
|
はい |
|
マッチしたプロファイルに対する操作 |
|
いいえ |
|
複数クライテリアの結合方法 |
match クライテリア — リスト内の各項目は単一キーのマッピングです:
キー |
マッチ条件 |
|---|---|
|
プロファイルのソース動画ファイル名(拡張子なし)が値と一致 |
|
プロファイルにソース動画がない、またはステムが値と異なる |
|
プロファイルにこのユーザータグがある |
|
プロファイルにこのユーザータグがない |
select の値:
"all"— マッチしたすべてのプロファイルを有効化"none"— マッチしたすべてのプロファイルを無効化整数 N — マッチしたプロファイルからランダムに N 個を有効化(N 未満のマッチではエラー)
例:
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
注意:
matchは YAML リスト(-項目)である必要があります。プレーンなマッピングは YAML のサイレントな重複キーマージを防ぐため拒否されます(例:2つのvideo:キーは1つに統合されてしまう)。
実行モデル
スクリプトの実行の仕組みを理解すると、効果的な自動化ワークフローを記述できます。FCS CLI は予測可能な実行モデルに従います。
実行ライフサイクル
スクリプト初期化:スクリプトを読み込み、スキーマに対して検証します。スキーマエラーがあればコード 1 で即座に終了し、セッションや Maya の操作は一切行われません。
ライセンスチェック:ライセンスのチェックアウト/検証を行います。失敗するとコード 3 で終了します。
セッション読み込み:
context.sessionで指定されたセッションファイルが1回読み込まれます。セッションは実行中メモリに保持されます。コントローラリネーム:
rename_controllersが指定されている場合、ステップ実行前にコントローラ名のプレフィックスの付加または削除が1回適用されます。プロファイル選択:
profilesが指定されている場合、ルールが順次適用され、各 ROM プロファイルの有効状態が設定されます。Affogato 初期化:Maya の commandPort への接続を確立します。
Maya プリフライト:Maya の到達可能性を検証します。失敗するとコード 2 で終了し、ステップは実行されません。
初期シーンオープン:
initial_scene_openがtrue(デフォルト)で、セッションにmaya_sceneとmaya_baseが設定されている場合、ステップ実行前に Maya シーンが1回開かれます。失敗は非致命的(警告としてログ)です。wait_seconds_after_scene_open秒待機します。ステップ実行:ステップは出現順に順次実行されます。最初のステップ以降、各ステップの前にライセンスが再チェックされます。ロールバック、分岐、並列実行はありません。
コンテキストとオーバーライド
コンテキストフィールド:
contextセクションで定義されたすべてのフィールドは、明示的にオーバーライドされない限り、すべてのステップにグローバルに適用されます。これにはfisheye、pipeline、denoising、command_port、playblastなどの設定が含まれます。ステップオーバーライド:
processステップのoverridesセクションは、その特定のステップの期間中のみ適用されます。ステップ完了後、グローバルコンテキストの値が復元されます。個々の処理操作で設定(command_port、maya_scene、maya_baseなど)を一時的に変更できます。
実行の保証
順次実行:ステップは常に1つずつ、順序どおりに実行されます
ロールバックなし:ステップが失敗した場合、実行は停止し、前のステップは元に戻されません
分岐なし:条件分岐やループはサポートされません
並列実行なし:複数のステップを同時に実行することはできません
セッション永続化:セッションは実行中メモリに保持され、ディスクには保存されません
コマンド
スクリプト実行
YAML スクリプトを実行します:
FCS_CLI.exe --file <script_path>
オプション:
--file、-f:YAML スクリプトファイルへのパス(必須)--dry-run:実行せずにスクリプトを検証する
例:
# Run a script
FCS_CLI.exe --file my_script.yaml
# Validate without executing
FCS_CLI.exe --file my_script.yaml --dry-run
ステップタイプ
process ステップ
単一の動画ファイルを処理し、必要に応じて結果を Maya にアップロードします。
形式:
- 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
フィールド:
video(必須、文字列):処理する動画ファイルへのパスupload(任意、マッピング):Maya へのアップロードオプションanimation(bool):アニメーションカーブをアップロードaudio(bool):動画からオーディオトラックをアップロードframes(bool):動画フレームを画像シーケンスとしてアップロードlm_frames(bool):ランドマーク付きフレームをアップロード。++パイプライン(RP++、Rich++、Robust++)では使用不可。使用するとLM_FRAMES_UNSUPPORTED_PIPELINEエラーが発生します。
export(任意、マッピング):処理後のエクスポートオプションscene(bool):Maya シーンファイルをエクスポートplayblast(bool):プレイブラスト動画をエクスポート
force_reprocess(任意、bool):キャッシュがあっても強制的に再処理。デフォルト:truetime_offset_frames(任意、整数):アニメーションアップロードのフレームオフセット。デフォルト:0、0 以上である必要あり。reopen_maya_scene(任意、bool):処理前に Maya シーンを再オープンするかを制御:true— オーバーライドやアップロードフラグに関係なく、常に再オープンfalse— 再オープンしない(明示的なオプトアウト)省略 — 自動:いずれかのオーバーライド(
command_port、maya_scene、maya_base)が存在し、かつ少なくとも1つのupload.*フラグがtrueの場合にのみ再オープン正の値:Maya タイムラインの
time_offset_framesフレーム目にアニメーションが開始するゼロ:オフセットなし
overrides(任意、マッピング):この process ステップ専用のオーバーライド値command_port(任意、整数):このステップで使用する Maya commandPort 番号。1 ~ 65535 の整数。指定した場合、このステップのみ指定ポートで接続を再作成し、context.command_portまたはアプリケーション設定のポートを上書きします。再作成後にプリフライトチェックを実行し、Maya に到達可能か確認します。maya_scene(任意、文字列):このステップで使用する Maya シーンファイルへのパス。reopen_maya_sceneがtrueのときにセッションのmaya_sceneを上書きします。maya_base(任意、文字列):このステップで使用する Maya ワークスペースベースディレクトリへのパス。reopen_maya_sceneがtrueのときにセッションのmaya_baseを上書きします。out_scene_path(任意、文字列):処理後に Maya シーンファイルを保存するパス(.maまたは.mb拡張子が必要)。export.sceneがtrueの場合に指定しないと、警告がログされシーンは保存されません。out_playblast_path(任意、文字列):プレイブラスト動画を保存するパス。ファイル拡張子なしで指定する必要があります(.mp4が自動的に付加されます)。export.playblastがtrueの場合に指定しないと、セッションの出力フォルダとアプリ設定からデフォルトパスが生成されます。
重要:process ステップでは常に適切なポート(オーバーライドまたはコンテキストから)で Affogato 接続を再作成し、処理前にプリフライトチェックを実行します。
reopen_maya_sceneが省略されオーバーライドが存在する場合、上記の自動ルールに従いシーンが再オープンされます(reopen_maya_scene参照)。
Maya 内部ワークフロー process ステップでいずれかの upload.* オプションが有効な場合、CLI は commandPort 経由で Maya 内で以下の操作を厳密な順序で実行します。
シーンタイミングの設定
Maya シーンの FPS を入力動画に合わせて設定する。
シーンの再生範囲を動画の総フレーム数に合わせて設定する。
オーディオの設定(
upload.audio = trueの場合)
入力動画からオーディオトラックをインポートする。
オーディオを Maya タイムラインにアタッチする。
参照フレームの設定(
upload.frames = trueまたはupload.lm_frames = trueの場合)
動画フレームを画像シーケンスとして抽出する。
以下を使用して imagePlane を作成または更新する:
upload.frames = trueの場合は生フレーム
upload.lm_frames = trueの場合はランドマーク付きフレームアニメーションのリセット
セッションで定義されたすべてのコントローラの既存アニメーションキーフレームを削除する。
これによりアップロードが決定的になり、複数回の実行でキーフレームが蓄積しないようにする。
アニメーションのアップロード
新しく計算されたアニメーションカーブをすべてのセッションコントローラに適用する。
time_offset_frames > 0の場合、挿入前にすべてのキーフレームが指定フレーム数だけ前方にシフトされる。出力の保存
プレイブラスト動画を保存する(export.playblast = true の場合)。
Maya シーンファイルを保存する(export.scene = true の場合)。
注意
すべての操作は process ステップごとにアトミックに実行され、部分的なアップロードはサポートされません。
reopen_maya_scene = true の場合、このワークフロー開始前に Maya シーンが再オープンされます。
コントローラのマッチングは名前ベースです。解決できないコントローラにはアニメーションは適用されず、ロールバックは行われません。
- 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"
少なくとも 1 つの upload.* オプションが有効な場合にのみこのワークフローが実行されます。アップロードなしの処理では Maya シーンは変更されません。
sleep ステップ
形式:
- sleep:
seconds: <float> # Required: number of seconds to sleep
フィールド:
seconds(必須、float):実行を一時停止する秒数。0 以上の数である必要があります。
コントローラのマッチングは名前ベースです。解決できないコントローラにはアニメーションは適用されず、ロールバックは行われません。
- sleep:
seconds: 5.0 # Wait 5 seconds
- sleep:
seconds: 2.5 # Wait 2.5 seconds
例
例 1:基本的な処理
動画を処理して 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
例 2:シーン切り替えを伴う複数動画
複数動画を処理し、動画ごとに 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
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"
例 3:タイムオフセット付きアニメーション
異なるタイムオフセットでアニメーションをアップロードする:
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
例 4:コントローラプレフィックス管理
処理前にコンテキストでコントローラプレフィックスを追加する:
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
例 5:フル処理パイプライン
すべての機能を使った完全なワークフロー。注意:lm_frames は非 ++ パイプライン(例:Rich、Robust、RP)が必要なため、コンテキストで 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"
例 6:シーンオープンのスキップ
自動シーンオープンをスキップし、シーンを開くタイミングを手動で制御する:
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
例 7:プロファイル選択
すべてのプロファイルを無効化してから、特定の動画から10個をランダムに有効化する:
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
ログ
スクリプト実行時(--dry-run モードでない場合)、CLI はスクリプトと同じディレクトリに <スクリプト名>.log というログファイルを自動的に作成します。例えば、my_script.yaml を実行すると、同じディレクトリに my_script.log が生成されます。
ログレベル:INFO 以上(INFO、WARNING、ERROR)
エンコーディング:UTF-8
ライフサイクル:実行開始時にログファイルが作成され、実行完了時(成功・失敗に関わらず)にログシンクが除去されます。既存のログファイルがある場合は上書きされます。
このログファイルはコンソール出力と同じ構造化メッセージをキャプチャし、デバッグや監査のための永続的な実行記録を提供します。
エラー処理
エラーコード
CLI はプログラムによるエラー処理のため、構造化されたエラーコードを使用します:
コード |
説明 |
|---|---|
|
セッションファイルが存在しない |
|
セッションファイルが無効または破損している |
|
セッション読み込みエラー(一般的な読み込み失敗) |
|
セッションを読み込まずに操作を試行した |
|
|
|
|
|
|
|
|
|
動画ファイルが存在しない |
|
Maya commandPort に到達できない |
|
セッションまたはオーバーライドで Maya シーンパスが設定されていない |
|
Maya シーンファイルが存在しない |
|
Maya シーンのオープンに失敗( |
|
セッションで Maya ベースパスが設定されていない |
|
Maya ベースフォルダが存在しない |
|
動画処理パイプラインが失敗した(学習/推論の失敗) |
|
処理後にアニメーションキャッシュファイルが見つからない |
|
|
|
指定パスにノイズ除去プロファイルファイルが見つからない |
|
ノイズ除去プロファイルファイルの読み込みに失敗した |
|
必要な出力ディレクトリの作成に失敗した |
|
処理後に期待される出力ファイルが作成されなかった |
|
|
実行時の動作
検証エラー:いずれのステップも実行される前にスクリプト検証が失敗(終了コード 1)
Maya エラー:Maya 関連の失敗(到達不可、シーンオープン失敗など)はコード 2 で終了
実行エラー:最初に失敗したステップでスクリプトが停止(終了コード 3)
終了コード
0:成功1:検証エラー(スクリプトスキーマ検証、必須フィールド欠落、無効な値)2:Maya 関連エラー(Maya に到達不可、シーンオープン失敗、Maya 設定の問題)3:実行失敗(ライセンスチェック失敗、セッション読み込みエラー、パイプラインエラー、ステップ実行失敗)
Maya 連携
前提条件
Maya が起動していること(commandPort が有効)
CommandPort が開いていること(通常ポート 42069、またはスクリプトの
context.command_portで指定したポート)
Maya プリフライトとシーンオープン
いずれのステップを実行する前に、CLI はプリフライトチェックを実行します:
Maya commandPort の接続をテスト
Maya に到達できない場合:
エラーをログ:
MAYA_NOT_REACHABLEコード 2 で終了
ステップは実行されない
Maya に到達でき、
initial_scene_openがtrue(デフォルト)の場合:セッションで指定された Maya シーン(
maya_sceneとmaya_base)を自動的に開く設定されていれば
wait_seconds_after_scene_open秒待機処理開始前にシーンが準備完了していることを保証
アップロードオプション
動画処理時に、次をアップロードできます:
Animation(アニメーション):フェイシャルアニメーションカーブ(ブレンドシェープ、コントローラ)
Audio(オーディオ):動画からのオーディオトラック
Frames(フレーム):参照用の動画フレームを画像シーケンスとして
LM Frames:可視化用のランドマーク付きフレーム
シーン管理
reopen_maya_scene:process ステップ前に Maya シーンを再オープンするかを制御。true= 常に、false= しない、省略 = 自動(いずれかのオーバーライドが存在し、かつ少なくとも1つのアップロードフラグが true の場合)。再オープン時はオーバーライドのmaya_scene/maya_baseがセッション値より優先されます。overrides.out_scene_path:処理後に Maya シーンを指定パスに保存overrides.out_playblast_path:処理後にプレイブラスト動画を指定パスに保存シーンパスはセッションの
maya_baseとmaya_sceneプロパティから解決されますProcess ステップのプリフライト:各 process ステップの前に、適切なポート(オーバーライドまたはコンテキストから)で接続を再作成し、Maya に到達可能か確認するプリフライトチェックを実行します
タイムオフセット
time_offset_frames パラメータで、アニメーションが Maya タイムラインのどこから開始するかを制御できます:
正のオフセット:アニメーションが遅く開始(例:
100でフレーム 100 から開始)ゼロ:アニメーションがデフォルト位置(通常フレーム 0)から開始
注意:0 以上の値のみ許可
次のような用途に便利です:
複数テイクを1本のタイムラインにまとめる
既存のキーフレームとアニメーションを合わせる
間隔を空けたアニメーションシーケンスを作成する
トラブルシューティング
スクリプト検証が失敗する
問題:構造や型に関するエラーでスクリプト検証が失敗する。
対処:
version: 1が存在し、正確に1であることを確認context.sessionが空でない文字列であることを確認stepsが空でないリストであることを確認各ステップがちょうど1つのキー(
processまたはsleep)を持つことを確認フィールドの型がスキーマと一致しているか確認(文字列、真偽値、整数)
Maya に到達できない
問題:MAYA_NOT_REACHABLE エラーでスクリプトが終了する。
対処:
Maya が起動していることを確認
commandPort が開いているか確認:Maya で
cmds.commandPort(n=':42069', stp='python')を実行(またはcontext.command_portで指定したポートを使用)ファイアウォール/ネットワーク設定で localhost 接続が許可されているか確認
コンテキストでカスタム
command_portを使っている場合、Maya の commandPort が指定ポート番号と一致しているか確認
動画処理が失敗する
問題:動画処理中に PIPELINE_ERROR が発生する。
対処:
動画ファイルが存在し読み取り可能か確認
セッションに有効なソルバー設定があるか確認
キャッシュ用の十分なディスク容量があるか確認
詳細なエラーメッセージはログを確認
アニメーションがアップロードされない
問題:アニメーションアップロードは成功するように見えるが、Maya に何も表示されない。
対処:
Maya シーンに正しいキャラクターリグが読み込まれているか確認
セッションと Maya シーンのコントローラ名が一致しているか確認
Maya にアニメーションレイヤーが存在するか確認(デフォルト:"BaseAnimation")
Maya スクリプトエディタで Python エラーを確認
ベストプラクティス
まず検証する:実行前に
--dry-runでスクリプトを検証する明示的なパスを使う:信頼性のため絶対パスを推奨
段階的にテストする:簡単なスクリプトから始め、徐々に複雑にする
Maya 接続を確認する:アップロード付き処理の前に 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
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
コントローラプレフィックス管理
処理前にコンテキストでコントローラプレフィックスを追加する:
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
条件付きシーン切り替え
動画に応じて Maya シーンを切り替える:
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"
サポート
問題、質問、機能リクエストについては、メインの FCS ドキュメントを参照するか、開発チームにお問い合わせください。