LoginSignup
3
2

More than 5 years have passed since last update.

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

Last updated at Posted at 2019-03-16

概要

これを作ります。だいたい所用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という組み合わせで結構色々なアブストラクトが作れます。

3
2
2

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
3
2