Maya への取り込み(MEL, Python)

本項ではコンソールツール CriLipsMake の出力結果を Maya へ取り込むためのスクリプトの使用方法と、処理内容について解説します。

ADXLipSync2Mayaスクリプト解説

概要

本パッケージに含まれている ADXLipSync2Maya.mel、ADXLipSync2Maya.py は、口パクデータファイル(.adxlip)をアニメーションキーとしてインポートするスクリプトです。
口パクデータファイルを Maya 上で確認、もしくは既存ワークフローに組み込む際のサンプルとしてご利用ください。

また、以下のような ADXLipSync2Maya スクリプトの動作確認用サンプルシーン(Maya2017用)も同梱しています。

dcc_integration_maya_01_script_summary.png
ADXLipSync2Maya スクリプトの動作確認用サンプルシーン

スクリプトの使用手順

  1. ファイルの用意
    以下のファイルを用意します。
    • セリフの音声ファイル(.wav)
    • セリフを解析した口パクデータファイル
    • セリフを割り当てるキャラクターの Maya シーン

  2. Mayaシーン読込み
    メインメニュー [File] - [Open Scenes...] から、セリフを割り当てるキャラクターの Maya シーンを開きます。

  3. セリフの音声ファイル読込み
    セリフの音声ファイル(.wav)を Maya のタイムラインへドラッグ&ドロップします。

    dcc_integration_maya_02_timeline_drop.png
    音声ファイルをタイムラインにドラッグ&ドロップ

    音声ファイルが読み込まれ、プレビュー時に音声が再生されます。
    もし、音声が再生しない場合は、[Preferences] - [Time Slider] の Playback speed 項目または、[Play every frame] の設定をご確認下さい。

  4. スクリプトファイルの読込み・実行
    ADXLipSync2Mayaスクリプトを実行します。スクリプトは以下のパスに配置されています。
    cri\tools\ADXLipSync\samples\ADXLipSync2Maya.py
    スクリプトの実行方法には、下記 a), b1~b3) の2つの方法があります。
    [MEL スクリプトファイルの場合]
    a) ADXLipSync2Maya.mel をエクスプローラーから Maya のビューポートへドラッグ&ドロップします。(読込み即実行)

    dcc_integration_maya_03_viewport_drop.png
    ビューポートにドラッグ&ドロップ

    [MEL または Python スクリプトファイルの場合]
    b1)スクリプトエディターを開きます。(Maya ウィンドウ右下の {;} アイコンをクリック)

    dcc_integration_maya_04_scripteditor.png
    スクリプトエディターを開く

    b2)スクリプトエディター下部の入力部にエクスプローラーから Maya のビューポートへドラッグ&ドロップしスクリプトを読み込みます。
    スクリプトの種類に合わせて入力部のタブ[MEL]、[Python]を切り替えてください。

    dcc_integration_maya_05_scripteditor_drop.png
    スクリプトエディターにドラッグ&ドロップ

    b3)スクリプトが読み込まれたら、テンキー側のEnterボタンを押下し実行します。
    上記の方法でスクリプトを実行すると、ADXLipSync2Mayaダイアログが表示されます。

  5. ADXLipSync2Mayaダイアログの設定
    ADXLipSync2Maya について取り込み時の各項目を設定します。

    dcc_integration_maya_06_dialog_ADXLipSync2Maya.png
    ADXLipSync2Mayaダイアログ

    • Lipsync Data File (*.adxlip):口パクデータファイルのパスを設定します。
      • [Browse...]ボタンを押下し、口パクデータファイル(.adxlip)を指定します。
    • Maya Scene fps setting:Maya シーンのフレームレートを指定します。(デフォルト 30fps)
    • Blend Shape Group Name:シェイプエディターで表示されるブレンドシェイプグループ名を指定します。(デフォルト blendShape)
    • Blend Shape:A,I,U,E,O:あ、い、う、え、おの口に対応するブレンドシェイプ名を指定します。

      dcc_integration_maya_07_shapeeditor.png
      シェイプエディター(参考)

  6. [Apply]ボタンを押下して実行します。
    [Apply] ボタンを押下すると、上記で設定したコンフィグを使用して口パクデータファイルからアニメーションキーへの変換処理が実行されます。
    画面右下部に「*******Processing Exit*******」が表示されたら処理完了となります。

    dcc_integration_maya_08_exit.png
    処理完了


  7. プレビュー確認 プレビューの再生ボタンを押下し、音声と口の形状が同時に再生されます。

ADXLipSync2Mayaスクリプト解説

本項目は口パクデータ取り込みスクリプト ADXLipSync2Maya の開発者向け解説です。
ワークフロー適応時の参考として ADXLipSync2Maya スクリプトの一連の流れを解説します。
ADXLipSync2Maya スクリプトは、MEL, Python の2つの形式で提供していますが、それぞれ同じ処理を行っています。
(併記行数は MEL スクリプト版を記載)

  • グローバル変数定義(12行目~)
    変数と初期値を設定しています。サンプルシーンと各種名前のフォーマットが異なる場合は変更してください。

  • ウィンドウ定義(26行目~)
    ダイアログのレイアウトを定義しています。

  • loadLipfile()関数(74行目~)
    ダイアログの[Browse...]を押下時に表示されるオープンファイルダイアログの定義をしています。

  • execlip2maya()関数(84行目~)
    ダイアログの[Apply]を押下時に実行される関数を定義しています。

    • ダイアログから情報をセット(95行目~)

    • 文字列を連結してブレンドシェイプ名を作成します。(106行目~)
      「ブレンドシェイプグループ名.ブレンドシェイプ名」というアトリビュート名を作成します。
      ※コントローラーにキーを打ちたい場合は、このセクションで文字列を「コントローラー名.translateX」等に指定すると他のアトリビュートに変更できます。

    • 1フレームの時間(msec)を算出(114行目~)
      現状、ダイアログで設定したfps値から1フレームの時間算出してadxlipの時間(msec)をフレームに直してキーを打ちます。

    • adxlipファイルを読込み(117行目~)
      ヘッダー部の読み飛ばし処理は124行目~となります。

    • adxlipファイルのデータ変換処理(135行目~)
      ファイル終端まで1行ごとに口パク情報を読み取り以下の処理を繰り返します。
      • 時刻処理
      • 各日本語5母音ブレンド量を設定したアトリビュートにセット
      • キーフレームに設定
    • ファイルクローズおよび、終了の告知(167行目~)