UnityのGLを使って、HoloLensで線を描画してみる

Unityで線を引くにはいくつか方法があります。

(1) Line Rendererを使う

(2) Vectrosityアセットを使う

(3) GLを使う


(1)は「Unity LineRenderer」のようなキーワードで調べると色々な方が方法を書いてくださっています。

(2)は以前書いたこちらを参照ください。

magicbullet.hatenablog.jp

(Unity5.6.1p01でも使えました)


今回は(3)の方法を調べました。また、HoloLensで使えることも確認したので方法を記載します。

=====

目次

1. GLとは?

2. 線を引くまでの手順

3.HoloLensでの動作確認

4.終わりに

=====

1. GLとは?

ローレベルなグラフィックライブラリです。OpenGLの記述に近い書き方をします。

docs.unity3d.com

2. 線を引くまでの手順

下記がわかりやすかったので、こちらを参照ください。

ある程度書き方のルールがあって、それを守って書く、と考えれば使えます。

pc.atsuhiro-me.net


CreateMaterial()の中でshader設定を書いて、OnRendererObject()の中で描画の処理を書いていきます。

大雑把には、このように書きます。

GL.PushMatrix ();
GL.Begin (GL.LINES);
/*ここに処理を書く。GL.Colorを宣言し直せば、色変更が可能*/
GL.End ();
GL.PopMatrix ();


サンプルを動かしてみました。

Unity - スクリプトリファレンス: GL

空のGameObjectに上記のソースコードを貼り付けると、このような描画ができます。

f:id:Takyu:20170612095156p:plain


少し分かりづらいですが、三次元的に描画されるので、向きを変更することも可能です。

f:id:Takyu:20170612095307j:plain




3.HoloLensでの動作確認

GLはHoloLensで動かせるのか、というのが気になっていました。

おそらくVRのHMDについてだと思いますが、下記の記事によると片側にしか描画されないことがあったようです。

d.hatena.ne.jp


HoloLensは両方向への描画はしないですが、UWPだとどこまで対応しているのか、など、試さないとわからないところも多いので、実機で試してみました。

遊び心というか、ちょっとグラフ調にしてみました。

f:id:Takyu:20170611070142j:plain

実際に使う場合大きさは微調整が必要ですが、HoloLensでも描画ができました。

また、写真だとわかりませんが、HoloLensをかぶって自分で動き回ることでグラフを反対側からみる、という3次元的な位置に描画することも確認できました。


4. 終わりに

GLを使えば、OpenGLの知識により、この方のようにカッコ良い雰囲気を作ることもできます。

onionginger.blogspot.jp

GLには少し癖がありますが、うまく使えば色々できると思います。

ただし、Line Rendererとどちらがよいのか、は比較困難かもしれません。

次回の記事では、GLとLineRendererの比較について調べたことを整理したいと思います。