ジェネラティブアート論
目次 |
概要
- 前提スキル
一年生の時にメディアプログラミング演習Iを履修したのと同等のプログラミングスキルがあるものとして、授業を進めます。 もし、プログラミングに不安があるなら、上記テキストを使って、自分で予習や自習をしてください。 openFrameworksはProcessingと似ているため、Processingを知っていると、理解が早いです。
- 成績評価
- 出席:学生証scan+Minutes paper
- 課題:セルオートマトン課題、再帰呼び出し図形課題、複素平面フラクタル課題
- 小テスト:ハイスコア
- 授業概要及び到達目標
- インタラクティブアートは芸術を基盤として科学や工学を統合する新しい領域である。生物科学に関連した分野として、人工生命、ライフゲーム、フラクタル、オートマトン、遺伝的アルゴリズム、ニューラルネットワークなど応用範囲の広いものが数多く存在する。
そういった生物に見られる特徴をアートに応用したジェネラティブアートの作品をC++のプログラミングを使用して、実際に作成してみる。
本講義の目標は以下の通り。
- 生物の特徴と生物的なシステムについて理解する。
- 複雑系システムについて理解し、応用例を作成できる。
- openFrameworksを使って作品のプログラミングができる。
開発環境
開発環境としてopenFrameworks for Visual studioを使用します。
テキストや開発環境については、以下を参照してください。
予定
- 2017年度
- 9/19(火) ガイダンス, 生物と情報とアート,openFrameworksプログラミング演習
- 9/26(火) openFrameworks C++プログラミング(実習)
- 教科書 1章 読み物として読む。
- 教科書 2章 実際にプログラムを作ってみる。
- 新規プロジェクトの作成は、openFrameworks for Visual studioを参照
- 2-4「数値の記憶と計算」までをやり終えて、自作プログラムexeファイルを提出。
- 幾何学図形の描画、色の設定、変数
- exeファイルは、プロジェクトフォルダーのbinフォルダーの中にあります。
- 10/3(火) 幾何学図形の描画(実習)
- 2-8「条件分岐」までを学習し、自作プログラムexeファイルを提出。
- 繰り返し、配列、図形の移動、条件分岐
- 10/17(火) (実習)
- 2-11「より高度な表現」までを学習し、自作プログラムexeファイルを提出。
- マウスアクション、摩擦、重力、奇跡のフェード
- 10/24(火) (実習)
- 3-1、2,3を学習する。
- 3-2に関して、余裕がない場合、3-2-7「画像ファイルを扱う」だけでもよい。
- 3-4「アドオンの利用」以降は学習しなくてもよい。関心に応じて学習してください。
- 3-3-2「新規クラスの生成」は、openFrameworks for Visual studioを参照。
- 3-1、2,3を学習する。
- 10/31(火) セルオートマトン(講義・実習)
- 11/7(火) ランダムウォーク(講義・実習)
- 11/14(火) ライフゲーム(講義・実習)
- 11/21(火) Boid(講義・実習)
- 11/28(火) ラングトンのアリ(講義・実習)
- 12/5(火) 物理エンジン Box2D(講義・実習)
- 12/12(火)フラクタルと自己相似形と再帰呼び出し(講義・実習)
- 12/19(火) ニューラルネットワーク、遺伝的アルゴリズム(講義)
- 1/9(火) 小テスト
- 授業で扱った内容すべてが含まれます。
- 1/16(火) 予備
- 第1課題「ランダムウォークのプログラム」
- 提出締切日 11/14(月)
- 第2課題「セルオートマトン、フラクタルのプログラム」
- 提出締切日 1/13(金)
- 「ライフゲーム、Boid、アリ、Box2D、フラクタル」の中から、最低2つのプログラムを提出してください。
- 3つ以上提出してもかまいません。その場合、上位2つの課題を点数として扱います。
- ソースプログラムも採点の対象としますので、プロジェクトのフォルダー全体をzip圧縮して、提出して下さい。
- 2016年度
- 9/20(火) ガイダンス, 生物と情報とアート,openFrameworksプログラミング演習
- 9/27(火) openFrameworks C++プログラミング
- 教科書 1章 読み物として読む。
- 教科書 2章 実際にプログラムを作ってみる。
- 新規プロジェクトの作成は、openFrameworks for Visual studioを参照
- 2-4「数値の記憶と計算」までをやり終えて、自作プログラムexeファイルを提出。
- 幾何学図形の描画、色の設定、変数
- exeファイルは、プロジェクトフォルダーのbinフォルダーの中にあります。
- 10/4(火) 幾何学図形の描画
- 2-8「条件分岐」までを学習し、自作プログラムexeファイルを提出。
- 繰り返し、配列、図形の移動、条件分岐
- 10/18(火)
- 2-11「より高度な表現」までを学習し、自作プログラムexeファイルを提出。
- マウスアクション、摩擦、重力、奇跡のフェード
- 10/25(火)
- 3-1、2,3を学習する。
- 3-2に関して、余裕がない場合、3-2-7「画像ファイルを扱う」だけでもよい。
- 3-4「アドオンの利用」以降は学習しなくてもよい。関心に応じて学習してください。
- 3-3-2「新規クラスの生成」は、openFrameworks for Visual studioを参照。
- 3-1、2,3を学習する。
- 11/1(火) セルオートマトン
- 11/8(火) ランダムウォーク
- 11/15(火) ライフゲーム
- 11/22(火) Boid
- 11/29(火) ラングトンのアリ
- 12/6(火) 物理エンジン Box2D
- 12/13(火)フラクタルと自己相似形と再帰呼び出し
- 12/20(火) ニューラルネットワーク、遺伝的アルゴリズム
- 1/17(火) 小テスト
- 授業で扱った内容すべてが含まれます。
- 1/24(火) 予備
- 第1課題「ランダムウォークのプログラム」
- 提出締切日 11/14(月)
- 第2課題「セルオートマトン、フラクタルのプログラム」
- 提出締切日 1/13(金)
- 「ライフゲーム、Boid、アリ、Box2D、フラクタル」の中から、最低2つのプログラムを提出してください。
- 3つ以上提出してもかまいません。その場合、上位2つの課題を点数として扱います。
- ソースプログラムも採点の対象としますので、プロジェクトのフォルダー全体をzip圧縮して、提出して下さい。
- 2015年度
- 9/29(火) ガイダンス, 生物と情報とアート,openFrameworksプログラミング演習
- 10/6(火) openFrameworks C++プログラミング
- 10/13(火) 幾何学図形の描画
- 10/20(火) ランダムウォーク
- 10/27(火) セルオートマトン
- 11/10(火) ライフゲーム
- 11/17(火) ラングトンのアリ
- 12/1(火) アトラクティブフォース
- 12/8(火) レイノルズボイド
- 12/15(火) 物理エンジン Box2D
- 12/22(火) フラクタルと再帰呼び出し
- 1/5(火) 自己相似形と再帰呼び出し
- 1/12(火) ニューラルネットワーク
- 1/19(火) 遺伝的アルゴリズム
- 1/26(火) 小テスト
- 1/29(金) 第1課題、第2課題の提出締切日
生物と情報とアート
- 生物とは? 生物の特徴とは?
- 例:小石と貝殻
- * 簡単BBSに「生物と無生物の違いは何か?」説明してみよう。
- ゲノムのDNAマップ NCBI Map Viewer
- ヒト一人を再生するのに必要な情報量は?
メモ
Visual Studioのショートカット
- Ctrl-K Ctrl-C コメントアウト
- Ctrl-K Ctrl-U コメントアウト解除
- Ctrl-K Ctrl-F インデントをそろえる
複雑系
セルオートマトン
ライフゲーム
- セルオートマトン音楽
WolframTones/ CAMUS/ Glitch DS/ Life Game Orchestra /
- ギャラリー
Modern Cellular Automata/ CArt gallery/ Cellular Automata Art/ ASCII Art Cell Automaton/
- 参考
ワイヤワールド /
人工生命
ラングトンのアリ / ラングトンのループ / 自己増殖ループ / Reynolds Boid /
http://www.local-guru.net/blog/2010/8/19/openframeworks-boid-demo
https://gist.github.com/tado/6603347
Birds Algorhythm Craig Reynolds
http://processing.org/examples/flocking.html
openFrameworks Visual C++プログラミング
1つのボールがふらふら動く
配列とマウスインタラクション
クラスの使用
ランダムウォーク
ライフゲーム
Boid
ラングトンのアリ
物理エンジン Box2D
自己相似形
Tips
- パーティクルの位置に画像を置く
ofApp.h
ofImage particleImage;
ofApp.cpp
setup(){ particleImage.loadImage("particle.png"); } draw(){ particleImage.draw(pos.x, pos.y, w, h); }
- パーティクルの位置を辿る直線を描く
ofApp.cpp
ofBeginShape(); for(int i = 0; i < particle.size(); i++){ ofVertex(pos[i].x, pos[i].y); } ofEndShape();
- パーティクルの位置を辿る曲線を描く
ofApp.cpp
ofBeginShape(); for(int i = 0; i < particle.size(); i++){ ofCurveVertex(pos[i].x, pos[i].y); } ofEndShape();
フラクタル
古代ギリシャからあるユークリッド幾何学と20世紀のフラクタル幾何学の比較
- 考察
- 古代エジプト人は3:4:5の辺を持つ三角形で直角が得られることを知っていた.ピラミッドなどの巨大建造物.
- 三平方の定理を発見したピタゴラスはどこがすごいか?
- フラクタル図形
脳
- 脳波,脳電図(electroencephalogram EEG)
- 大脳皮質のニューロンの膨大な数のシナプス結合における電位(シナプス後電位)の集合と考えられている。
- 通常は,空間的および時間的分散性のために一定の形状の波形にはならない。しかし,大脳皮質の活性度が低下した時にはある程度の同期性がみられ,その代表的な状態が睡眠時の脳波である。
- 開眼時,脳の神経細胞があちこちで活発に作動していると,シナプス電位は同期が取れずに,脳波はランダムなになり,特定の周波数は測定されない。
- デルタ波(δ波):1~3Hz ぐっすり睡眠.昏睡.
- シータ波(θ波):4~7Hz うたたうね.ぼんやり.
- アルファ波(α波):8~13Hz 覚醒,安静,閉眼時。リラックス。
- ベータ波(β波):14~30Hz 開眼時,五感が働いている状態。活発な思考。
- ガンマ波(γ波):30~64Hz 高次精神活動に関連(?)
- オメガ波(ω波):64~128Hz(?)
- ロー波(ρ波):128-512Hz (?)
- シグマ波(σ波):512-1024Hz (?)
- アーティファクト:ノイズ(雑音)。まばたき,眼球運動,電極の接着不良など脳と無関係のものが要因。
バイノーラルビート
周波数追従反応
脳磁図,生物フォトン,心電図,筋電図,眼電図。
- イリュージュン・フォーラム
- 簡単BBSに聞こえ方を書いてみよう。
Neural Networks
- 神経回路モデル(PPT)
- 神経細胞の写真,構成図[ 1 | 2 | 3 ]
- ニューラルネットワーク入門
- Perceptron,
- Back Propagation
- Hopfield Network
- 自己組織化ネットワーク
- 脳の潜在能力
- 天文学者カール・セーガン「人間の脳はおよそ2,000万冊,すなわち世界最大の図書館に収められているのと同じ数の本を満たすほどの情報を収納することができる」
- 神経科学者「人は平均寿命の間に脳の潜在能力の0.01%(0.0001)しか使っていない」
Genetic Algorithm
- カール・セーガン「コスモス」エピソードII第3話「平家物語と蟹のなぞ」
- 瀬戸内海の蟹の甲羅は武士の顔に似ているのはなぜか?
- geno typeとpheno type
- GAの概念と応用例
小テスト
- 場所 いつものPC演習室
- 出題 配布資料などから出題されます。ノート,配布資料などを復習しておいてください。問題の形式は,選択式です。
- 注意事項
- 座席は自由ですが,隣の座席を1つ空けて座ってください。
- 持ち込みは不可です。机の上には一切,何も置かないで下さい。
- PC上のソフトはブラウザだけ起動してください。他のアプリケーションはすべて終了させてください。
Github
共同開発するときに便利。
学内のプロキシー環境で作業する場合、コンソールで
git config --global http.proxy proxy-n.t-kougei.ac.jp:8080 git config --global https.proxy proxy-n.t-kougei.ac.jp:8080
とする。
通常のプロキシーのない環境で作業する場合、コンソールで
git config --global --unset http.proxy proxy-n.t-kougei.ac.jp:8080 git config --global --unset https.proxy proxy-n.t-kougei.ac.jp:8080
とする。
現在の設定を確認するには、コンソールで、
git config --list
とする。
リンク
素数のグラフィック http://www.datapointed.net/visualizations/math/factorization/animated-diagrams/?infinity