1.はじめに
VRみたいな〇Rが一昨年ごろから流行って,自分もそういう世界でのゲーム作りたいなぁと思ってて,ちょうどよい機会があったので作りました。完成イメージ図は下の画像です。動画での視聴はこちらのツイートから【ツイート】
とにかく修行っぽくしたくて,Unityで作る世界観も朝日が上がる時間帯から修行に励む設定にしています。
2.準備するもの
必要機材
- USBカメラ
カメラの画角にほぼ全身が映るように離れないといけないため,画角が広いものだと場所をとらなくて済む! - PC
作成時はWindows10で動作
必要ソフトウェア
- Unity
制作時はEditor version2020.3.33f1で動作 - VRM形式アバタ
BOOTHやVRoid hubからVRM形式の3Dアバタモデルを取得。現在はもう置かれていないようでしたが,国内NFTコレクション「Crypto Ninja Partners」のシャオランを使用させていただきました! - ThreeDPoseTracker Ver.0.3.0(以下,3DPT)
使用フォルダをこちらからインストール⇒ThreeDPoseTracker Ver.0.3.0 - EVMC4U
こちらを使用する⇒EVMC4U - EasyVirtualMotionCaptureForUnity - VaNiiShop - BOOTH
ダウンロード後はデスクトップなどで解凍しておく
3.動作推定準備
- こちらの記事を参考に動作推定できることを確認『USBカメラモーションキャプチャーThreeDPoseTrackerの説明』
- アバターを入手したVRMモデルに変更して,動作が反映されるか確認
4.Unityへの推定動作反映準備
- Unityを起動
- エディタの「プロジェクト」ビューで「Assets」を右クリックする
右クリックメニューから「パッケージをインポート」→「カスタムパッケージ...」をクリックし,ダウンロードしたEVMC4U内の「ExternalReceiverPack_v3_7.unitypackage」を選択して全項目をインポート - 同じプロジェクトビューでAssets内のExternalRecieverSceanをダブルクリックでシーンを開く
- プロジェクトビューのAssetsにVRMファイルをドラッグ&ドロップする
生成された同名Prefabをヒエラルキビューにドラッグ&ドロップする
さらに,ヒエラルキビュー中のExternalRecieverを選択した状態で,インスペクタビューのExternalRecieverスクリプトにあるModelにも同Prefabを設定する! - Unity エディタ上部中央の▶ボタンを押すことでProjectを実行し,コンソールビューでエラー有無を確認する
この時点では特に何も動かない
ここまでの過程終了後のイメージが下の画像
※私の場合,本記事内容を実行する前に背景世界を変更したりいじったりしてるので異なる点が多々あると思います。自身がダウンロードしたアバタがTポーズで配置されていればOK!
※背景世界には『AllSky Free』を使用。無料でこのクオリティを使えるのに驚きました!
- 本節の最後にUnityを実行して,3DPTでSouce Deviceにカメラを選択し,動作推定を開始する
3DPTで推定された動作がUnity上のモデルに反映されているか確認する
5.インタラクティブな3Dシミュレーション
5.1 基礎編
-
オブジェクト追加
メニューバー内の「ゲームオブジェクト」から「3Dオブジェクト」→「平面」を選択
ヒエラルキビューにて「平面」を選択した状態で,インスペクタビュー上部の「位置」や「スケール」を調整し,アバタが平面上に立っていると見えるようにする
同様に「キューブ」も追加し,アバタにも平面にも接触しないように,アバタの脇に置く
-
物理演算と接触判定の設定
ヒエラルキビューでキューブを選択した状態で,インスペクタビュー下部の「コンポーネントを追加」をクリックし,「Physics」→「Box Collider」と順にクリック(インスペクタビューに「Box Collider」が追加されたことを確認)
同様にキューブに「Rigidbody」を追加する
Rigidbodyでは,「重力を使用」にチェックをつけ,「Is Kinematic」のチェックを外す
同様に平面にもBox Colliderを設定(Rigidbodyは不要) -
アバタの接触判定の設定
2/1以降更新予定