top of page

Fee 再構築

執筆者の写真: snackvirtualsnackvirtual

Chat GPTの出現あたりでいったんめげてしまったSnack Virtualだが、

退職を機会に再構築をしてみたいと思った


そのきっかけはいくつかある


まず最初に、いままでのあまりにぐちゃぐちゃなシステムを見直すことにした

ただ一発でシステム図を完成させるほど知識がないので、ひとつひとつ進める



Cubism 5.0


Cubism 4.2の製品版を1年間購入していたが、期限が来てしまった

このため4096画素あるFeeのテクスチャアトラスのままだと保存さえできない

これだけのことで前回同様製品版を買うのは癪だ

今後のことを考えると、お金より時間が豊富にある

だったら無料版でなんとかしよう

ということで、Cubism 5.0をインストール


テクスチャアトラス編集→テクスチャ→テクスチャのサイズ変更 で4096→2048に

自動レイアウトでパーツを自動で置きなおして OK


保存しようとすると、「オブジェクトにパラメータが4つアタッチされている、無料版は2つまで」みたいなエラーが出る

「選択したオブジェクトのパラメータだけ表示」のボタンを押し、オブジェクト(パーツ)をひとつひとつ選択して、パラメータが3つ以上設定されているものはパラメータを削除していった


その後、モデリング→パラメータ→モーションシンク設定で口パクの確認

今回は母音のみの方法ではなく、基本で設定

ただ、もともとのFeeの素材の口パクがあまり適切ではなく、A/I/U/E/Oの口の形にならない

ここは今後の改善点

あと、まばたきと呼吸の設定をして、保存、書き出し


パラメータをがんがん削除していったので、今後動きが欲しいときは追加が必要




Unity


Cubismがアップデートされたので、Unityもアップデートすべきだろうと考え、

2023.2.7f1をインストール

Cubism SDKはUnity用はβ版だが、それをインポート

事前にUnityの3Dゲームに関して40本の動画を見て勉強したが…う~ん、よくわからん


あとから細かいところは修正するとして、必要なパーツを並べる

まずはFee本体とまばたき、呼吸をさせる

次にCubism 5.0のモーションシンクの口パクだが、動かない(涙)

まったくわからないので、ちょっと保留

次にTextとInputFieldの追加 日本語フォントの追加 BGMの追加

InputFieldに入力した文字をEnterでTextに表示するスクリプトまで動作OK


今回はSkywayのようなWebRTCサービスを使わなくてもブラウザ上で動くように、WebGLで公開しようと考えている

このため、この時点でWebGLでBuildして確認


次にFeeの会話をどうするか?だが、とりあえずwavファイルに書き出し、これを指定して再生するという簡単な方法とした


Bingで教わったとおり、AudioPlayerを作って、とりあえずUnity上では動作した

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;

public class AudioPlayer : MonoBehaviour
{
    public string url = "file:///C:/Apache24/htdocs/Fee_test.wav";

    IEnumerator Start()
    {
        using (var uwr = UnityWebRequestMultimedia.GetAudioClip(url, AudioType.WAV))
        {
            yield return uwr.SendWebRequest();
            if (uwr.result == UnityWebRequest.Result.ConnectionError || uwr.result == UnityWebRequest.Result.ProtocolError)
            {
                Debug.LogError(uwr.error);
            }
            else
            {
                var audioClip = DownloadHandlerAudioClip.GetContent(uwr);
                var audioSource = GetComponent<AudioSource>();
                audioSource.clip = audioClip;
                audioSource.Play();
            }
        }
    }
}

がなぜかWebGL上では 動かない(涙)

urlをずんだもんのサーバーにすると、WebGLでも動く


調べてみると、CORSが原因では?と予想

とりあえず保留



これが昨日までの進捗


現時点での課題をまとめると

保留:

  1. モーションシンクの口パクが動作しない

  2. PC内部の音声ファイルを設定するとWebGLでは音声を再生できない

未検討:

  1. Unity -- Python間の通信 通信プロトコルも含めて何が最適か?テストはInputFieldの入力をCallbackしてText表示させればいい

  2. Python側でFeeのパラメータを変えた時、ブラウザ上でちゃんと動くか?

  3. Python側でFeeの音声ファイルを上書きして再生指示をしたとき、ブラウザ側でちゃんと動くか?


このあたりがすべて解決して、初めて部品が揃ったといえよう


次回は未検討1:Unity -- Python間の通信 にトライしよう


閲覧数:4回0件のコメント

最新記事

すべて表示

Comentarios


bottom of page