AnyUIでMeshの形状に合わせたuGUIを作る

この記事はUnityアセット冬のアドベントカレンダー 2019 Winter!の12月22日の記事になります。
元は違うアセットを紹介するつもりでしたが諸事情あって変更しました。期待していた方がいたらすみません。

Unityに標準機能として備わっているuGUIは平面でプレイするゲームなら十分な機能があると思います。
ただ、VRではもう少し柔軟な形状のキャンバスを使いたいと感じることも多いはず。

今回はそんな時に使えるアセット、Any UIの解説記事です。

Any UI


Display Unity UI on any 3D object in your scene!

Any UIとは?

映画アイアンマンのように顔の周りにUIを出したいとか、手首の周りにUIを出したいとか、
その手のSFっぽいUIをお手軽に作れるアセットがAnyUIです。
とりあえず動画を見てください、いい感じの動画なのでこれを見れば一発で何に使えるアセットなのかわかります。

本当にメッシュ上にuGUIを表示するだけのアセットなので、機能を知るだけなら上の動画で十分です。
ただアセットの説明だけでは使い勝手がわからないと思うので実際の使い方をさくっと解説していきます。

使い方

まずUV展開されたメッシュを用意します。
今回は円柱の一部みたいなメッシュを作りました。
シンプルな形状なのでProBuilderのNew Shape,Delete Faces,Flip Normal,UV Editorだけで作れます。

AnyUIをインポートするとビューが増えます。(Window→Any UI→Set Up AnyUIから表示)
ここにUIを表示したいメッシュを指定しOKを押すとCanvasが生成されます。

この時点でアセットによる作業はほぼ完了です。
メッシュの上方にテスト用のテクスチャが含まれたCanvasとCameraが生成され、同時にメッシュにはカメラで撮影したUIがそのまま表示されます。
あとはCanvasをいじくり回すだけで思い通りにUIが作れます。

なお実装的にはAny UI Meshというスクリプトが指定したメッシュにセットされます、
これで制御されているようです。
投影する解像度やマテリアル 、カメラなども設定できます。

作例1

ここに貼った画像は平面のスクショで湾曲したメッシュに貼り付けたことでむしろ見にくくなってますが、
VRの場合頭に合わせて少し角度をつけるだけでもかなり見やすくなります。
デザインセンスが微妙なので大した作例は作れませんでしたが、
頑張ればかっこいいヘッドアップディスプレイ風のUIなんかも作れるはず。

終わりに

簡単な解説になってしましましたが以上です。
VR用途を推しているUIアセットには他にもCurved UIというものもあり、そちらの方が評価数は多いようです。
所有していないので比較はできませんがおそらく任意のメッシュを扱える点についてはAny UIの方が優れているのではないかと推測しています。
メッシュを作る手間もProBuidlerを使えばUnityだけでかなり柔軟にいじれるので、ProBuilderが組み込まれた今は使えるアセットだと思います。

Unity, VR

Posted by khronos2510