Unityで線を引くにはいくつか方法があります。たとえば下記の3つです。
(1) Line Rendererを使う
(2) Vectrosityアセットを使う
(3) GLを使う
(1)は「Unity LineRenderer」のようなキーワードで調べると色々な方が方法を書いてくださっています。
(2)は以前書いたこちらを参照ください。
【2017/6/13更新】【Unity】線描画アセット「Vectrosity」の使い方とTips紹介 - CrossRoad
(Unity5.6.1p01でも使えました)
今回は(3)の方法を調べました。また、HoloLensで使えることも確認したので方法を記載します。
2. 線を引くまでの手順
下記がわかりやすかったので、こちらを参照ください。ある程度書き方のルールがあって、それを守って書く、と考えれば使えます。
CreateMaterial()の中でshader設定を書いて、OnRendererObject()の中で描画の処理を書いていきます。大雑把には、このように書きます。
GL.PushMatrix (); GL.Begin (GL.LINES); /*ここに処理を書く。GL.Colorを宣言し直せば、色変更が可能*/ GL.End (); GL.PopMatrix ();
サンプルを動かしてみました。
UnityEngine.GL - Unity スクリプトリファレンス
空のGameObjectに上記のソースコードを貼り付けると、このような描画ができます。
少し分かりづらいですが、三次元的に描画されるので、向きを変更することも可能です。
3.HoloLensでの動作確認
GLはHoloLensで動かせるのか、というのが気になっていました。おそらくVRのHMDについてだと思いますが、下記の記事によると片側にしか描画されないことがあったようです。
OnRenderObject,OnPostRender - ゲームが作れるようになるまでがんばる日記
HoloLensは両方向への描画はしないですが、UWPだとどこまで対応しているのか、など、試さないとわからないところも多いので、実機で試してみました。遊び心というか、ちょっとグラフ調にしてみました。
実際に使う場合大きさは微調整が必要ですが、HoloLensでも描画ができました。また、写真だとわかりませんが、HoloLensをかぶって自分で動き回ることでグラフを反対側からみる、という3次元的な位置に描画することも確認できました。
4. 終わりに
GLを使えば、OpenGLの知識により、この方のようにカッコ良い雰囲気を作ることもできます。
OnionGinger: Unity GL (1) ライン描画
GLには少し癖がありますが、うまく使えば色々できると思います。ただし、Line Rendererとどちらがよいのか、は比較困難かもしれません。
次回の記事では、GLとLineRendererの比較について調べたことを整理したいと思います。