Viveのお絵かきアプリ「Tilt Brush」のブラシのように、Viveのコントローラーの動きに合わせて軌道が残る演出ってかっこいいですよね。
UnityにはもともとTrail Rendererというコンポーネントが用意されており、これを使えば簡単に似たような演出をすることができます。
しかし、Trail Rendererコンポーネントでは、荒っぽさが目立ったりして綺麗な表現をすることが難しいです(使いこなせばきっときれいにできるんだろうけど・・・)
Asset Storeで代用できるようなAssetがないか探したところ、Spline Trail Renderer(有料20ドル)を見つけました。
https://www.assetstore.unity3d.com/jp/#!/content/10236
DEMOもいい感じ+レビューも33件 平均星5個と高評価だったので、Spline Trail Rendererを使ってどんなことができるか試してみたいと思います。
Spline Trail Rendererを使えばこんな感じの表現ができるそうだ
*主にOnline Documentの翻訳/解説になるかと思います。
Online Documentはここ
http://splinetrailrenderer.blogspot.jp/
ちなみにTrailには
「引きずった跡,通った跡,痕跡(こんせき); 船跡,航跡.用例the trail of a slug ナメクジのはった跡.b(獣の)臭跡; (捜索などの)手がかり」等の意味があるそうだ
http://ejje.weblio.jp/content/trail
最新バージョン
最新バージョンは1.3とのこと(2016/7/26現在)
1.3からUnity5に完全対応した。
1.3の変更点はこちら
- ScriptとShaderをUnity5で100%コンパイルできるようにしたよ
- 2つのカラーを混ぜて表現できるカスタムShaderを追加したよ
- まれに発生していたOut of range exceptionsエラーを直したよ
更新日はTuesday, August 11, 2015だからちょいと古い気がするけど、十分に動作するならば問題はないか
使い方(基礎)
- 空のGameObjectを作成しよう
- そいつにSplineTrailRendererコンポーネントをつけよう
- そいつにMeshFilterとMeshRendererコンポーネントもつけよう
- Mesh RendererコンポーネントのMaterialsにSplineTrailRenderer/Samples/MaterialsにあるFadeTrailMaterialマテリアルを設定しよう
- SplineTrailRendererコンポーネントのパラメータを調整しよう(下の画像を参考に)
(この画像はOnline Documentに貼ってある画像です)
これでGameObjectを動かすと、スムースなTrailが自動的に作成されるよ!
実際にViveのコントローラーにつけてみた
SplineTrailRendererのInspectorはこれ
ポイント パラメータは小さい値を入れる
Viveのコントローラーが3D世界だとものすごく小さいので
Emission Distance
やHeight
やWidth
を小さくしている。
Heightが小さすぎるとカメラとTrailの向きによっては、Trail自体がカメラに映らない場合があるのでちょっとだけ大きめにしている。
値が小さすぎるのか数回 IndexOutOfRangeExceptionエラー
が発生する。
ポイント Dynamic Normal updateには必ずチェックを入れる
これにチェックを入れないと、Trailがカメラに映らない
問題点
レンダリングがコントローラーから0.1離れた場所までしか実行されないようになっている。
RenderMesh関数の
float length = Mathf.Max (spline.Length () - 0.1f, 0);
length = Mathf.Max (spline.Length () - 0.1f, 0);
この二行に書いてある0.1fを0.01fくらいにするといい感じにコントローラー付近までレンダリングしてくれる。