Edited at

PostProcessingStackで手軽にそれっぽいアブストラクトを作る


概要

これを作ります。だいたい所用15分くらいかと思います。



環境

Unity 2018.2.5f1


作り方

Unityのビルトインで入っているSphereを適当に四角形に配置します。(画像では見やすいよう球のScaleを各軸1にしていますが、0にしてしまった方があとあと見栄えがいいです)

スクリーンショット 2019-03-16 22.23.22.png

CirculerTrailのルートに下記のコードをアタッチして、回転動作を追加します。

using UnityEngine;

public class Actor : MonoBehaviour
{
void Update () {
transform.Rotate(new Vector3(60*Time.deltaTime, 90*Time.deltaTime, 120*Time.deltaTime));
}
}

続いて、各Cubeが箒星のように尾を引いて運動するようにTrailRendererを設定します。TrailRendererに色彩を設定する際には、Sprite系のシェーダ(Shader/Spritesなど)が設定されたMaterialが必要になりますので、まずこれを作成します。スクリーンショット 2019-03-16 22.30.42.png

各SphereにTrailRendererを追加し、MaterialとColor、Widthの設定を行ないます。

スクリーンショット 2019-03-16 22.33.36.png

ここまでできたらCirculerTrailをPrefab化します。続いて、これらをランダムに配置するコードを作成し、シーン上の適当なオブジェクトにアタッチします。

using UnityEngine;

using System.Linq;

public class ActorsController : MonoBehaviour
{
[SerializeField]
GameObject actor;
[SerializeField]
GameObject actorParent;
[SerializeField]
public int actorsNum = 10;
[SerializeField]
float angleRangeMax = 180f;
[SerializeField]
float angleRangeMin = -180f;
[SerializeField]
float scaleRangeMax = 1.4f;
[SerializeField]
float scaleRangeMin = 0.1f;

void Start ()
{
Enumerable.Range(0,actorsNum)
.ToList()
.ForEach(obj =>
{
var temp = Instantiate(this.actor, actorParent.transform, true) as GameObject;
SetActorsParameter(temp);
});
}

private void SetActorsParameter(GameObject actor)
{
actor.transform.localScale = Random.Range(scaleRangeMin, scaleRangeMax) * Vector3.one;
actor.transform.localRotation = Quaternion.Euler(
Random.Range(angleRangeMin, angleRangeMax),
Random.Range(angleRangeMin, angleRangeMax),
Random.Range(angleRangeMin, angleRangeMax));
}
}

シーンに適当にActorのルートとなるオブジェクト(ActorRoot)を配置します。スクリプトには下記のようにオブジェクトをアタッチします。

スクリーンショット 2019-03-16 22.45.31.png

これで骨格は完成です。再生してみましょう。

スクリーンショット 2019-03-16 22.47.29.png

これにPostProcessingStackによってエフェクトをかけます。

PPSの導入はテラシュールブログさんの下記の記事に従えば10分もかからずに終わると思います。

http://tsubakit1.hateblo.jp/entry/2018/03/06/224207

PostProcessVolumeにbloomを設定します。

スクリーンショット 2019-03-16 22.51.40.png

できました。

スクリーンショット 2019-03-16 22.52.33.png


応用

記事と同じ考え方で、プレハブを作っておいてランダムに配置→PostProcessingStackという組み合わせで結構色々なアブストラクトが作れます。