この記事はVCIアドベントカレンダー2020の参加記事です
内容を三行で
- できる範囲でやりたいことを実現しよう!
- 今回はunityでの設定でできないことをご紹介します。
- 3つに分けたので今後の記事も参考にしてね
敵を知り己を知れば百戦殆うからず
ネガティブなことを言うなと言われるかもしれませんが、何ができないか予め把握した上で、やりたいことを実現する方法を考えましょう。じゃないと、時間をかなり無駄にしてしまうこともあるので目を背けてはいけないと思います(百敗くらい)。ここではVCIの仕様でできないことを紹介します。前回記事unity上の設定でできないことや、スクリプトについては別の記事で触れたいと思います。
VCIの仕様
- 100MB以上のVCI
- あまりにも大量のオブジェクト(チャンクサイズオーバー)
- プロジェクト内でのVRMとVCIの共存
- unity標準のパーティクル
- 1万程度以上のパーティクル(effekseer表示上限)
- 動きの拘束
- SpringBoneへの他のコライダーの干渉
100MB以上のVCI
頑張って大作VCIを作っても、TSOにアップロードできるのは100MBが上限です。アップロード時に以下のように出て弾かれます。
頑張って削って100MB以内にしてあげてください。VCIにする時点では200MBでもできてしまうので、出力しながら確認しましょう。
あまりにも大量のオブジェクト
100MB行っていなくても、あまりにも大量のオブジェクトがあると、100MB以下でも「チャンクサイズオーバーです」と出てアップロードできないことがあります。(例:数万個の星を模したico球を含むVCIを作ろうとした。)
モデルを統合するなり、VCIを分けるなりして解消しましょう。
プロジェクト内でのVRMとVCIの共存
最初のうちでのあるあるとして、アバターを作るvrm用セットアップと、vciを作るunivciのセットアップは共存できません。操作時にエラーが出て上手く動作しなくなるので、必ずアバターを作るプロジェクトとVCIを作るプロジェクトとは分けましょう。
unity標準のパーティクル
初心者が始める際にunityの本で勉強してパーティクルを作ろうとしてしまいがちですが、残念ながらバーチャルキャストでのパーティクルはunityの本に乗ってるのと違います。effekseerという外部ツールで作ったパーティクルに対応しているため、unity本ではなくてeffekseerのウェブページで勉強しましょう。
バージョンが違うと結構動かなかったりするので、wikiでしっかり調べてから作りましょう。(正直wikiの記事は新古入り混じっているのでわからなければdiscordで効いてみてもいいと思います。)
1万程度以上のパーティクル
effekseerの表示上限が1万数千個ぐらいのところにあって、それ以上出しても表示されません。
意外にすぐに上限に達してしまうため、軌跡などは特に注意。エフェクトはCPUを使うので表示上限に行くとつよつよPCでも処理が重くなってしまいます。
また、処理の問題を抜きにしても使いすぎると順番にパーティクルが表示されなくなるので、他のVCIなどにも影響します。他人に迷惑をかけないように、寿命を設定するなり消すように心がけたほうがいいです。
動きの拘束
一応rigidbodyのコンストレイントは使えるのですが、三軸しかありません。また、コライダーがついていたりすると叩いたり体当りするとずれてきます。
よくあるラインにスライダーがくっつくみたいなのはこのままでは実現できませんが、一工夫すれば拘束できているように作ることはできます。
SpringBoneへの他のコライダーの干渉
スプリングボーンがつくようになりましたが、早速モフろうとすると手が突き抜けてしまいます。
公式のサンプルでもそうですが、同じアイテム内でないと鑑賞できないようです。
ですが、これには解消法があって、スプリングボーンがついているアイテムの近くに来た際に透明にしたコライダーを手に追従するようにすれば触っているかのように動かすことができます。これを設定する機能がつかないかなーと思っているんですがそのうち対応してくれないかなー。