複数の会話ボックスで同時にテキストを再生/一つの会話ボックスで二人のキャラクターの口を制御

45 views
Skip to first unread message

粉紅夜

unread,
Jul 6, 2024, 7:16:13 AMJul 6
to 宴ユーザーグループ
開発者様、

いつもUtageのメンテナンスとユーザーの問題解決に努めていただき、ありがとうございます。
動畫25.gif
現在、私はバージョン4.0.7を使用しており、一方のキャラクターはLive2Dを使用し、もう一方はAvatarを使用しています。最近、二人のキャラクターが同時に話す機能を使用したいと考えています。上記の画面に示されていますように。

考えられる方法は二つあります:

一つ目の方法は、一つの会話ボックスで二人のキャラクターの口を同時に制御することです。

二つ目の方法は、二つの会話ボックスを同時に使用し、同じ台詞を再生しつつ、一つの会話ボックスを画面外に移動させることです。しかし、二つの会話ボックスのテキストを同時に再生する方法があるのか不確かです。

現在の展示では、一人のキャラクターが音声を再生し、もう一人はテキストで口の動きを制御しています。しかし、欠点は音声内容を別途用意する必要があり、完全に同期することができない点です。

この機能を実現する簡単な方法があるかどうか教えていただけると幸いです。

お忙しいところ恐れ入りますが、お返事いただければ幸いです。
再度、Utageの維持に感謝申し上げます。

マッドネスラボ

unread,
Jul 6, 2024, 3:27:24 PMJul 6
to 宴ユーザーグループ
>一つ目の方法は、一つの会話ボックスで二人のキャラクターの口を同時に制御することです。
仮実装ですが、リップシンクの判定処理の拡張をしましたので、添付のパッケージファイルを適用してください。
(添付ファイルのダウンロード後に、拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)

さらに、Live2Dの場合はUtageForLive2D/Scripts/AdvGraphicObjectLive2D.cs にも修正が必要です。
下記のように、リップシンク判定部分のラムダ式を更新してください。

void Start()
{
if (LipSynch != null && Engine!=null)
{
AdvGraphicObjectCustom advObj = this.GetComponentInParent<AdvGraphicObjectCustom>();
if (advObj != null)
{
//リップシンクのキャラクターラベルを設定
LipSynch.CharacterLabel = advObj.ParentObject.gameObject.name;
LipSynch.OnCheckTextLipSync.AddListener(
(x) =>
{
x.EnableTextLipSync = Engine.ScenarioSound.CheckTextLipSync(x.CharacterLabel);
});
}
}
}




添付のパッケージを適用すると、AdvEngineのAdvScenarioSoundコンポーネントに「Almighty Label」という項目が追加されます。
ここに設定されたキャラクターラベルのテキストまたはボイスが再生中の間は、表示されている全てのキャラクターのリップシンクが再生されるようになります。
ss_0474.png


Characterシートの設定のサンプル
ss_0478.png

サンプルシナリオ
ss_0477.png



ただ、この方法はあまり柔軟性がないので、
・全員ではなく、3人中2人だけリップシンクさせたい
・Almighty Labeを複数設定したい
というときは対応できないので、AdvScenarioSoundをさらに拡張する必要があるかもしれません。
仮実装なので、テストしてみてご意見を頂ければと思います。

>二つ目の方法は、二つの会話ボックスを同時に使用し、同じ台詞を再生しつつ、一つの会話ボックスを画面外に移動させることです。しかし、二つの会話ボックスのテキストを同時に再生する方法があるのか不確かです。
これは難しいです。複数のテキストボックスを使った場合はテキストは順番に再生されるため、同時に再生する機能は基本的にはないです。


2024年7月6日土曜日 20:16:13 UTC+9 粉紅夜:
FixAlmightyLipsync.unitypackage

マッドネスラボ

unread,
Jul 6, 2024, 3:50:09 PMJul 6
to 宴ユーザーグループ
すみません。先ほどの拡張はLive2Dの方が不完全でした。
本メッセージのFixAlmightyLipsyncVer2.unitypackageという添付のパッケージファイルを適用してください。

(添付ファイルのダウンロード後に、拡張子が *. gzになっている場合は、*.unitypackageに変えてからプロジェクトに適用してください)

UtageForLive2D/Scripts/AdvGraphicObjectLive2D.csに対する更新に加えて、
UtageForLive2D/Scripts/Live2DLipSynch.cs のほうも下記のメソッドを以下のように 更新  してください。

        protected override void OnUpdateLipSync()
        {
            if (this.CheckVoiceLipSync())
            {
                Audio.AudioInput = Engine.ScenarioSound.GetAudioSource(this.CharacterLabel);
            }
        }


2024年7月7日日曜日 4:27:24 UTC+9 マッドネスラボ:
FixAlmightyLipsyncVer2.unitypackage

粉紅夜

unread,
Jul 8, 2024, 2:10:07 AMJul 8
to 宴ユーザーグループ
開発者様、

新しい機能のテストを行いました。複数のキャラクターが同時に話すことが無事にできました!

64.gif

同時に以下の機能もテストしました:

1.AllLipsyncの名前表示を変更
2.AllLipsyncにAdvTextSound機能を適用し、音声も問題なく出力されました

現時点で問題は発見されていません!

また、この機能が将来Utageの正式版に更新される予定はありますか?もしバージョンアップした場合、この機能をどのように維持するか知りたいです。

お忙しい中、ユーザーの問題を解決していただき、心から感謝しております!

マッドネスラボ

unread,
Jul 8, 2024, 7:35:52 PMJul 8
to 宴ユーザーグループ
ご確認ありがとうございます。

>  また、この機能が将来Utageの正式版に更新される予定はありますか?もしバージョンアップした場合、この機能をどのように維持するか知りたいです。
不具合がないようでしたら、次回のUTAGEのバージョンアップ(4.1.1)にこの機能を入れようと思っています。
Live2Dの拡張パッケージも、合わせてバージョンアップを追加しようと思っています。
時期的には、今月末くらいを予定しています。

もしバージョンアップ前になんらかの理由で仕様変更が必要になった場合は、ここにメッセージを追加する形でお伝えさせていただこうと思います。



2024年7月8日月曜日 15:10:07 UTC+9 粉紅夜:

マッドネスラボ

unread,
Jul 25, 2024, 6:57:56 AM (2 days ago) Jul 25
to 宴ユーザーグループ
先日のバージョンアップ(4.1.1)に、今回の機能を入れましたのでお知らせいたします。
複数のキャラクターの同時リップシンクに関しては、特に仕様変更はありませんのでそのままお使いいただけます。

その他のバージョンアップ内容については、リリースノートをご確認ください。



2024年7月9日火曜日 8:35:52 UTC+9 マッドネスラボ:

粉紅夜

unread,
Jul 26, 2024, 6:46:28 AM (yesterday) Jul 26
to 宴ユーザーグループ

このニュースを特別にお知らせいただき、ありがとうございます。

ユーザーの問題を忍耐強く解決してくださることに、心から感謝しています。m(_ _)m

ありがとうございます!
マッドネスラボ 在 2024年7月25日 星期四下午6:57:56 [UTC+8] 的信中寫道:
Reply all
Reply to author
Forward
0 new messages