前回サンプルシーンやテンプレートプロジェクトを動かすことはできた。
今回は自分のオブジェクト表示など諸々試す。
環境としては、テンプレートプロジェクトからしかビルド成功しなかったので、テンプレートプロジェクトをコピーしてその中でやる。
ちなみに前回は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ゼロより大きい場合、ブレンドは実行されません (アルファ テストのみ)。
エラーを見たら
[診断] SkinnedMeshRenderer のオブジェクトデータの転送に失敗しました - 最適化されたスキン メッシュ レンダラーは現在サポートされていません。
って書いてた
確かにSkinedMeshRendereをオフにしたら顔が消えるのでそのせいかも。
でも服や髪にもSkinnedMeshRendereはついてるんだけどな〜
Q&AにSkined MeshやAnimatorのことを書いてあるので確認した
リグでオブジェクトの最適化のチェックを外す必要があるらしいが、VRMファイルだけを入れた場合って元のfbxないからリグの設定できない・・・
解決!
顔だけRoot BoneがRootじゃなかったので、Rootにしてみて、BoundsのCenterを上の方にして顔を表示
それでビルドしたら無事でた・・・疲れた・・・
Unityでは目がおかしかったのに実機ではちゃんとしてる
全く表示されなかったVroidMobileで作ったキャラは全てのメッシュでRoot Boneになにも入ってなかったので、Rootを設定したら表示された
アプリアイコン
ここで設定しても反映されなかった
XcodeのImagesでVisionOS>visionOS App Icon
設定
この設定は以前やったのと同じ。1024x1024
ライト
テンプレートプロジェクトにURP/LitのCubeを追加したが暗い
Q&Aによると
visionOS シミュレータで、[デバイス] -> [すべてのコンテンツと設定を消去] を使用するか、別の環境 (たとえば、博物館 (日中) とリビング ルーム (日中) など) に切り替えてみてください。
だって。明るい環境に変えたが変わらなかった。
まあ実機で明るくなるならいいのかな・・・
ライトについては
visionOS 自体はイメージ ベースのライティングのみを提供するため、PolySpatial には、Unity で利用可能なライティング機能のサブセットを提供するシェーダー グラフで利用できるライティング ソリューションが含まれています。PolySpatial Lighting Node は、指向性ライトマップ、ライト プローブ、および最大 4 つの動的ライト (ポイント、スポット、または指向性) をサポートします。
だって
シェーダーグラフを使ったことがないのであんまり使い方が想像できない。
つまりライトじゃなくて、オブジェクトのシェーダー側で明るさなど何とかするということか?
初めてShaderGraph触る。Create>ShaderGraphからURPを選んだ。Blankでも良かったかも・・・
OpenShaderEditor
こんな画面
右クリックのCreateNodeでPolySpatial Lighting Nodeを選ぶ
適当にOutをEmissionに繋げてみた
そしたら明るくなった。このシェーダーをオブジェクトに設定
シーンビューだと白黒でチラつく。実行したらこんな感じ
そしてシミュレーターで見たらこう
シーンビューとゲームビューの実行した時とシミュレーターで見た目違いすぎる・・・
左の球がシェーダーグラフで作ったもので、右がURP/Litに同じ色を指定したもの
シェーダーグラフの公式の解説
UnityJapanの動画を見て勉強してもよさそう。2D向けだけど関係ないかな?
Udemyには英語の講座しかない
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側で設定したアイコンとか残り続けてるから、中身消去されてなかったのかな