CGプログラミング演習
12 最終課題のヒント集
最終課題の制作に役立つヒント集を掲載します。
必要に応じて随時更新します。
1 背景を加算混色しない
- draw() の中のピンク色の部分を...
// 描画内容を定めます void draw() { // 背景を黒く塗りつぶします background(0); // OpenGL を利用して加算混色します gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);
- 次のように書き換えて、gl.glBlendFunc を無効にします(ピンク色の箇所):
// 描画内容を定めます void draw() { // 背景を黒く塗りつぶします background(0); // OpenGL を利用して加算混色します // gl.glBlendFunc(GL.GL_SRC_ALPHA, GL.GL_ONE);
2 描画内容にさらに奥行きを与える
- void drawGraphic(FFT fft) の内容に下記の行を追加します。
-
音階に応じた奥行きを、描画内容に与える場合:
translate(0, 0, i);
-
音量に応じた奥行きを、描画内容に与える場合:
translate(0, 0, r);
- 追加する場所は、drawGraphic の以下の場所の直後です(ピンク色の箇所)。
*rotateZ
の直後です。
// マウス位置に応じて視点を変更します pushMatrix(); rotateY(radians(angle * mouseX/float(width) + offset*i)); rotateX(radians(angle * mouseY/float(height) + offset*i)); rotateZ(radians(angle / 10.0 + offset * i)); // 音階に応じた奥行きを、描画内容に与える。 translate(0, 0, i); // 円を描画してみます stroke(h, 50, 100, 50); fill(h, 100, 100, 10); ellipse(pos.x, pos.y, r, r);
3 バネの動きと関係ない描画がしたい
- バネの動きと関係しない描画をする場合には、pos.x, pos.y を用いた位置の指定をしなければOKです。
- たとえば、下記の描画命令を drawGraphic に追加するとどうなるかためしてみてください。
// 円を描画する(バネの動きあり) ellipse(pos.x, pos.y, r, r); // 円を描画する(バネの動きなし) ellipse(0, 0, r, r);
4 バネの動きをカスタマイズしたい
- バネの動きをカスタマイズしたい場合には、「K2」タブを開き、冒頭にある下記部分の値を変更します。
- 下記のピンク色の部分の値を適当に変化させてみると、バネの動きが変化します。たとえば重さを「12.0」から「24.0」に変更してみると、バネの動きが遅くなるはずです。
// バネの硬さを定めます float stiffness = 0.4; // バネの摩擦係数を定めます(減衰の程度) float damping = 0.9; // 円の重さを定めます float mass = 12.0;