ひとりでのアプリ開発 - fineの備忘録 -

ひとりでアプリ開発をするなかで起こったことや学んだことを書き溜めていきます

Unity - Trail Renderer:オブジェクトの軌跡を描画する

初めに

 Trail Renderer を使うことで、動いているゲームオブジェクトの後ろに軌跡を描画することができます。本記事では、Trail Renderer の使い方をまとめます。



Trail Renderer

使い方

 Inspector の Add Component から Trail Renderer コンポーネントを追加することで使えるようになります。


 物体を動かせば、軌跡が表示されるようになります。

youtu.be
youtu.be

トレイル設定

機能 説明
Width Animation Curve で線の幅を設定
Time トレイル内の頂点の生存期間(秒)
Min Vertex Distance トレイル内の頂点の最小間隔 (ワールド単位)
Autodestruct 有効にすると、Time 秒移動しなかった場合は、Trail Renderer コンポーネントをアタッチしているゲームオブジェクトを破棄
Emitting トレイル内の頂点を追加する/しない
トレイル生成の一時停止とその解除に使用する。
Color グラデーションを定義
※Material を適切に設定しないとピンク色の線が表示されます。
Corner Vertices トレイルに曲がり角を描画するとき、追加の頂点をいくつ使用するか
数字が大きいほど曲がり角に追加される頂点数が増え、角が丸く表示される。
End Cap Vertices 後端を描画するとき、追加の頂点をいくつ使用するか
Alignment トレイルのの向きを設定
View:トレイルをカメラに正面に向ける。
TransformZ:トレイルを Transform コンポーネントの Z 軸に正面に向ける。
Texture Mode テクスチャをトレイルに適用する方法を設定
Stretch:トレイルの全長に沿ってテクスチャを 1 回マッピングする。
Tile:トレイルに沿ってテクスチャを繰り返す。タイリング率は、Material.SetTextureScale を使用。
DistributePerSegment:トレイルの全長に沿ってテクスチャを 1 回マッピングする。すべての頂点間隔は均等であるとする。
RepeatPerSegment:トレイルに沿ってテクスチャを繰り返す。トレイルごとに 1 回の割合で繰り返しす。タイリング率を調整するには、Material.SetTextureScale を使用。
Shadow Bias ライトを影から遠ざける量を設定
Generate Lightning Data 有効にすると、Unity は法線と接線を含むトレイルジオメトリを構築する。これにより、シーンのライティングを使用するマテリアルを使用できる。

 Generate Lighting Data はよくわからなかったので、ドキュメントを載せておきます。

docs.unity3d.com

Materials

 マテリアルの設定ができます。


Lightning

機能 説明
Cast Shadows 適切なライトが当たったときに、このレンダラーが影を落とすかどうか、およびその方法を指定する。
Off:オフ
On:オン
Two Sided:両面に影を落とす
Shadows Only:影のみ表示し、Renderer 自体は表示しない
Receive Shadows この Renderer にキャストされた影を表示するかどうかを指定する

Probes

機能 説明
Light Probes ライトプローブシステムから光を受け取る方法を設定する。
Off:補間されたライト プローブを使用しない。
Blend Probes:補間された 1 つのライト プローブを使用する。デフォルト値。
Use Proxy Volume:補間されたライト プローブの 3D グリッドを使用する。
Custom Provided:MaterialPropertyBlockから Light Probe シェーダーの均一な値を抽出する。
Reflection Probes リフレクションプローブシステムから反射を受け取る方法を設定する。
Off:リフレクション プローブを無効にする。Unity は反射にスカイボックスを使用する。
Blend Probes:リフレクション プローブ間でのみブレンドが発生する。照明設定の異なるエリア間を移動する可能性がある屋内環境で使用する。
Blend Probes And Skybox:リフレクションプローブ間、またはリフレクションプローブとデフォルトの反射の間でブレンドが発生する。屋外環境で使用する。
Simple:リフレクション プローブを有効にするが、リフレクション プローブ間でブレンドは発生しない。

 ライトプローブを使うことで、シーンの何もない空間を通過するライトに関する情報を取得し使用する方法を得ることができるようです。

docs.unity3d.com

 リフレクションプローブを使うことで、反射や映り込みを表現できるようです。

docs.unity3d.com

Additional Settings

機能 説明
Motion Vectors モーション ベクトルを使用して、このレンダラーのピクセルごとの画面空間の動きをフレーム間で追跡するかどうかを設定する。主に、モーションブラー(動いている対象をカメラで撮影した時に生じるぶれ)を表現する場合に使用する。
Camera Motion Only
Per Object Motion
Force No Motion
Dynamic Occlusion オクルージョンカリングシステムの有効/無効
Sorting Layer Sorting Layer の設定
Order in Layer Sorting Layer内のこの Renderer の順序を表す
※値が大きいほうが手前

 オクルージョンカリング(occlusion culling)とは、ゲームオブジェクトが他のオブジェクトに隠されていてビューに表示されない (隠されている) ときに、オブジェクトのレンダリング演算を行わない機能です。occlusion は「塞ぐ、閉ざされる」を意味し、手前にある物体が後ろにある物体を隠す状態を表すこともあります。culling は「摘み取る」を意味します。

docs.unity3d.com

Trail Renderer を使ってエフェクトを作ってみる

 下の動画のようなエフェクトの作り方を紹介します。

youtu.be

  1. 軌跡を作りたいオブジェクトに Trail Renderer コンポーネントをつける
  2. Time を 0.5 に変更する
  3. 色の設定をする
    α値は255 から 0 になるようにします。色は今回は水色から白にグラデーションするようにしていますが、お好みで。
  4. Material を Default - Particle または Default - ParticleSystem に変更する

補足

 Trail Renderer は Line Renderer と同じアルゴリズムレンダリングを行っているようです。

最後に