Pd会第5回に参加してきました。@tatmos さん会場提供いつもありがとうございます。
我らが主催者永野さんが風邪のため欠席されましたが、ややまったりしつつも会は進行されておりましたのでご安心ください。余談ですが、こういう会で旗振りの人が不在だと残りのメンバーが様子見でお見合いになっちゃうことはままあると思うのですが、そういうこともなくちゃんと回ってたっていうことで Pd会はかなりうまくいってる勉強会だなと感じます。メンバーの入れ替わりありつつもなかなかのペースで 5回目を迎えてますし、毎回何かしら得るところもあり、なにより自分が楽しいので。
さて今回のテーマはちょっと Pd から脱線してるかもしれませんがグラフィック関連の話(OpenGL, GLSL, Colada, Quartz Composer)と、わたしの resospeana~ オブジェクトの解説でした。
- OpenGL, GLSL, Colada
- GPU のレンダリングパイプラインの話
- Vertex Shader - 頂点毎(?)の処理
- Geometry Shader - 近傍の情報も含めての処理
- Pixel Shader - 画素毎(?)の処理
- 個人的にはずっとこのレンダリングパイプラインの vertex shader とか pixel shader って何が違うんだろうって疑問をもってたのでいろいろ質問もできてちょっとわかりました。
- 今もうひとつ疑問がでてきたんですが、α blending なんかは pixel shader が geometry の情報と出力バッファの現在の画素値とかから新しい値を計算する、という理解でいいんですかね。そのためには geometry を z-depth 方向にソートして処理しないといけない場合もあったりすると思いますがそれは geometry shader がやっとく?
- [追記]blending やデプスソートなどは shader ではなくてその前後で処理するそうです。[/追記]
- GLSL。3種類の変数(スコープみたいなものかな)がある。[追記]間違いがあったので修正しました。指摘ありがとうございます[/追記]
- A - Attribute - 頂点ごとの属性
- U - Uniform - グローバルな設定
- V - Varying - Shader 間のデータをやりとりする
- COLLADA
- GPU のレンダリングパイプラインの話
- Quartz Composer
- resospeana~ の解説
- Github で公開しました http://github.com/nagachika/resospeana
- Gist に Ruby でアイデアをスケッチしたコードがあります http://gist.github.com/220547
- 振動子(バネとおもり)にダンパー(速度に比例する反対向きの加速度を与える)をつけたモデルに固有振動数の振動を加えると共振して増幅することを元にした、特定の波長の成分の強度をとりだすオブジェクト
- なんちゃってスペクトルアナライザーに使える
- 簡単な図示
resospeana~ は実用的にどうかっていうのはあまり考えてなくて、コンセプトを確認するための実験で、まあまあちゃんと動いているようです。周波数が高いと強度が強めに出る傾向があるように思えます。バネ定数を固有振動数から求めているのですが、減衰係数も周波数によって何か正規化しないといけないかもしれませんし、ポテンシャルの計算で運動エネルギーはローカル座標系での速度(バネの起点との相対速度)にするべきなのかもしれないです。そういったモデルの細かい検証はしかし結果にはそんなに影響しないような気もします。
その後 Pd会は今年は最後ということで忘年会へ。いろいろなことを話しました。キーワードを並べてみたらすごいカオスでした。MTM04とか芸術論とかライブ作曲とかネコミミの起源とか音楽の嗜好は生得的か後天的かという話とか三味線とバイオリンの比較論とか多面体とか多面体とか4次元和尚とか。今回もとても楽しかったです。参加者のみなさんありがとうございました。