ICS MEDIAでは「Unityエフェクト3分クッキング-滝の表現」にてUnityを使ったエフェクトの作成方法を紹介しました。本記事では、スクリプトを使わずにジェネラティブアートを作る超簡単な方法を解説します。数ステップで思いもよらない結果が得られますので、ぜひ本記事を参考にチャレンジしてみてください。

今回作成するジェネラティブアート


レンダーテクスチャーとは

簡単にいうと、カメラで撮影した結果をテクスチャーにできる機能です。車のドアミラーや、3Dゲーム内でテレビや大型モニターなどを作る際に利用されます。

『Render Textureは、ランタイムで作成・更新される特殊なTextureです。使用するには、まず新しいレンダーテクスチャを作成し、カメラの1つを指定して、そこにレンダリングします。これで、通常のテクスチャのように、Material内のレンダーテクスチャを使用できます。』

シーン構造

今回のシーン構造で重要なポイントは3つあります。

まずはじめに「①レンダーテクスチャー用カメラ」。このカメラで撮影する内容をレンダーテクスチャーにレンダリングします。次に「②レンダリングするポリゴン」。ジェネラティブアートの材料になります。そして「③レンダーテクスチャー描画用の板ポリゴン」です。この板ポリゴンで繰り返し構造を実現します。

今回のジェネラティブアートは、この3つの組み合わせで成り立っています。仕組みを解説していきましょう。

メッシュをくりかえしレンダリングする仕組み

カメラで撮影した内容をレンダーテクスチャーにレンダリングし、それを板ポリゴンに適用します。さらに、レンダリングフローの次フレームで、前フレームの結果と合わせて、再びレンダーテクスチャー用カメラで撮影すると、鏡を2つ合わせたときのようなくりかえし構造が実現できます。これが今回のジェネラティブアートのミソです。

うずまき構造の作り方は、カメラをZ軸回転させるだけ。シンプルですね。たったこれだけでフラクタル模様が描けるんです。続いて、おさえておきたい各オブジェクトの設定を解説します。

各オブジェクトのおさえどころ

重要なポイントに絞って解説します。

レンダーテクスチャー

  • レンダーテクスチャーに対してポストエフェクトをかけるため、テクスチャーフォーマットを「ARGB Half」に設定します。
  • テクスチャーを繰り返し描画させたいため、Wrap Modeを「Repeat」に設定します。

レンダーテクスチャー描画用の板ポリゴン

  • レイヤーを[Default]に設定します。
  • TilingやOffsetにより、テクスチャーの繰り返しさせたり、上下左右にずらせます。

レンダリングするポリゴン

  • レイヤーを[TransParentFX]に設定します。

レンダーテクスチャー用カメラ

  • カメラのCulling Maskにレイヤーを指定することにより、カメラに写る内容をレイヤー経由で指定できます。ここでは[Default]と[TransParentFX]の両方を指定します。これにより、レンダーテクスチャー用カメラでは、材料となるポリゴンと板ポリゴンの両方を撮影。一方MainCameraには材料となるポリゴンを撮影させないため、[Default]のみとします。

まとめ

Unityでコードを使わないジェネラティブアートの作成方法を紹介しました。シェーダーなどのコードを使わない利点は、数ステップの操作で複雑な幾何学模様が描けることです。その反面、意図した通りのレンダリング結果を出すまで、調整に時間がかかることもあります。

Timelineやポストエフェクトと組み合わせてモーショングラフィックスなんかも作れるでしょう。短時間でアートを用意したいとき、アイデアスケッチをする際にぜひお試しください。