2023年1月16日月曜日

playblastをMP4形式にする手順

 アニメーションを正確な再生速度でプレビューするために Playblastという機能があります。
 難解なレンダリング設定をしなくても、ビュー画面をそのままレンダリングしてくれるのでとても便利です。

 ただ、その動画を共有するために AVI形式を使用するのは容量や画質、エンコードにも難があり余り宜しくない気がします。共有するならば、やはり MP4形式が良いのではないでしょうか。


 数年前までは、mayaからも QuicktTmeを使って MP4形式での出力が選択可能だったのですが、QuicktTmeに脆弱性の存在が確認されたことで Windows版のサポートが終了してしまい、playblastでは AVIと Imageしか選択できなくなってしまいました。

 そこで、無圧縮の.aviファイルを作成し動画編集ソフトで再レンダリングし直すことで MP4を作る事になるのですが、動画編集と言えば Adobeの Premiereや After Effects(厳密にいえば Media Encoder)です。コンプリートプランであれば問題ないのですが使えない場合には他の手段を探す必要があります。

 コンプリートプランでなくても、Photoshopの単体プランに入っていたりする場合があるかもしれません。実は Photoshopにも MP4を出力する機能があるので、これを有効活用したいと思います。

 まずは playblastで.aviファイルを作成します。
 初期状態では画質や解像度が低いので

[Animation] Playback > Playblast □

で設定を開き下の部分を変更します。

 Quality:100
 Scale:1.0
 Save to fileにチェックを入れて保存先を指定します。
 ViewをOFFにすることで playblast作成後にビューワの起動を抑制し、Show ornamentsをOFFにすることで下図のようなビュー上の表示を消した状態でレンダリングしてくれますが、グリッドも消えてしまいます。

 以上の設定で.aviファイルを出力したら、今度は Photoshopでの作業になります。
 ファイル > 開く(Ctrl+O)で Playblastで作成した.aviファイルを開きます。「すべてのファイル形式」のままでも良いですが「ビデオ」のフィルタを掛けると探しやすくなります。

 Photoshopで動画を開くと、タイムラインというウィンドウが表示されます。

 このウインドウからカット編集をしたりレイヤーを重ねてテロップを入れたり簡単なトランジションを掛けたりできるようです。

 そんなに凝ったことはできないので編集はソコソコにMP4へ変換します。

 ファイル > 書き出し > ビデオをレンダリング
 と、たどっていくとツールが起動します。

 とりあえず、形式:H.264、プリセット:標準画質 になっている事を確認して、出力先を指定して[レンダリング]すれば.mp4ファイルが作成されます。 

 同じ尺でもファイルサイズが 1/100くらいに圧縮され、再生時のメモリ負荷やデータ転送量も減って良い感じです。

 最後に、playblastもMELで実行することが可能なのでスクリプト化してワンクリックで実行できるようにしてみます。

{
    string $untitle = untitledFileName();
    string $file =`file -q -exn`;
    string $name = basenameEx($file);
    
    // ファイル名が未定
    if($name==$untitle) error -n "Untitled file name.";
    
    
    //------------------------------------------------------------------------------
    // 保存先
    string $dir = dirname($file)+"/";
    
    // 実行
    playblast
        -sequenceTime 0
        -viewer 0
        -showOrnaments 0
        -offScreen
        -format "avi"
        -compression "none"
        -quality 100
        -percent 100
        -clearCache 1
        -filename ($dir+$name+".avi")
        -forceOverwrite;
    
    
    //------------------------------------------------------------------------------
    // 保存フォルダを開く
    string $path = toNativePath(`dirname $file`);
    system("start explorer /n,"+$path);
    
}

 保存先を毎回指定しないと関係のない名称で保存されてしまう可能性があるのため、シーンと同じフォルダにシーンと同じ名前で.aviファイルを作成し、ファイル作成後保存先のフォルダを開きます。

 AVI形式もなかなか古い規格なので2GBの壁には注意した方が良いかもしれません。-forceOverwriteフラグが不具合を起こしたりファイルエクスプローラが不安定になったりするようです。

0 件のコメント:

コメントを投稿