QuickMagic+Blender+Unityで映像制作！

この記事は[K3 Advent Calendar 2024](https://adventar.org/calendars/10132)の5日目の記事です。
衝動に駆られて１週間強で映像制作をしたときの記録になります。

# 制作物
早速ですが制作したものがこちら。我ながら良い出来。
<iframe width="640" height="330" src="https://www.youtube.com/embed/BTVumXUYvLQ?si=HHn3bQb6HUQGLt8h" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
この作品は1週間強で作成しました。モーションが存在しない状態から1週間なのでかなりスピーディに制作できたと思います。AIバンザイ！！
スケジュールはこんなかんじ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/f405a010-aea3-6510-fb8c-0bfc7ead1dcc.png)


# 使用する3Dモデル
去年の夏ごろに制作したこの子を使います。う～ん、かわいい
VRChatでの利用を想定していたため、UnityHumanoid形式のボーン構造をしています。
Shaderはliltoonを使用していてテクスチャ総数は9枚（ベースカラー6、マスク3）という仕様です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/cd5d6bd6-1614-3d2c-4bf6-844498ccc2a4.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/9a2dc143-c495-23a7-db07-ad21d5aa9f6b.png)
> 学マスがリリースされた後くらいにハイライトマスクを書き直していたりする

テクスチャはハロウィン仕様に描きなおしてます（といっても白いところがオレンジになっただけ）
![fix5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/0d0d437d-41f8-4e01-31ad-427d25248c18.png)


# QucikMagicでアニメーション制作
## QuickMagicとは？
QuickMagicは動画を入力として3Dアニメーションを作れるAIサービス？です。
無課金だと入力できる動画の長さが最大30秒で１か月50秒までの動画を入力してアニメーションを作ることができます。課金することで入力できる動画の長さが60秒まで増えて、月9.9ドルのプランなら150秒、月49.9ドルのプランなら1000秒までのアニメーションを制作することが可能になります。
今回私は120秒ほどの動画を作成したかったため、9.9ドルのプランに課金しました。

## 使用する映像
ハロウィンの季節＋公式振付動画があってちょうどよかったので学園アイドルマスターから『仮装狂騒曲』を選びました。（イベントストーリーすら完走してないし配布キャラも取り損ねたけど……歌はいいので）
この動画を前半60秒、後半20秒に分けてQuickMagicに入れていきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/cbadf451-0716-35c6-2819-259e1dc99ee3.png)

## アニメーションの作り方
QuickMagicによるアニメーションの作り方は簡単です。動画をアップロードして、ボタンをポチポチしていくだけ。OutputFormatにはGirl FBXを選びました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/71caf895-86a2-aed0-2a48-fcca86ec92dd.png)

しばらくするとMyProjectに完成したモーションが表れるのでダウンロードしましょう。
# Blenderでの作業
## リターゲット
ダウンロードしたFBXをBlenderに突っ込みます。しかし、前述したようにアニメーションさせたいキャラクターはUnityHumanoidという形式のためQuickMagicで制作したアニメーションは直接使えません。そこでリターゲットという作業をします。
リターゲット作業はBlenderのアドオンであるAutoRigProのリターゲットツールを用いて行いました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/859e498a-292a-2db4-8d08-c7f25ca4c835.png)

## モーション修正＋顔のアニメーション
リターゲットして「はい、おしまい！」とはならず、細かい修正が必要です。
こういった腕が干渉している個所や
![fix1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/ec135259-b1db-08c6-afc3-da63523b3449.png)
手のモーションなど、必要な場所はすべて手作業で修正します。この作業は地獄のようでしたが、終わった後の達成感はそこそこあります。
![fix2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/981304e0-2ad1-ea63-f41f-5ecabcfc2ba8.png)
また、単一視点の動画からアニメーション推定を行う関係上QuickMagicは前後移動に弱いようです。画像の左のように、アニメーションを進めていくとどんどん前に進んでしまうようになってしまいました。
![fix3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/e63f2391-8e24-b6c0-4d98-e0094c9ac09d.png)
これを修正するため、グラフエディターをつかって下がるべきところでキャラクターを適切に下がらせることで対応しています。初心者の頃ってグラフエディターは触らないことが多い気がしますが、便利なので積極的に使いましょう！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/d8903c1a-ccff-a8c4-1515-907e2807494b.png)
顔のアニメーションもやっていきます。シェイプキーは豊富に用意してあったので、アニメーションに合わせて変えていくだけ。簡単だね（簡単じゃない）
![fix4.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/800a04a7-b913-53ab-57d0-c8131a21e623.png)

# Unityでの作業
アニメーションの修正が終わったらfbxにしてUnityに突っ込みます。
自分は色々めんどくさかったので、VRChatのアバターアップロード用のプロジェクトを複製して使いました。
Unityでの作業は以下の記事をとても参考にしています。
[【画像で解説】Unityを使った3DダンスMV制作かんたん入門講座](https://konichallengelog.com/unity_3dmv_intro/)
## 背景
背景には[ユニティちゃんライブステージ](https://unity-chan.com/download/releaseNote.php?id=CandyRockStar)を使ってます。さすがに１週間じゃ背景までは作れませんでした。残念……
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/ff1e0e3b-1720-60f1-b2da-d7752587a06d.png)

## カメラワーク
UnityのCinemachineを使っています。
最終的なTimelineはこんなかんじになりました。途中から3つのカメラを切り替えてカメラワークを作る省エネ仕様にしたのですが、これはあまりお勧めしません。カットごとにカメラを作成する方が修正などがしやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/cced0a13-44ee-8534-f713-c2e6ae59a814.png)

## ポストプロセス
ポストプロセスもかけました。あるなしでホントに変わるので積極的に使いましょう。（かけすぎに注意、これはBloomをかけすぎてぼやけちゃってる）
![fix6.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3623470/7a69a45e-efc2-e2a7-4ee4-e79cddff08d9.png)

## スクリプト
UnityのTimelineにRecorderClipというのを入れることで映像の録画ができます。ただし、Playボタンを押した瞬間にTimelineが再生されるため、Unityのビルド？時間の数秒だけアニメーションが途切れてしまうので指定した秒数のDelayをかけるスクリプトを書きました。
```c#:PlayableDirectorStart.cs
using System.Collections;
using UnityEngine;
using UnityEngine.Playables;

public class PlayableDirectorStart : MonoBehaviour
{
    private PlayableDirector director;

    [SerializeField]
    private float _delayTime;

    bool _isPlaying = false;

    void Start()
    {
        director = GetComponent<PlayableDirector>();
        if (director == null)
        {
            this.enabled = false;
        }
        else
        {
            director.timeUpdateMode = DirectorUpdateMode.GameTime;
            director.playOnAwake = false;
            director.Play();
            director.Stop();
            director.time = 0;
        }
    }

    private void Update()
    {
        if (Time.time > _delayTime && _isPlaying == false)
        {
            director.Play();
            _isPlaying = true;
        }
        if (director.time >= director.duration)
        {
            director.Stop();
        }
    }
}
```

# まとめ
QuickMagic+Blender+Unityでダンス動画を１週間強で作ることができました！初めての試みでしたが、大きく躓くことなく完成まで持って行けてよかったです。
今年はあまりモデリング自体できなかった（やらなかった？、やる時間がなかった？）ので、来年は色々作りたいです。特にフィギュア作りたいな～とか思って3Dプリンター買って3年くらい経ってしまったのでそういったものに挑戦したいかも。
あまり詳細に書くことはできなかったのですが、この記事がこれからUnityで映像制作を始めたい人、3DCGに興味ある人の手助けになれば幸いです。