slowFastRendering
oFのサンプル勉強 2つ目
slowFastRendering
座標が変化する大量のパーティクルのレンダリングを行う。
また複数のレンダリング手法での速度を比較をしている。
遅め : OpenGLのglVertex2f
→頂点ひとつ一つを描画
高速 : 頂点配列
→配列に頂点を設定し一括で描画
非常に高速 : VBO (頂点バッファオブジェクト)
→あらかじめ頂点データをOpenGL側に作成しておき、グラフィクスカード側で演算を行う手法
□やってること
・座標移動パラメーターの「speeds」を変化させ、パーティクルの座標「points」に加算し動きを表現している。
y座標の移動
speeds[i].y += 0.04; // some grav
減速
speeds[i] *= 0.98;
→x、y両方に?
□学んだこと
・points.size()でパーティクルの数(配列の要素数)を取得できる。
・ofVec2fクラスの変数同士だとx、yを意識することなく+-できる。
・if(points[i].x > ofGetWidth()) points[i].x = 1;
画面領域を超えた時の設定。
移動パラメーターはspeeds変数で更新しているため、pointsをリセットできる。
□疑問点
vector <ofVec2f> speeds;
の変数宣言の仕方が見慣れない
□課題
・ofVec2fクラスの関数の内部処理
mouseVec.length()
mouseVec.normalize();
ノーマライズについて
http://of.studio23c.com/index.php/archives/256
・頂点配列、VBOに関し理解を深める
pointPickerExample
初めの数回はoFのサンプルを読み解くことを課題にしたいと思います。
第一回はpointPickerExample
□やってる事
・ply形式のポリゴンデータを読み、ofMeshクラスのメソッドで頂点と頂点間を線で結び表示。
・ofEasyCamクラスを使っているので、cam.begin()とcam.end()の中で書かれた対象をカメラ視点で見れる。マウスのドラックで視点変更もできる。
・ポリゴンデータの頂点座標とマウス座標の距離をひとつずつみていき、一番距離が近い頂点座標を顕示。
□課題
・ofMesh、ofEasyCamのコアロジックの確認
・worldToScreenでやろうとしていること
ofVec3f cur = cam.worldToScreen(mesh.getVertex(i));
(「世界座標系からスクリーン座標系へ変換」という記述が他のブログにあったので、それをヒントに自分の言葉で)
しかし30行ほどで書けば、これらの機能を実現できるoFのポテンシャルはスゴい。。
First Post
ブログを開設しました。
エンジニアライフの充実と、本気で取り組める専門分野を作るため
日々関心のある技術や勉強会記録、読書記録をしていきたいと思います。