トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

ImagineWebARのImageTracker使ってみた

こちらのアドカレに参加しています

adventar.org

ImagineWebAR

UnityでWebARの開発ができるアセットを使ったので紹介します。

ImageTrackerとassetstore.unity.com

WorldTracker

assetstore.unity.com

他にもカーブトラッカーとかImageTrackerの無料版を出してる

無料版はマーカー画像を任意のものにできなかったり複数同時に追跡ができないらしい

以下を除くすべての AR 機能が利用可能です。

•イメージターゲットのカスタマイズは含まれていません。代わりに、いくつかのホワイト ラベル テンプレートから選択できます。ブランド/ロゴを配置できるスペースもあります。

•複数の画像を同時に追跡することはできません。

Imagine WebAR - Image Tracker Free | Camera | Unity Asset Store

今回はImageTrackerを主に触りました。

Unity2022.3.7

Imagine WebAR - Image Tracker 1.6.0(※今見たら1.7.0が出てる)

今回作ったもの

VRMのキャラと、クロマキー動画のキャラの2体が出るシンプルなもの。

以下のページで、マーカーをモナリザか私のアイコン画像にしたら遊べます

bibinba.github.io

私のアイコンは精度悪い

 

公式デモページ

とりあえずサンプルを見てみる。

公式がビルド済みのものはここから触れる

webar.imaginerealities.com.au

いったんPCとかで実行して、各デモページの右上からマーカーをダウンロードするとよさそう。塗り絵の画像はダウンロードしても0kbで表示されなかったのでUnityAsset内からとってきた

そしてPCでマーカーを表示しつつ、スマホでARを実行

ただし、デモのバージョンは1.5.3で最新のUnityAssetsは1.6.0なのでちょっと内容違うかも

シンプルに3Dモデル表示

動画表示

クロマキー動画+リンク

塗り絵!

ペイントでぬったら反映されたけどなんか境界線が汚い。あとリアルタイムにマーカー画像を反映してるんだね。(マーカーの上に置いた指がARにも出てる)

Unity内デモシーン

ここから

3Dモデル表示

シンプルな動画表示

グリーンバックの映像から切り取ってくれるデモもある!(Demo-ChromaVideo)

元動画

VFX表示

作る

ガイドはここにpdfがある

AssetStoreに貼ってあったYoutubeも解説してるっぽい

www.youtube.com

ImageTrack

AssetsからImageTrackerとARCameraをシーンに追加

ImageTrackerにARCameraセット。MainCameraは消しておく

マーカーにしたい画像を選んだ状態でImageTargetを選ぶ

そしたらImageTrackerの下にマーカーのプレハブが追加される

ImageTargets一覧にも自動で追加される

そして3Dモデルをマーカープレハブの下に置く

Unity実行して、ImageTrackerの下のほうのEditorDebugModeのFoundを押すと、イメージトラッカーが見つかった時の挙動を再現できる

GameViewでWASDなどでカメラの移動もできるが、SceneViewのいつもの操作で見たほうが使いやすい気もする

ビルド

WebGLビルドするとき設定でWebGLTemplateのiTrackerを選ぶ

ビルドされたものを、どこかのサーバーに置く

ホスティング

github page

いつものようにGithubPageに置いた

bibinba.github.io

これで最初のindex.htmlには行けるけど、ロード画面でが90%になって止まった。そんなときの対処法もドキュメントに書いてある

Conpression FormatをDisableに変える

あれ、それでも変わらない・・・

ググったらUnityの設定のDecompression Fallbackにチェックを付けたらよい

qiita.com

これで動いた~~よかった。

プッシュした後反映されるのにちょっと時間かかる。反映されたかわからないから、index.htmlを毎回ちょっと変えて何度もリロードしてる・・・

4分以上はかかる気がする。

S3は即時反映されたから微妙だな~

あ、Githubのここ見たらわかるのか

S3 

ドキュメントにはS3とGoogleFirebaseの方法を書こうとしている跡がある。リンクないけど

実際のプロジェクトではS3を使ったので、今回もS3も試した

でも自分で設定したことないよ~~

この記事の通りにやった。結構設定めんどくさかった

tm-progapp.hatenablog.com

バケット作って、ビルドしたデータ全部入れたら、バケットのプロパティ欄で静的ウェブサイトホスティングをオン。index.htmlを指定

 

アクセス許可でブロックパブリックアクセスをすべてオフ

 

バケットポリシーを書く

これもかく

これでやっと公開状態になってアクセスできるようになる

それだけじゃなくてBuildフォルダ内のメタタグを設定しないといけないらしい。

※設定しなくても動いた

参考サイトだと.gzになってるけど、ビルド方法変えたので.gzはついてない

 

 

これで静的ホスティングの欄に書いてあったページに行ってら、なぜかFailed to initialize the experience.になる

このエラーメッセージはImagineWebAR側が出している

あ、Chromeのコンソールでエラー見れるのか

(index):94 Failed to initialize ImageTracker. Are you missing opencv.js? TypeError: Cannot read properties of undefined (reading 'enumerateDevices')

 

結局S3は変えずにindex.htmlのオブジェクト URLにアクセスしたらできた

ただ、最終的にはGithubのほうがプッシュしたら自動で変わるので便利なのでGithub使うことにした。

Firebase(やってない)

アセットのdiscordをみたらGoogleFirebaseを推奨してた。無料で簡単らしい

firebase使ったことない

negi-lab.blog.jp

Web部分のカスタム

最初のカメラ選ぶ画面や、ロードのUnity画面などをカスタムすることはできる。

直接変えるならこの場所にあるindexを主に変える。

カメラはデフォルトのものを選ぶようにして、カメラ選択UIなくしたりもできた。

TemplateData内のstyleがローディング画面のcssファイル。ここでUnityロゴを別のものに変えたりローディングバーを変えたりできる

いずれもChatGPTに聞きながら変えた。htmlとcssに少し詳しくなった・・・

クロマキー

QuadにVideoPlayerつけて、シェーダーをChromaVidoにすれば使えそう

何色を抜くかとかどれくらい抜くかを決めれる

デモのままだと敢えてなのかちょっと緑の淵が出てた。AlphaCutoffの値を変えてキレイになった

mocopiでグリーンバックで動画を取って、

直接VideoClipで入れた!

でも実行したら動画が再生されない・・・

Editorではちゃんと動いてるのに。

(関係ないけど正面から見たらクロマキー動画か3Dモデルか全然分からない)

サンプルはURLから再生しているので、そうしてみる。

どこがいいんだろう?サンプルはfirebaseに置いてる。

調べたらGogleDriveがよさそう

creator.cluster.mu

取得したURLの形式を変える必要があるらしい

https://drive.google.com/open?id=<ファイルID>
https://drive.google.com/file/d/<ファイルID>/view?usp=sharing
    ↓
https://drive.google.com/uc?id=<ファイルID> 

https://drive.google.com/file/d/1JAkKvk_82pD46leyNCO26qB91UmXeKxv/view?usp=sharing

https://drive.google.com/uc?id=1JAkKvk_82pD46leyNCO26qB91UmXeKxv

やってみたが表示されない

と思ったがもう一回やったら見れた!

「一時的なアクセス制限などにより表示されなくなる場合もありますので、ご注意ください」と書いてあったのでそういう問題かな?

表示されるとき一瞬白いままの画像が見えるので、ちゃんとするなら読み込まれるまで何かで隠すとか非表示にしたほうがいいのかな?

 

Clusterの記事に書いていたが

Android 端末では Video Clip を用いた動画の再生ができないため、直接動画ファイルを埋め込むのではなく外部リンクの埋め込みにしています。

らしい

ビルドして実機で試したが動画こない!!

 

結局S3に動画置いてそのURLにしたら実機でも表示された!

iPhoneSEだと読み込まれるのに結構時間かかるし、動画が後半でスローになる

スクショ

スクショ撮るスクリプトと、テクスチャーダウンロードするスクリプトが用意されてる

用意されてるScreenshotManagerスクリプトを適当なオブジェクトに付けて、音とか設定。音素材も用意されてた。Texture2Dはスクショされたものを入れるようなのでなにも設定しない

ボタンとかから呼び出す

 

そして実機で動かすとスクショはWebネイティブ?のプレビュー画面みたいなの出て、それを長押しすると保存とかはできた。ただ背景のカメラ画像は撮れない・・・真っ黒

ダウンロードとかShareはできる

ScreenShotのコード読んだら

 Debug.LogWarning("Your screenshot will not include the webcam image. Enable Video plane in your AR Camera to properly capture screenshots");

って書いてた

ARCameraのVideoPlaneModeをTexture_ptrにしたらいいのか?VideoPlaneMatというマテリアルもあったのでそれも設定した

できた!!

 

ちなみにスクショのサンプルはDemo-3DModelingの奥のほうにあった

マーカーダウンロード

TextureDownloaderを適当なゲームオブジェクトにつける。jpegかpngか選べる

ボタンなどで呼び出す。そのときにダウンロードしてもらう画像を指定する

その画像はRead/Writeがついている必要がある

あとUncompressedと書いていたので、ConpressionもNoneにする

これでダウンロードされた。

なんか縦長

躓いたとこ・1point

使い込んでて躓いたとことか

UnityEditorでのシミュレート

VuoriaみたいにEditorでPCのカメラでARをすることはできない。

毎回WebGLビルドした。

将来的にはエディタで対応予定らしい

missing

マーカー画像を色々変えて、追加したり消したりしてたら、ImageTrackerGlobalSettingsのTarget一覧でmissingになってた。この状態ではImageトラッキングがされないことがあったので、マーカー画像を消すときはここを確認

重力

ImageTrackerの設定でTargetOrigineがある。

 

- CAMERA_ORIGIN を使用して、原点のカメラを基準にして画像ターゲットを配置します。
- FIRST_TARGET_ORIGIN を使用して、最初に検出された画像ターゲットを基準にしてカメラを配置します。
これは、画像ターゲットを使用する場合など、向きに敏感なセットアップに役立ちます。
重力、トレイル レンダラー、またはワールド パーティクル システム

公式ドキュメントより

キャラクターでMagicClothなどの揺れモノ設定は重力の項目もあるので関係してきた。

CameraOrigineの状態だと、現実世界の重力方向が適用されて、マーカーを垂直にしてキャラが現実の地面に対して垂直に出したときに、スカートが重力で下に行った。

 

それはそれで面白いがスカートがめくれたりしてあれなので、First_Target_Origineにした。そしたらマーカーが地面として重力の向く方向になって、マーカーをどんな風に動かしてもスカートがめくれることはなくなった

CameraOrigineだと世界の中でカメラが固定でマーカーとかオブジェクトとか世界が動いている?

TargetOrigineはマーカーが固定でカメラが動く

パフォーマンスチューニング

Androidの古い端末(Pixel3a)でめっちゃfpsが低かった。3ぐらいしか出なかった

ImageTrackerGlobalSettingsやImageTrackerにあるMaxFrameLengthなどの4つの項目を調整したら、画像認識の精度と引き換えにfpsが上がる可能性がある

ImageTrackerGlobalSettingsのほうで設定して、ImageTracker側でOvverrideTrackerSettingのチェックをオフにしたら、ImageTrackerGlobalSettingsの設定が反映される

これについてはドキュメントに書いてある。

でもこの設定で一番フレームレートが高くなりそうな設定にしても3fpsが7fpsになる程度だったので、劇的に効果があるわけではなかった。トラッキングの精度も悪くなるし

最後に

バージョンによって仕様がかなり変わっていそうな気はしますが、このアセットの記事を書いてる人がほとんどいなさそうなので、少しでも役に立てばうれしいです。

【AppleVisionPro】Unity Poly Mesh✖️VRM、スキャンデータ、ライト

前回サンプルシーンやテンプレートプロジェクトを動かすことはできた。

bibinbaleo.hatenablog.com

今回は自分のオブジェクト表示など諸々試す。

環境としては、テンプレートプロジェクトからしかビルド成功しなかったので、テンプレートプロジェクトをコピーしてその中でやる。

ちなみに前回はBuild &Runでビルド成功したのに、今回はBuild &Runしたらエラーが出るようになった;;Buildして、XcodeでRunしたら動く

スキャンデータ表示

LumaAIでスキャンしたシーンのobjを入れて表示したら、

Mesh payload buffer size overflow

と出てアプリ自体が表示されなかった;;

highだとダメか〜

mediumにしたら表示された!

unboundedにしたら、なぜか自分にこのオブジェクトがついてくるというよく分からない挙動になった・・・

VRモードで見たい。これにする

カメラの設定などは変えずこれでビルドしたらちゃんと見れた!

前の記事と同じく相変わらずLoadingは出るけど、今回はちゃんと周りを見回せる!

背景の色はcameraのsolid colorかな?

見たらskyboxになってた。でもskyboxはサポートされてないので、solid colorのデフォルトが反映されていたっぽい。ピンクにしたらピンクになった

確かAppleVisionは全てのアプリは最初にウィンドウがないといけないからそのウィンドウってことなのかな?

 

VRモードで見るときは、Unboundedにする。

VRM表示

VRM0.X系モデルを入れたが、ピンク。URPだから。

URP対応したと聞いたが、VRM1.0系だけみたい

VRMファイルを選んでMigrate1.0というのをして、

VRM10のURPのMtoon10シェーダーを選ぶと

一応表示されるけどなんか変

しかも実行した時表示されない

 

 

しょうがないので、URP/Unlitにした。テクスチャ外れるので手動でつけないといけないのでめんどい

目がおかしいけど表示されそう

LookAtスクリプトとAnimatorをつけた。

LookAtのカメラはMainCameraにしたらエディターではちゃんと動いた。

それをシミュレーターでビルドしたら、カメラとは少し違うとこを向いてるし顔消えてるし怖。一応カメラの動きに応じてキャラが動いてるので完全に的外れというわけではなさそう

顔消える問題

LookAt消しても変わらない。

シェーダーで顔の部分だけtransparent使ってるせいかと思って変えたけど変わらず

Transparentはサポートされてると書いてあった

URP のアンライト マテリアルの場合、PolySpatial はBase Mapカラーとテクスチャのプロパティに加え、 およびOpaque(Transparentブレンド モードを使用Alpha) サーフェス タイプをサポートします。Alpha Clipping有効にすることができます。がThresholdゼロより大きい場合、ブレンドは実行されません (アルファ テストのみ)。

docs.unity3d.com

エラーを見たら

[診断] SkinnedMeshRenderer のオブジェクトデータの転送に失敗しました - 最適化されたスキン メッシュ レンダラーは現在サポートされていません。

って書いてた

確かにSkinedMeshRendereをオフにしたら顔が消えるのでそのせいかも。

でも服や髪にもSkinnedMeshRendereはついてるんだけどな〜

Q&AにSkined MeshやAnimatorのことを書いてあるので確認した

docs.unity3d.com

リグでオブジェクトの最適化のチェックを外す必要があるらしいが、VRMファイルだけを入れた場合って元のfbxないからリグの設定できない・・・

 

解決!

顔だけRoot BoneがRootじゃなかったので、Rootにしてみて、BoundsのCenterを上の方にして顔を表示

それでビルドしたら無事でた・・・疲れた・・・

Unityでは目がおかしかったのに実機ではちゃんとしてる

全く表示されなかったVroidMobileで作ったキャラは全てのメッシュでRoot Boneになにも入ってなかったので、Rootを設定したら表示された

 

アプリアイコン

ここで設定しても反映されなかった

XcodeのImagesでVisionOS>visionOS App Icon

設定

この設定は以前やったのと同じ。1024x1024

bibinbaleo.hatenablog.com

 

ライト

テンプレートプロジェクトにURP/LitのCubeを追加したが暗い

Q&Aによると

visionOS シミュレータで、[デバイス] -> [すべてのコンテンツと設定を消去] を使用するか、別の環境 (たとえば、博物館 (日中) とリビング ルーム (日中) など) に切り替えてみてください。

だって。明るい環境に変えたが変わらなかった。

まあ実機で明るくなるならいいのかな・・・

 

ライトについては

visionOS 自体はイメージ ベースのライティングのみを提供するため、PolySpatial には、Unity で利用可能なライティング機能のサブセットを提供するシェーダー グラフで利用できるライティング ソリューションが含まれています。PolySpatial Lighting Node は、指向性ライトマップ、ライト プローブ、および最大 4 つの動的ライト (ポイント、スポット、または指向性) をサポートします。

だって

docs.unity3d.com

シェーダーグラフを使ったことがないのであんまり使い方が想像できない。

つまりライトじゃなくて、オブジェクトのシェーダー側で明るさなど何とかするということか?

 

初めてShaderGraph触る。Create>ShaderGraphからURPを選んだ。Blankでも良かったかも・・・

OpenShaderEditor

こんな画面

右クリックのCreateNodeでPolySpatial Lighting Nodeを選ぶ

適当にOutをEmissionに繋げてみた

そしたら明るくなった。このシェーダーをオブジェクトに設定

シーンビューだと白黒でチラつく。実行したらこんな感じ

そしてシミュレーターで見たらこう

シーンビューとゲームビューの実行した時とシミュレーターで見た目違いすぎる・・・

左の球がシェーダーグラフで作ったもので、右がURP/Litに同じ色を指定したもの

シェーダーグラフの公式の解説

docs.unity3d.com

UnityJapanの動画を見て勉強してもよさそう。2D向けだけど関係ないかな?

www.youtube.com

Udemyには英語の講座しかない

www.udemy.com

XCodeのエラー

そんなことしてたらなんかXcodeでエラーが出てビルドできなくなっちゃった;;何もしてないのに〜〜〜

/Users/Desktop/visionOSTemplate-0.6.2_n/Build/MainApp/main.mm Build input file cannot be found: '/Users/Desktop/visionOSTemplate-0.6.2_n/Build/MainApp/main.mm'. Did you forget to declare this file as an output of a script phase or custom build rule which produces it?

main.mmなんてビルド成功してたプロジェクトでもなかったぞ。

UnityでBuild書き出ししてたフォルダの内容を消して、もう一度ビルドしたらエラー出なくなった。

いつもReplaceを選んでたから、勝手に内容消してくれてるかと思ったが、そういえばXcode側で設定したアイコンとか残り続けてるから、中身消去されてなかったのかな

bibinbaleo.hatenablog.com

UnityでVisionPro開発できるようになった!!!【テンプレート、サンプルビルド】

ついにUnityでVisionOSの空間を使ったアプリが作れる!!

discussions.unity.com

Unity のvisionOS ベータ プログラムは、Unity Pro、Unity Enterprise、および Unity Industry のすべてのサブスクライバーが利用できます

なのでUnityに課金している人向け。

以前はWindowのアプリしか作れなかった。

bibinbaleo.hatenablog.com

これが公式の手順書

docs.unity3d.com

一から作るのと、テンプレートから作るのと、サンプルプロジェクトを見る3つの方法が解説されてるっぽい

一から作る(失敗)

初期設定

一から作るページをもとに初期設定

docs.unity3d.com

Unity2022.3.10を使う。Unityのバージョンの要件がどこに書いてるかわからない・・・

あった

docs.unity3d.com

Unity2023.3.11以上。3.10だとMRモードでビルド失敗した

3.14が最新だったのでそれにした

iOSとvisionOSのプラットフォームがいるらしい。

URPがおすすめで色空間はLinear

PlatformをVisionOSにする。Windowsだと出来なさそうだったのでUnityでの開発もMacじゃないといけないのかな?

これをインストール

com.unity.xr.visionos

Inputシステムが変わるらしい。0.5.0が入った

XRplug in managementをInstallして

AppleVisionOSにチェック

アプリのモードを選べる!

MixedRealitモードにはPolySpatialが必要

VRモードでビルドしたらxcodeprojファイルができて、それをRunしたらシミュレーターでこんなのが出てきた

そしたらこんな感じでLoadingウィンドウが真ん中に出て、背景でUnityの空間が出た。

Loadingのウィンドウは動かせるけど、背景は視界固定でくるくるしても動かないし、うまくいってなさそう。

画面固定のuGUIを置いてたせいかな?

Unity UI はワールド空間で動作しますが、スクリーン空間 UI やマスキング、シャドウイングなどの高度なビジュアル機能は現在動作しません。以下の表は、他の UI 機能のサポート ステータスをまとめたものです。

ワールド固定のものしかサポートされてない。それはそう

docs.unity3d.com

PolySpatialでMRモード(失敗)

これらを入れる

com.unity.polyspatial

com.unity.polyspatial.visionos

com.unity.polyspatial.xr

最後のを入れた時にこれが出てきた

パーソナル状態でやってた。

com.unity.polyspatial.visionosとcom.unity.polyspatial.xrが消された;;

課金ライセンスにし直して上の二つを入れ直した

そのあとシーンで

  1. Create a Volume Camera in your scene
    1. Open the scene tooling / XR Building Blocks Menu and click Volume Camera
    2. Create an empty GameObject and add a Volume Camera component
  2. Configure the volume camera for bounded or unbounded mode and adjust the dimensions
    1. Dimensions will adjust the rendering scale of your content
    2.. For bounded apps make sure something is visible within the dimensions of the volume camera

をしないといけないらしい。

Open the scene tooling / XR Building Blocks Menu and click Volume Camera

がわからない

ここに書いてあった

docs.unity3d.com

Building Blocks オーバーレイを開くには、Scene ビューのハンバーガー メニューをクリックし、[Overlay] メニューをクリックします。または、マウスをシーンビューの上に移動し、「チルダ」キーを押します。その後、Building Blocks オーバーレイを有効にするだけです。

???見当たらない

とりあえずわかる部分やった

空のオブジェクトにVolume Cameraをつける

そしてCubeをそこら辺に置く。Volume Cameraの値の中に描画されるのかな?

でもどの範囲とか表示されない

Unity2023.3.14でやったら表示された

あと設定でPolySpatialのEnable PolySpatial Runtimeにチェック

これでビルドしたがUnityで失敗した

 

こちらの記事見てVolumeCamera_Boundedというのを作って、Volume Cameraにセットしたが関係なかった

1planet.co.jp

ちなみにVolumeCamera_BoundedはCreateからできた。スクリプタブルオブジェクト

上の記事を見てたらUnity2022.3.11以上って書いてたので最新のUnity2022.3.14にしてビルドしたらビルドできた!

Unity-VisiionOS.xcodeprojというのができてる

そちらを選んだが、BuildTargetにシミュレーターが表示されなくなった;;

記事を参考にSuportedPlatdormをxrosからVisionOSにしたら表示された〜〜

sasami-daifuku.com

でも失敗した;;

 xcodeを色々触ってた時に見つけた

サンプルシーン

サンプルシーンの解説はあるがサンプルがどこにあるか書いてない!!

docs.unity3d.com

Package managerのPolyspatialにあるかなと思ったらあった

色々あるんだね〜

ピンク・・・

色空間がガンマになってたせいかな

リニアにしたが変わらなかった。

ビルドしたが失敗

次の章でやるテンプレートプロジェクトにインポートしたらちゃんと表示された。URPの問題か?

これでビルドしたら動いた!

ARkitを使うものは実機じゃないと動かない

BalloonGallery バルーンを割る。パーティクルが見れる

CharacterWalker:キャラクターが歩いて指定した場所に移動する

InputDataVisualization

Manipulation:オブジェクトを動かす

Mixed reality 平面推定して垂直か水平かどうかとかがわかる。これは実機のみ

SpatialUI

ImageTrackingのサンプルもあった。実機のみ。Lab行く時はマーカー準備しよう!

あとAppleVisionOSSampleの中にも別のサンプルがあった

平面推定とかやってそう


テンプレート(★成功)

テンプレートなるものをやってみる

docs.unity3d.com

最新の0.6.2

3.11で作られてる。

3.14で開いた。サンプルシーンが二つ

これを今回はBuild&Runしてみた。

そしたらシミュレーターでやっと開いた!!

Expand Viewを押しても何も反応しないが、キューブとかは引っ張ったら動く

Unboundedの方のシーン

こっちはVolumeじゃないので丸ごと動かすとかはできないっぽい?

 

Play to Device(失敗)

Playを押したらVisionOSのシミュレーターや実機ですぐに実行されるやつがある

 

docs.unity3d.com

Xcode.appをリンクからダウンロードして、

シミュレーターにドラッグで入る

IPアドレス表示される

Unity側でPlay to deviceを開く

IP入れてチェック入れる

これで実行したがシミュレーター側に変化はない;;

ビルドうまくいったテンプレートプロジェクトでもやったけどダメ・・・

サポート

Unityのどの機能をサポートしているかの表。

docs.unity3d.com

Line Rendereとか色々サポートされてないものが多い

ツイート

VRMは表示できるらしい

その他

UnityのPlayerSettingの書き出し設定にSimulatorSDKとDeviceSDKがある

Timelineで初手のアニメーションで顔がまっすぐじゃないとLookAtで目線が合わない

Timelineでキャラのアニメーションとカメラ目線のLookAtオンオフを制御しているのだが、Timelineの初手のモーションで顔が下を向いてると、そのあとLookAtをオンにしたときにその最初の顔の方向に引っ張られているのか、カメラより下を見てしまう

ブログ用に別のプロジェクトで再現させようと思って、独自のLookAt関数で試したら再現しなかったので、LookAtを制御しているコードの問題かも

とりあえず、最初の1フレームをまっすぐポーズのアニメーションにして、その間モデルを非表示にするという力技で回避した

 

BlenderでAutoRigProを使ってリギング→Unityで動かす

これを使ってみる。40ドル

blendermarket.com

こちらの記事を参考に

cgbox.jp

準備

Blenderの設定からアドオンとして上二つを追加

チェック入れる

Blenderソフトを新規で立ち上げるたびにアドオンは無効化されるので、一度有効化してシーンに何もない状態でファイル>デフォルト>スタートアップファイルを保存をしておくと便利

VRM

あと参考記事と同じようにVRMモデルをインポートできるアドオンも入れた。VRMモデルならボーンデータは言ってるからこれ使うことたぶんないと思うが、ブログ用にいいお試しのデータを用意するのめんどいので・・・

github.com

きれい

ちゃんとMtoonが使われてるんだ

リグ入れ

Nキー>ARP

体と顔を選んで、AutoRigPro:SmartからFullBodyをOK

(※Vroidモデルはこれでいいが、もっといろいろパーツがあるモデルは、顔・首・手・脚・靴・体の形が出ている衣装のメッシュなどを選ぶ。髪の毛やスカートなど体のボーンの位置や形に関係ないメッシュは選ばない。ボーンの位置関係に関係ありそうなものを全部選ぶ。

そのあと一つずつ選んでいく!(ここ自動じゃないのか・・・)

Goでアーマチュア完成

Match to Rigでリグコントローラーというのができたらしい。こんなの初めて見た

スキン

エンジンをVoxelizedにして、Unity用なら体積を維持のチェックを外す

そして体と顔とリグコントローラーを選んでBind。

(※この時は体と顔だけ選んだが、本当は全部のメッシュパーツを選んだほうが良い

なんか出た

これでスキニングされた。リグコントローラーを動かすと追従する

 



そのあと元の記事では髪の毛のウエイト?を手動で付けてたけどうまくいかない・・・

 

こちらの記事のように、髪の毛とRigを選んでBindを再びやったら追従した

styly.cc

 

Unityへ書き出し

エクスポートからAutoRigProFBX

UnityとかUnrealEngineとか選べる。Humanoidにした

Godotも選べるのか!

 

書き出されたfbxを読み込む

テクスチャがない・・・

マテリアルはfbxからUnityの画面で生成できたけどテクスチャは無理そう

テクスチャを同じ階層に置いてインポートしたら行けるかと思ったが無理だった

zenn.dev

手動でつけた。まあここは主題じゃないからね

モーションを付け

fbxファイルを選んでHumanoidに設定する必要があった。Blenderの書き出しでHumanoidを選んでてもUnityのデフォルトがHumanoidになるわけではないっぽい

そして適当なモーションで動かす

首が変

緑はVRoidからのVRMモデル

首の位置の指定がおかしかったのかな?

指なにも設定してないけどいい感じっぽい

首以外は良さそう

 

cgbox.jp

失敗メモ

Vroidじゃない別のモデルで何度もAutoRigを使って起きた失敗メモ

・Unityに読み込んでHumanoid化したとき、足のボーンが片方だけ参照が外れている。対応ボーンはあるので手動で入れなてApplyを押しても、アニメーションさせると足が変なまま。

 

Unity版AutoRigPro

同じ名前のUnityAssetsがあった。Blenderのアドオンとは作者違いそう

assetstore.unity.com

無料版

assetstore.unity.com

ドキュメント

www.autorigpro.com

uLipSyncで事前録音した音声からTimelineでVRMモデルを口パク

uLipSyncを久しぶりに使う

bibinbaleo.hatenablog.com

2年ぶり!

準備

Unity2022.3.7

uLipSync 3.0.2

PackageManagerでいれた

https://github.com/hecomi/uLipSync.git#upm

github.com

サンプルもタブから入れる。CommonとVRMとTimeline

VRM

サンプルシーンを動かす

VRM1.0

実行したら動いた

VRMにAudioSourceと、uLipSyncのスクリプトと

ExpressionVRMというファイルがついてる

VRM0.Xのほうは、ExpressionVRMじゃなくてBlendShapeVRMがついてる

自分のモデルがVRMバージョンどっちかわからない。

0.Xのほうでやったら動いた

uLipSyncUpdateのところで参照するものを自分自身のBlendShaprVRMモデルに変える

 

試しにExpressionVRMコンポーネント(VRM1.0用)を付けたらこれは1.0じゃないって言われた。最近VroidMobileで作ったばっかりのモデルなのに1.0じゃないんだ

 

音声録音

Windowsのボイス録画ソフトを使う

Windows11からサウンドレコーダーという名前になった。前はボイスレコーダーだった気がする。

デフォルトだとm4a形式で録音された。これはUnityに取り込めない。

設定でレコーディング形式をmp3に変更できた。

これで適当にしゃべった

そしてサンプルのAudioSourceのAudioClipに入れたら、ちゃんと喋った通りに動いた

Timeline

Timelineのサンプルのほうは、事前に計算したデータを使っている。

uLipSync用のトラック追加

Trackの中のClip?の設定。ここにBakedDataを入れる

モデルにもタイムライン用のコンポーネントがついてる

Bakeデータは、右クリックCreateから空のBakedDataを作って

そのインスペクタ内でプロファイルとAudioClipを選んでBakeして作れる

そしてタイムラインに組み込んだら自分の音声で動いた!

VRMではこんな感じ

 

Animationデータ

今の本番環境だとuLipSyncアセットがエラーが出てなぜか動かないし、動いたとしてもWebGLビルドの時にもエラーが出てた気がするから、別のきれいなUnityProjectでAnimationデータとして口パクを書き出せないかな~と思ったらなんとその機能もあった!すごい!

tips.hecomi.com

AnimationBakeサンプルで見れる

本当にアニメーションになってる!シーンのモデルについているuLipSyncコンポーネントを消しても動く!

自分で作るにはここからウィンドウを出して

いろいろセット

したけどエラーが出てCreate output directoryで止まってしまう

エラーにはThe variable skinnedMeshRenderer of uLipSyncBlendShapeVRM has not been assigned.と書いてある。

uLipSyncBlendShapeVRMにはskinnedMeshRendererをセットするとこないんだけどな~

使えないのかな;;

あとこのプログレスウィンドウを消すすべがUnityごと消すしかないのがつらい

元からついていたVRMモデルで試してもダメで、Unityちゃんで試したらできたのでやっぱりuLipSyncBlendShapeVRMのせいっぽい

 

追記

VRMでのやり方の記事を書いていただけました!!

tips.hecomi.com

uLipSyncBlendShapeVRMははずして、uLipSyncBlendShapeをつけ、Faceを選び以下のようにする

一回これ試したとき、BlendShapesに新しい項目を追加しても、BlendShapeのところに何も出てこなかったので、使えないのかなと思ったが、項目追加した後にもう一度Face以外のBodyとかにしてFaceを選びなおしたらいろいろ候補が出てくるようになった

これで作ったらエラーをはかずAnimationClipができた!

できたAnimationClipをTimelineに設定したらうごいた

Animatorの中に生成された口パクAnimationを設定しても動く

別プロジェクトへ

同じモデルに対して別のUnityプロジェクトで口パクアニメーションを作って、本番用のUnityプロジェクトにAnimationClipだけ持ってきて動くのだろうか?

動いた!!!!

しかも別のモデルでもVRM同士だからなのか同じBlendShape名?だからなのか適用した!やった~

もともと本番プロジェクトのほうのキャラは手動のキー打ちで口パクとか表情を付けていたので、口に関するキーは消して、持ってきた口パクアニメーションをTimelineに追加したら完全にぱくぱくした!

 

Mtoonの陰と影

ShadeColor

Mtoonシェーダーを使ったキャラクターで、ShadorColorを設定してもモデルに色が反映されないことがあった。試しに濃い色にしても出ない

DirectionalLightのIntensityを1から下げたら見えるようになった。

Unity2021.3.20のガンマ環境で起きた。

今2022.3.7で別のモデルでやっても起こらないな~モデルのせいなのかな?

ちなみに下の画像はガンマ

こっちがリニア

かなり色合い違う。

モデルに落ちる影の動きが汚い

これも今の環境とモデルで再現しないのだが、キャラにアニメーションさせたときにモデルの陰の動きが汚かった。

解決策としてモデルオブジェクトのReceiveShdowをオフにしたらよかった

陰だと思ってたのは影だった

これをオフにしても、Mtoonの陰は出る。そっちは別に動きによって汚くなることもなかった

モデルが落とす影

これはMtoon関係ないが、モデルが地面に落とす影が汚いときは、QualityのShadow Distanceの数字を下げるときれいになる(遠くの影が描画されなくなるが)

 

Timelineがっつり使った

Timelineを久しぶりに使う。

過去にも2回ぐらい使ってた。記憶になかった

bibinbaleo.hatenablog.com

bibinbaleo.hatenablog.com

アニメーションClip切り替え

Timelineを使いたいと思ったきっかけが、Animatorでモーションをどんどん切り替えていっていたけど、子のモーションは何秒みたいなのを設定するのがくそめんどかった。

スピードや遷移のExitTimeなどをいじってやろうとしたがうまくいかないものもあった。

Timelineではキャラクターをタイムラインに入れてAnimationみたいなのを選ぶ。

そしてAdd From Animation Clipでクリップをダブルクリックで選ぶ

Animatorがついている場合、Timelineのほうが優先されて、Timelineの内容が終わったらAnimatorの内容が途中から再生されてた。

時間とかはそのままにAnimationClipファイル自体を変えることもできた!

テキストを変える

Timelineでキャラクターのアニメーションの遷移によってuGUIのテキストの内容を切り替えたい。

TimelineにuGUIのテキストオブジェクトを追加してみたが、テキスト内容を変えるような選択肢は表示されなかった。

そんなに表示するテキストの種類が多いわけじゃないので、いったんテキストオブジェクトをセリフの個数分作ってActivationを切り替えるようにした

blog.sherpatimes.biz

DefaultPlayerbleという公式のアセットを使えばTimelineでテキスト内容を変えれるみたい

assetstore.unity.com

入れたら確かに設定できる項目が増えてる!

でもレガシーのテキストしか使えなかった;;TextMeshProは使えない><

TextSwitcherTrack

BlendShape

当然公式にBlendShapeをいじる機能はない。

カスタムして制作されている方がいた!

zenn.dev

スクリプトを使わせてもらったがエラーが出る

別の方も配布されていた。

maron.fanbox.cc

UniVRMのインポート(バージョンは0.xxxです、1.xxxでは動きません)って書いてたから、バージョン確認したけどまだ1.xxxは出ていない?

github.com

こちらからunitypackageを入れたがこっちもエラーが出て動かな><

github.com

UniVRMが0.XXじゃなくてVRMが0.xxxみたい

VRMのバージョンって何だっけ・・・

fbxをuniVRMでコンバージョンしてVRM化したとき、uniVRMがVRM1.0に対応してたら自然にVRM1.0になるのか?

www.moguravr.com

 

結局アセットなど使わなくても、普通にAnimationClipとしてBlendShapeの値を変更できた。

キャラにつけたTimelineのWindowをロックで固定。

その状態でFaceのメッシュなどBlendShapeがついているメッシュを選んで、AnimationTrackを追加して、あとは録画状態にしながら、Animationウィンドウで値を変更していく。

AnimationウィンドウはTimelineと連動しているので、Animationウィンドウで時間を動かすとTimelineも進んでいくので演出やモーションを確認しながら、表情付けができた

スクリプトと連携

セリフをしゃべっているときはカメラのほうを向くのと口パクをするようにしたい。LookAtコンポーネントを付けているがコンポーネントをオンオフする機能はデフォルトだとなさそう

公式チュートリアルにコンポーネントを制御するってあるけど私の思っている意味じゃなさそう

learn.unity.com

Signal

Signalというものを使えば特定のタイミングで特定のコンポーネントの関数を実行できそう

blog.unity.com

www.ame-name.com

なんでもいいけどオブジェクトをタイムラインにAddSignalTrackとして入れる

するとそのオブジェクトにSignalReceiverがつく。

SignalAssetというのをCreateSignalなどから作る。名前を付けて保存する。

Timelineに発動させたい場所にSignalAssetを配置。

SignalReceiverでなんかいい感じに設定するとSignalがきたとこで設定した関数が呼び出される

 

これを使えば上のほうでできなかったTextMeshProのテキスト内容を変えることもできるじゃん!って思ったけど、消えるタイミング操作できないし、2回目呼び出したはずが適用されなかったりうまくいかない・・・

 

マーカーを自作することもできるらしい

tsubakit1.hateblo.jp

この記事の中でもテキストを変えるマーカーを作っている。このスクリプトのText部分をTextMeshProにしたら使えそう。でも消すタイミングとか調整できなそうだしいいや。

 

あとLookAtコンポーネントもMonobehaviorを継承していないせいかよくわからないがEventのUIからは参照できなかった

しょうがないので自分でオンオフするスクリプトを書いてそれを呼び出すようにした。

    public LookAtIK lookAtIK;
    public void EnableLookAt(bool bl){
    lookAtIK.enabled = bl;

 

これで無事できた!

マーカーをTimelineで複製するとき、複製したい場所にバーを合わせておいて、他の場所のマーカーをCtrl+C,Ctrl+Vしたらバーの場所に複製されて便利

Playable Behaviour

PlayableTrackで専用のスクリプトを作ってなんかいろいろできるみたい

xr-hub.com

Timelineをループ

Timelineをループさせたり、Timelineを任意のタイミングで実行したい。

任意のタイミングで実行するのはTimelineを作る時にできたPlayableDirectorをスクリプトからオンオフしたらよさそう

そしてこの中のWrapModeでLoopが選べた

initialTimeはスタートした時にTimelineのどこから始めるか。

docs.unity3d.com

ちなみにTimelineの右上の歯車から秒数表示にできた。最初フレーム数表示だったのでわかりにくかった。

座標系

とあるオブジェクトの子オブジェクトとして、Timelineを設定したモデルを置いて実行すると、角度が自分の置きたい方向じゃなくなる。

tsubakit1.hateblo.jp

TimelineのAnimationTrackの一番左をクリックすると、何やら設定できる

これでApplySceneOffsetにすると、自分でヒエラルキー上で最初に設定した角度で始まった。

モーションの開始位置変更

他のモーションと組み合わせたとき、Tinelineに入れたmocopiのモーションの開始位置がぴゅーんて遠くに行ってしまう。(アニメーション内で一の変化は欲しいのでRootMotionはオン状態にはしたい)

Timeline内のモーションをクリックしてインスペクタのAnimationPlayableAssetのPositionを変更したらオフセットみたいなのがかかる。微調整して前のもモーションと同じ位置にした

Animationのループ

TimelineのAnimationをクリックしたインスペクタにLoopの設定があった。デフォルトはUseSourceAssetとある

これだと元のAnimationClipの設定でLoop設定してたら、トラックの時間を広げたときにループする。

TimelineのほうでLoopすることもできる。でもこれでループさせると切り替わりがきれいじゃなかった

パーティクルのオンオフ

パーティクルのオンオフはActivationTrackじゃなくてControlTrackを使う必要があった

パーティクルをドラッグでして、SourceGameObjectにパーティクルが入ってることを確認

 

ホログラムシェーダー

セールで無料になってたホログラムシェーダー

assetstore.unity.com

一つのシェーダーでいろいろ表現していた

かっこいい

VRoidモデルでいい感じにできないか試したがむずい

VroidMobileでアバター読み込むときこういう表示になるのを真似したい。

よく観察したら多分これ、読み込むモデルを子のシェーダーで表現してるんじゃなくて素体的な服を着てない共通モデルをこのシェーダーで表示してるな。

 

やってみた。いい感じ~顔と福のメッシュは非表示にした

ちなみにガンマ設定のUnityプロジェクトで同じ設定をしたら全然違う見た目になった

docs.unity3d.com

 

昔も別のアセットでホログラム風のことした

bibinbaleo.hatenablog.com

 

UnityとVisionOS

PolySpatial

空間をフルに使ったあぷりをUnityで作るにはPolySpatialが必要らしい

www.moguravr.com

ここからベータプログラムに申し込むと使える

create.unity.com

あんまり話聞かないのでまだ誰も招待来てないのかと思ったがMESONさんは最近来たみたい

でも6月7月から募集しててMESONさんでも来たのが10月だから結構ゆっくりそう。

私も申し込んだ

ドキュメントページ

docs.unity3d.com

 

 

Windowd

Unity2022ではWindow状態ならVisionOS向けにビルドできる

この記事を参考にやっていく

note.com

iOSとVision OS Build Supportのモジュールを入れる

適当にボタンだけ置いたシーンを作る

SwitchTargetしてBuild

Buildページにあったリンク。あんまり内容はない

docs.unity3d.com

 

XcodeはXcode15 beta2じゃないといけないらしい。公式ではどこにも書いていない?

古い情報だから変わってないかな〜と思ってダメもとで元々入れてたbeta8でビルドしたけどダメだった;;

ググったらUIKit関連でなんか使えないらしい。じゃあバージョン違いのせいじゃないのかな?

developer.apple.com

と思ってボタンじゃなくてCubeを置いたシーンにしてみたがダメだった。

 

しょうがないのでbeta2をインストールする。

ふたつのXcodeのバージョンは共存できるらしい

qiita.com

ここからbeta2ダウンロード

https://developer.apple.com/download/all/?q=Xcode

.appの名前変えた

UnityでビルドしたXcodeのファイルを開くときに2の方を開く

VisionOSのシミュレーターはXcodeのバージョンが違うとそれぞれで入れないといけないみたいで、ビルドする前にVisionOSのインストールをした

そしてビルド!

できた!!!

ボタンクリックも反応した

でもハイライトはマウスオーバーしても反応しない

safariとかだとマウスオーバーしたら色々反応するのにな〜

デザインの動画でマウスオーバーが視線当たったのと同じ役割で、視線が当たった時はフィードバックしましょうって言ってたから、反応して欲しかったのに〜どうしたらいいんだろう

 

ーー

10/4時点の情報。UnityWindow版がないからよく分からないが、PolySpatialはbeta8らしい

 

 

mocopi【Cluster、Unity】

mocopi

先輩のmocopiを触らせていただいた

キャリブレーションは1歩前に足を出すという方式だけど、4回ぐらい失敗した。

最初じっとしていないといけないけど、なんか動いちゃうせいかも。

アプリの画面をのぞき込もうとしてしまう。

 

一度キャリブレーションが成功したらいい感じ

ローカルに保存するモードと、転送するモードがある。

ローカル保存したデータはbvhファイル形式。

アプリで表示もできる

Googleドライブとか経由でPCにいれて、blenderでfbxに変換したらUnityで使える。

qiita.com

もっと簡単に変換できればいいのに・・・

変換スクリプトを公開してくださってる!

qiita.com

 

ファイルも名前がつけれないから、どれが使いたいモーションファイルかなかなかわからない。

 

 

 

Clusterと連携

Clusterと連携できる

https://help.cluster.mu/hc/ja/articles/16937773108377

mocopi側の設定で送信フォーマットをVRChatにする

PCVRでClusterに繋いでキャリブレーションルームに入る。(QuestをPCVRとして繋ぐのがなかなかうまくいかなくて大変だった・・・)

OSC Trackerの設定をして、全身トラッキングをオンにして、キャリブレーションしたらうまくいった

足と腰だけmocopiが使われるっぽい。

全身トラッキングされていることを示すいいポーズが片足揚げしか思いつかない・・・

そして足が動くからなんなんだという感じになってしまった。

VRchatでも使える

www.moguravr.com

VRChatの設定でOSCって検索してオンにした

だがそこでQuestのAirLinkが切れてやめた。

まじでAirLink安定しない〜〜

Unity

公式のPluginがある

www.sony.net

Pluginにサンプルシーンが入っている

サンプルシーンをUnityEditorで動かしても、モーション受信しなかったけど、Windowsビルドしたら動いた!

 

自分のアバターで動かす場合

www.sony.net

Animatorがついている階層にMocopiAvatarコンポーネントをつける。

MocopoSimpleReceiverプレハブを置いて、AvatarSettingsにアバターとPortをいれるだけ!

 

あとは同じようにビルドしたら動いた!!

楽しい~~~~

youtu.be

3d.nicovideo.jp

UnityEditorへの配信が動かないのは以前もフェイストラッキングであった。なんなんだろうね〜色々ファイアーウォールの受信設定とか変えてみてるんだけどな〜

 

sonyのサイトにbvh senderというソフトがあった。

www.sony.net

なんか便利になるのかな〜と思ったが、スマホで録画したbvhファイルをPCに入れて、それをリアルタイム配信できるっぽい?

Mplus1には♪マークがない。Mplus1pにはある

UnityでMPlus1フォントをTextMeshProのアセットに変換して使っていたが、♪マークがない!

Custom CharacterListにはちゃんと入れてるのに

生成時にも確かにExcluded charactersにいっぱい数があるのでもともとのフォントの中に入っていないようだ

 

Windowsだと文字コード表という元から入っているソフトを使うと

土の文字が入っているか一覧で見れる

詳細表示から検索もできる。

これでいくつか♪マークが入っているフォントを探したが全然ない。

 

でもGoogleFontのM+だとあったんだよな~って思ってもう一度調べるとよく見たら、1pにはあるけど1にはない!

そうなんだ~ということで1pのほうをダウンロード

fonts.google.com

これでフォントを作り直したら♪は表示されたけど、他のひらがなとかもなんか微妙に違う。もとの1のほうが良かった・・・

どうしよう~

って思って思いついた!!

1pで♪だけFontAssetsを作り、

それを1のFallbackにいれたらいいんだ~~

これで解決!

techoh.net

3D Gaussian Splatting とUnity

最近話題になってる

 

32枚でできるの!?

 

フォトグラメトリしかちゃんと触ってないから、NeRFのこともよく分かってなかったのに、また新しいのが出てきた。

chizaizukan.com

メッシュを作るわけじゃなくて、専用の見え方のなの??

その技術専用のビューワーが必要なのかなと思ってたけど、Unityでも見れるらしい

 

zenn.dev

私も上の記事の通りに動かしてみた。

DX12がいいらしい。DX12が何かわからなかったけどDirextXのことだった。

調べたら私のノートPCは12だった

support.microsoft.com

記事の通りにやったらできた

github.com]

実行しなくてもデータがSceneに表示される

近づいてこれは一体どういう状態なのか見るがよくわからない。私の知っている質感のどれにも当てはまらない

なんか幻想的な絵が撮れそう

元データにあるのか知らないけどベンチの下側もちゃんとしてた

ここでCreateAsstsのところでQualityを選べることに気づいた。デフォルトはMediumだった

VeryHighとVeryLowを作ってみた

パッと見そこまで印象変わらないが、影の線とかがVeryHighだときれいに出ている。カメラ操作するときの重さも違う。

 

Inspectorでいじれるスライダーを動かしたらなんと点群になった!!点の大きさが変わって最初のちょっと輪郭がボケたような表現になる

ピクセルアートみたいな表現もできた

それぞれの元データ?

よくわからない状態

最後に

まだいまいち理解してないけどみんながすごいって言ってるからすごいんだろう〜

あとこの技術とは関係ないけどPolycamで広範囲をフォトグラメトリしてClusterにアップしている方がいた。こんなすぐできるんだ。私もやろう

 

おぐりんにVRで会いに行く

MMD

定期的に「オグリキャップ」でTwitter検索してフィギュア情報やファンアートを見ている。

その中でアプリのホーム画面の3Dモデルを作っている方がいた。あとオグリんの3Dモデル!

 

VRでオグリキャップみたいな〜と思って配布ページに行ったら、すでにお気に入りしてた。

3d.nicovideo.jp

「ポーズ03」 / ShiniNet さんの作品 - ニコニ立体

私会いに行ったっけ??LookingGlassで表示したんだっけ?

VRで見たか記憶がないな〜

利用規約

commons.nicovideo.jp

・ユーザーが本モデルをMMD及び、DCCツール(Blender、Maya、Cinema4D等)、ゲームエンジン(Unity、Unreal Engine等)といった関連ソフトウェアに読み込み静止画や映像作品といった二次的著作物を制作し、それらをSNSや動画共有サービス等へアップロードすることを許可します。

おお~Unityについても書いてくれているのありがたい!

 

ちなみにこちらの学園はMMD系のソフト以外では使わないでくださいって書いてた

禁止

(4) 「Miku Miku Dance」、または「PmxEditor」等の関連ソフト以外での使用

3d.nicovideo.jp

Unity

今もMMD4Mechanimしかないのかな?

とりあえず変換した!

かわいいいいいいいいいいいいい

VRで見る

VRで見る方法ググったら自分の記事が出てきた

bibinbaleo.hatenablog.com

XR Plugin ManagerからOculusをオンにした

そしてConvert Main Camera~~

そしてQuest2をつないで実行したらUnityの画面がQuestに映ったけど、右目でキャラクターが描画されていなかった。

 

シェーダーを変えるか[Stereo RenderingMode]を[multiPath]に切り替えるらしい。

redhologerbera.hatenablog.com

あった

これでQuestをPCにつないだらVRで見れた!

イキイキ

VRで見れたけどなんかあんまり感動ないな・・・

アニメーションつけて、カメラのほう向いてもらって、耳をモフモフしたい

アニメーション

今もとりあえずキャラクターにモーションをつけるとしたらユニティちゃんのアニメーションデータなのかな?

unity-chan.com

モデルはHumanoidにしておく

wait00のポーズ、オグリンのポーズっぽい!

boothにあったダンス

booth.pm

こちらもかわいい

booth.pm

LookAt

このスクリプトでカメラのほうを見てもらえた

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

public class LookAt : MonoBehaviour
{
    public Transform target; // インスペクターでセットするターゲットオブジェクト

    public Animator animator; // Animatorコンポーネントへの参照

    void OnAnimatorIK(int layerIndex)
    {
        if (target != null) // ターゲットが設定されているかチェック
        {
            animator.SetLookAtPosition(target.position); // ターゲットの位置を設定
            animator.SetLookAtWeight(1.0f, 0.8f, 1.0f, 0.0f, 0f);// ターゲットへの向きの重みを設定
        }
    }
}

こちら参照

nn-hokuson.hatenablog.com

AnimatorでIK Passにチェックを入れる

見てくれるようになったけどまだ実在感ないな~

踊るときもずっとこっちを見てくれる

表情が変わらないからかな。手動で変更することはできる

まばたき

過去の記事を見てたら瞬きさせてた。

bibinbaleo.hatenablog.com

こちらのスクリプトを使えた

udasankoubou.blogspot.com

これで耳もぴくぴくさせるようにした!いい感じ~

MMDのモーション

表情を変えるにはMMDのモーションデータを使えばいいのかな~と思って探してみた。

うまぴょい!!

www.nicovideo.jp

変換するときに同意を押した後VMDを設定する。あとから再設定できた

ん~表情変わらない

ググった

simplestar-tech.hatenablog.com

このスクリプトをつけてAnim Failにモーションデータを設定して、一番上のAnimNameに同じモーション名を入れる

これで表情変わった!

耳などをモフモフする

この記事通りにMMDにコライダーをつける

bibinbaleo.hatenablog.com

そして手となるコライダーに以下のスクリプトをつける

いったん適当なSphereにつけて動かしたらちゃんと髪とか耳が動いた

コントローラーの位置を取得するには空のオブジェクトにTracked Pose DriverのスクリプトをつけてDeviceとかPoseSourveを以下のように設定する

これの下にさっきのSphereをつけたら動いた!

youtu.be

手が真ん丸なので自分はドラえもんになったんだと暗示をかけたがやっぱり少し違和感あるな~

デフォルトのUnityの機能だとさすがに手のモデルを表示するのは無理そう。

コントローラーモデルを用意するか、手を用意したほうがよさそう.

 

ハンドトラッキングの手も出せるのか!これよさそう。

tech.framesynthesis.co.jp

note.com

OculusIntegrationで昔手を出したことあるな~

bibinbaleo.hatenablog.com

憑依する

でもめんどくさいので、自分がオグリンになってその手で自分をモフモフしよう!

昔このスクリプトとVRTKを使ってやった

IK.cs · GitHub

bibinbaleo.hatenablog.com

bibinbaleo.hatenablog.com

そろそろFinalIK買ってもいいかもな。今50%オフだった

assetstore.unity.com

でもまあとりあえずデフォルトのIKでやった

VRTKを入れるのがめんどくさかったのでChatGPTに書いてもらったスクリプトでやった

using UnityEngine;

[RequireComponent(typeof(Animator))]
public class IK : MonoBehaviour
{
    public Transform Head; // VR HMDの位置と回転を反映するオブジェクト
    public Transform RightHand; // 右コントローラーの位置と回転を反映するオブジェクト
    public Transform LeftHand; // 左コントローラーの位置と回転を反映するオブジェクト

    private Animator animator; // アバターのAnimatorコンポーネント

    void Start()
    {
        animator = GetComponent<Animator>(); // Animatorコンポーネントを取得
    }

    void Update()
    {
        // 頭の位置と回転を直接設定(IKではない)
        transform.position = Head.position;
        transform.position = Head.position;
        transform.rotation = Head.rotation;
    }

    void OnAnimatorIK(int layerIndex)
    {
        // 右手の位置と回転を設定
        animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1);
        animator.SetIKRotationWeight(AvatarIKGoal.RightHand, 1);
        animator.SetIKPosition(AvatarIKGoal.RightHand, RightHand.position);
        animator.SetIKRotation(AvatarIKGoal.RightHand, RightHand.rotation);

        // 左手の位置と回転を設定
        animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1);
        animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1);
        animator.SetIKPosition(AvatarIKGoal.LeftHand, LeftHand.position);
        animator.SetIKRotation(AvatarIKGoal.LeftHand, LeftHand.rotation);
    }
}
 
Headに設定するのはカメラの-1.5の位置に置いたオブジェクト

これで頭の回転が体全体に影響するけど一応あんまり動かなければ、バレない憑依ができた

www.youtube.com

環境

青い空じゃ没入度が少ない。環境の3Dオブジェクトをおこう〜

無料情報とかを見て購入したけどUnityで表示させてないアセットがいっぱいあるのでそれを使う。

無料の学校アセット。これはBuildInだとピンクで表示されなかった。設定変えないといけない見たい

assetstore.unity.com

この雪村アセットを使うことにした。おぐりんと雪は高相性!

assetstore.unity.com

youtu.be

 

うまぴょい踊ってもらった

youtu.be

www.youtube.com

最後に

ダンスの途中にたまにこっちを向くようにしたり、もっとおぐりんっぽいモーションを探してランダムで切り替わったりするようにしたら実在感ましそう。

あと音も大事かもな~

 

なんか人生で一番最初にHMDでけもフレのMMDキャラクターを見た時の感動が再燃するかと思ったけど、そこまではならなかった。

もう私はVRでキャラクターを見ることに慣れてしまったのだろうか・・・

ParticleSystemで事前に指定した文字を表示する

基本この記事通りにやりました。

coposuke.hateblo.jp

引っ掛かったところメモ

最後のParticleSystemでの設定の、「Tiles を 10x10、Start Frame の右端をクリックし Random Between Two Constants にし、0~92を設定します。」

の部分。

この数字の意味を理解せずそのままやっててちゃんと表示されなかった。

 

TilesのNxNは自分が指定する文字の数によって変わる。

整列させた文字の行×列