CrossRoad

XRを中心とした技術ブログ。 Check also "English" category.

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

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で使えることも確認したので方法を記載します。

1. GLとは?

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

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

2. 線を引くまでの手順

下記がわかりやすかったので、こちらを参照ください。ある程度書き方のルールがあって、それを守って書く、と考えれば使えます。

UnityでOpenGL - みーのぺーじ

CreateMaterial()の中でshader設定を書いて、OnRendererObject()の中で描画の処理を書いていきます。大雑把には、このように書きます。

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

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

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

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

GLを使った線の描画の例

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

線の描画が3次元的に表現されている例

3.HoloLensでの動作確認

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

OnRenderObject,OnPostRender - ゲームが作れるようになるまでがんばる日記

HoloLensは両方向への描画はしないですが、UWPだとどこまで対応しているのか、など、試さないとわからないところも多いので、実機で試してみました。遊び心というか、ちょっとグラフ調にしてみました。

HoloLensでグラフ表現をした例

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

4. 終わりに

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

OnionGinger: Unity GL (1) ライン描画

GLには少し癖がありますが、うまく使えば色々できると思います。ただし、Line Rendererとどちらがよいのか、は比較困難かもしれません。

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