4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Spline Trail Rendererを使ってみた(Unity X Vive)

Last updated at Posted at 2016-07-26

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 - アセットストア - Google Chrome 2016-07-26 17.18.46.jpg

Spline Trail Rendererを使えばこんな感じの表現ができるそうだ
Spline Trail Renderer - アセットストア - Google Chrome 2016-07-26 17.17.21.png

*主に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だからちょいと古い気がするけど、十分に動作するならば問題はないか

使い方(基礎)

  1. 空のGameObjectを作成しよう
  2. そいつにSplineTrailRendererコンポーネントをつけよう
  3. そいつにMeshFilterとMeshRendererコンポーネントもつけよう
  4. Mesh RendererコンポーネントのMaterialsにSplineTrailRenderer/Samples/MaterialsにあるFadeTrailMaterialマテリアルを設定しよう
  5. SplineTrailRendererコンポーネントのパラメータを調整しよう(下の画像を参考に)

inspector.png
(この画像はOnline Documentに貼ってある画像です)

これでGameObjectを動かすと、スムースなTrailが自動的に作成されるよ!

実際にViveのコントローラーにつけてみた

Animation-compressor.gif

SplineTrailRendererのInspectorはこれ
Unity (64bit) - testLighting.unity - ViveFirstTest - PC, Mac & Linux Standalone_ DX11 2016-07-31 20.20.24.jpg

ポイント パラメータは小さい値を入れる

Viveのコントローラーが3D世界だとものすごく小さいので
Emission DistanceHeightWidthを小さくしている。
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くらいにするといい感じにコントローラー付近までレンダリングしてくれる。

4
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?