結論
バーチャルキャストの手による拡縮は制限範囲がある。
だから制限範囲内に収まる様にモデルを調整しよう。
背景
VR配信・SNSサービスのバーチャルキャストでは、他のVRSNSに見られない仕組みとしてVCIというものがあります。VCIはバーチャル空間で取り扱えるアイテムであり、好きな場所で好きなタイミングで取り出すことができ、その挙動はスクリプトを用いて制御することでインタラクティブな効果を奏することができます。
対象
主に初心者
症状
- 出てきたものを拡大(縮小)しようとすると急に大きさが変わる
- (その上)拡大(縮小)で大きさが元に戻らない
- 出てきたものを拡大(縮小)しようとすると急に消える
など
どういうことか
バーチャルキャストでは、アイテムを両手で掴んで広げたり縮めたりすることで、アイテムの大きさを変えることができる機能があります。しかし、際限なく大きさを変えられるのではなく、どうやら元のモデルの5-0.2倍までに制限されている様です(これは確かどこにも書かれてなかったはず)。
しかしながら、初期状態のscaleはいくらでも大きな(小さな)値をとることができるので、拡大縮小した瞬間その制限が課せられてしまい、倍率がジャンプしてしまうのです。
これは作ったモデルの大きさがいい加減な時に起きやすいです。例えば、テニスボールを作ろうとした時、厳密な大きさは良き知りませんが、だいたい直径5センチくらいに収めると思います。しかし、大きさに頓着せずに作ると、1mの大きさで出来上がってしまいます。これを、モデルのscaleで調整してしまうと、たとえばscale0.05とかになってしまいます。
そのままVCIとして出力し、このボールを手に持って大きさを変えようとすると、scaleは最初は0.05ですから、手での拡大縮小範囲の外にあるので、一番近い0.2までジャンプしてしまう、つまり急に直径が20センチメートルになってしまうのです。しかも元に戻せません。(一応スクリプトからいじれば戻せるけど、そういう問題ではないですよね?)
解決策
解決策は2つあります。
一つめの方法は、愚直にモデルの大きさを治す方法です。特に説明することもありませんが、正直面倒臭いです。
そこで、微調整程度なら私はいつも次の様にします
2つめの方法は VCI消失 その5 で紹介した、読み込みのセッティングを変える方法です。
下図の「asprin」を例にとって説明します。
3dモデルを選択すると、インスペクタにモデルの情報が表示されます。ここの"Convert Units"にチェックを外してあげてください。
チェックを確認したら、
scaleの値を出力した時scale1で所望の大きさになるように適当に設定してください。わからなかったらapplyを押してトライアンドエラーした方が早いかもしれません。先のテニスボールの例だと、0.05にするといいでしょう。
下の方にスクロールして"Apply"ボタンを押します。
すると、エディター上では大きさがかわったように見えます。
で実際VCIとして出力すると、ちゃんと治っています。
ちなみに
私は最近になってもよくやりますが、幸いblenderに戻らずに直せるのでまだ甚大度は高くはないです。
一番面倒なのは原点の位置がおかしくなっていることでしょうか、、、これはunity上ではたしか調整できなかったはずですから、、、