0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

キャラクターと一緒に並んで歩くアプリの開発

Last updated at Posted at 2025-06-01

研究で作っていたARアプリを公開します。
一応、(査読なしとはいえ)学会にも出してはいるので、よろしければ文献も探してみてください。
(本当なら文献として出したいけど、苗字が珍しくて声を大に言えない……)

特徴

ユーザーが歩いても、キャラクターが「隣に」いる。 ただそれだけ。

主要環境

開発

  • Unity(2022.3.10f1)
  • MacBook Pro (2016, macOS Monterey)
    プロセッサ: 2GHz デュアルコアIntel Core i5
    メモリ: 8GB
    (Apple siliconで動作させる場合、Intel版のunityの導入が必要。Apple silicon版では物理演算が機能しない模様)
  • Windows 10 Pro

実装(実機テストに使用)

  • iOS: iPhone SE2, SE3, iPad mini (5th Gen)
  • Android: XREAL Beam Pro + XREAL Air 2 Ultra

いずれの環境も6DoF機能が付いています。
Apple系端末を使用する際は、最低でも「iPhone XS」程度のスペックが必要でした(iPhone SE1ではFPS値が低下して使えず。CPUスレッド数が関係か?)。

ソースコードなど

以下のレポジトリのReleasesにユニティアセットで配布しています。ちなみに、名前は「Selene」。
このほか、各種ソースコードも別途格納しています。
現在はalpha01で、歩行機能のみ動作します。
学生時代に開発していたオリジナルのものと全く同じではありません。

利用可能機能

2025年6月1日現在

動作確認済み(主な処理のみ列挙)

  • 移動処理(Move.cs、SE.cs)
  • 設定画面(DialogShow.cs、Show.cs、SampleGUI.cs)
  • キャラの処理(EyeBlink〇〇.cs、LookUp.cs)

動作未確認、大幅改修予定(削除しても歩行機能は利用可)

  • ユーザ音声録音(Micin.cs、MicUI.cs、MicRecorder.cs)
  • ネットワーク(Network.cs)
  • キャラ動作・応答音声(AnimMorph〇〇.cs、Wavplay.cs)

上に書いていないスクリプトについても問題なく処理します。

インポート後

インポートしても、以下の画像のように上手く動作しません。
そこで、追加で以下の機能をインストール・設定する必要があります。
Monosnap SeleneScene - My project - Windows, Mac, Linux - Unity 2022.3.20f1 <Metal> 2025-05-31 15-31-56.png

  • AR機能一式とBurst
    これらは、いずれもPackage Managerで設定できます(上部にあるPackages:からUnity Registryを選択し、インストール。以下はAR機能の例)。
  • Audioの設定
    このアプリケーションには立体音響が備わっております。このまま実行しても音が出ないため、Project Settings > Audio内にある赤枠の部分の設定をResonance Audioに変更します。
    Monosnap Project Settings 2025-05-31 15-04-25.png

歩行機能

使い方

何より、特徴は横並びで歩ける事。 縦横斜め、どう歩いても。

どちらかと言えば「ユーザーの移動先についてくる」処理になります。
開始後しばらくすると並んで歩くようになります。

歩行機能を使用するには、腕の最大長を登録する必要があります。

  1. 画面をタップして設定画面を表示し、キャリブレーションボタンを押す
  2. 腕を伸ばした状態で、ユーザーが右回転する事で登録

画面収録 2025-06-01 14.00.33.gif

これで機能は利用できるはずです。

構造

Selene.jpg
歩行機能のメイン処理であるMove.csを中心とした図です(拡大推奨)。
キャラ動作から出ている矢印は、モデルのAnimatorを読み込む変数_animですが、こちらはvoid Start()内で宣言して使用します。

使用するキャラクターはModelsの中に格納し、これごと動かすことで移動を実現しています。
設定画面内の処理の1つであるDropDown.csなどの必要要件のスクリプトも残っていますが、上記の動作未確認である処理群に全く干渉されることなく処理しています。

環境の復元

オリジナルの環境ではMMDをベースに、以下の方法でキャラクターを操作していました。

  • キャラ変換:MMD4Mecanim
  • キャラ動作:mmdモーション(MMD4Mecanimで変換)

これを再度利用できる形にするためには、MMD4Mecanimをimportする必要があります。

利用方法については公式マニュアルやその他サイトが詳しいので、そちらに任せます。
ただし、Android実装の場合は物理処理やシェーダー処理が実機対応していないため、諸々変更する必要があります(ちなみに私は物理処理を「DynamicBone」、シェーダーを「liltoon」に変更して実装しました)。

瞬き処理や発声処理などはVRMの系統と異なるため、AnimMorphMMD.csEyeBlinkMMD.csのコメントアウトを解除してアタッチしてください。
※MMD4Mecanimをインポートしないままコメントアウトすると、エラーを吐き実行できなくなります。

今後

このアプリは、元々音声対話システムの拡張ツールとして開発した経緯があります。
そのため、このアプリに適応した音声対話システムの公開準備を進めます。

動かなかったらゴメンなさい……修正します……。
本当にお試し版みたいな感じなので……。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?