generative art with unity
TRANSCRIPT
今日お話しすること
1.“Generative Art”って? - 「自律性」?? - Case Study1: 物理演算
2.Unityで絵を描く8つの方法 - Trail Rendererで球面を描く
3.今日からはじめるGenerative Art - Case Study2: Game of Life
- TIPS: FoVからWorld座標を求める - Case Study3: Game of Life(HSV)
- TIPS: HSV to RGB Color - Case Study4: Spiro Graph
4.おわりに: 何の役に立つ?
• “方法論を「ジェネラティブ」と呼ぶには、まず最初の鉄則として自律性が必
ず含まれていなければなりません”
- 「ジェネラティブ・アート Processingによる実践ガイド」
!• “コンピュータソフトウェアのアルゴリズムや数学的/機械的/無作為的自律過
程によってアルゴリズム的に生成・合成・構築される芸術作品を指す”
- Wikipedia(Ja)
!• “全体または一部が自律システムによって生み出されたアート”
- Wikipedia(En)
“Generative Art”って?
「自律性」??
• 大ざっぱに言えば、制作者の手を離れて動く仕組みのこと
- 例えば擬似乱数、ノイズ、物理演算、複雑系(ライフゲー
ム、Boids…)、人工知能系アルゴリズム(NN, GA…)
!
• 厳密なことを言えば、例えば「利用者とのインタラクション」なんかは制作者の手を離れてるけど他律的なので定義としては不十分
必ずしもデジタル・アートでなくてもよい
• e.g. Ellsworth Kelly (1923~)
- 色やピースをランダムに選んで制作
- 媒体は紙とインクやモザイクアート
- 「ランダム」=制作者が全て決めてるわけではない=自律的
• 大ざっぱに言えば、制作者の手を離れて動く仕組みのこと
- 例えば擬似乱数、ノイズ、物理演算、複雑系(ライフゲー
ム、Boids…)、人工知能系アルゴリズム(NN, GA…)
!
• 厳密なことを言えば、例えば「利用者とのインタラクション」なんかは制作者の手を離れてるけど他律的なので定義としては不十分
「自律性」??
Unityで絵を描く8つの方法
• Game Object - Case Study1みたいにプリミティブ組み合わせたり、3Dモデルにマスゲームさせたり
• Texture2D::setPixel() - AS3やProcessingライクに
• Mesh(vertices, triangles, normals, uv) - ライティング頑張れば「Unityならでは」感が出そう
• Trail Renderer - おすすめ
• Particle System - Trail Renderer風に使える
• Line Renderer • Shader • Post Effect(OnRenderImage)
今日からはじめるGenerative Art
Step1. 題材(自律システム)を決める
- (再掲) 擬似乱数、ノイズ、物理演算、複雑系(ライフゲーム、Boids…)、人工
知能系アルゴリズム(NN, GA…)、etc…
!Step2. 表現(絵の描き方)を決める
- (再掲) GameObject, Mesh, Texture2D::setPixel, Trail Renderer, Line
Renderer, Particle System, Post Effect, etc… !Step3. 作る!
- 作ってる内にもっとクリエイティブな題材や表現が浮かぶことでしょう
TIPS: FoVからWorld座標を求める
• y = z・tan(FoV/2)
• x = y・(ディスプレイ高さ/ディスプレイ幅)
• 画面の端に何かを配置したり、画面いっぱいに何かを充填したい時によく使う
TIPS: HSV to RGB Color
• グラフィックプログラミングには欠かせない、HSV色空間で色を指定する方法がUnity
には無い
- ググれば計算式は出てくるので自分で書けるけど、どう考えても車輪だし…
• いやあるにはあるが、UnityEditor. EditorGUIUtilityに定義されててランタイム上では
使えない
• でもEditor上でしか定義できない理由は無いはずなので、ランタイム上に持ってくれば
いい!
• UnityEditor.dllをデコンパイルした結果を共有してくれてるリポジトリがある
- https://github.com/MattRix/UnityDecompiled/blob/master/UnityEditor/UnityEditor/EditorGUIUtility.cs
- twitter上でやりとりして、Unityの中の人にも許可得てる模様
• という事で、UnityEditor. EditorGUIUtility::HSVToRGB()をそのまま使わせてもらえ
ばOK