CGプログラミング

OVERVIEW

コンピュータグラフィックスの基本的なアルゴリズムをいくつか実装。また、それを発展させた画像加工フィルタを制作。

・レイトレーシング

現在でも広く使われているレンダリング手法のうちの一つであるレイトレーシングをprocessingを使用して実装。

テクスチャや影などにも対応。


・ベジエ曲線

CG の基礎中の基礎であるベジエ曲線の描画を実際に実装してみることで、CG の本質的な理解を試みた。

ベジエ曲線は最も基本的なパラメトリック曲線であり、始点、終点、およびその他いくつかの制御点からできる曲線である。特徴として「始点と終点を必ず通る」ことが挙げられる。

【1次ベジエ曲線】

【2次ベジエ曲線】

【3次ベジエ曲線】

【4次ベジエ曲線】

基本的な数式をそのまま入力すればよかったので、そこまで実装は難しくはなかった。制御点が 5 つ以上になる、4 次以降のベジエ曲線は、描かれる曲線に予想がつきにくいため、実用上の利点はあまりないと感じた。


・棒人間の姿勢推定

既存研究を参考に、スケッチの3次元構造推定を実装した。

(1)の画像は 18 本で描かれた棒人間で、これが入力情報となる。これに対してストロークの両端にノードの表示を行っているのが(2)である。

そして、ノードのマージを行った結果が(3)である。

このストローク情報により、体の構造は推定できる。例えば、一つのノードに接続するストロークの数が「4本」の場合は「胸」だということがわかる。

ノードにストロークが何本つながっているかという情報を持たせるのに苦労した。近くのノードと接合するときに、接合されるノードは削除されるが、そのときにそのノードが持っているストローク情報の受け渡しをしなければならなかった。


・色鉛筆画風フィルタ

写真や絵を色鉛筆画風にするプログラムをMATLABという高機能計算器を用いて実装。入力画像を4枚に複製し、それぞれに処理を加え、重ねた。鉛筆のかすれた感じを出すためには、エッジのオープニング処理を使って、それっぽく表現した。また、色があるところは彩度を落とし、しきい値処理を施すことによりトゥーンシェーダのようにした。

らあらちゃんかわいい(笑)