2009-11-01から1ヶ月間の記事一覧

ワイヤーフレーム

授業が暇だったので、ワイヤーフレームでボックスを表示するプログラムを書いてみた。頂点を行列でスクリーン座標に変換しているだけだし、よく考えたらいつもやってることだ。 面白くなってきたので、ポリゴンを塗りつぶすプログラムも書いてみた。 次は変…

線形代数とか

C++

いままでD3DXのやつを使っていたけど、そろそろ自分で書こうと思い、ベクトルとマトリクスを書いてる最中。 その中でも、逆行列を求める関数の高速化が悩みどころだ。3次正方行列までなら行列式とかを使って地道に計算してもいいが、4次だと計算量が馬鹿に…

.NetのBitmapをポインタで操作する

C++

自前でピクセルデータとかいじらないし、使い道があるか分からんけど。 Bitmap ^buffer = gcnew Bitmap(256, 256); // ロック対象矩形 Rectangle rect(0, 0, 256, 256); // 書き込み専用でbufferをロック Drawing::Imaging::BitmapData ^bmp_data = buffer->…

もう一つの輪郭抽出

Sさんに輪郭抽出の話をしたら、フィルタを使わない方法を教えてもらった。 メッシュの面を裏返して、少しだけ拡大して黒で描画するというものだ。早速実装したが、カメラの距離によって輪郭線の太さが変わってしまう。輪郭線といっても元はメッシュだから当…

続・トゥーンシェーダ

前回上手くいかなかった輪郭線の抽出をフィルタを使ってやってみた。 t-potさんの本を参考にフィルタを作成。 一度レンダリングした画像の深度バッファからテクセルの差分をとって輪郭線を書く。 という方法で実装した。元がアセンブラのコードだったので、H…

今更だけど

トゥーンシェーダを実装してみた。 まず、色の階調化だけど、これは簡単にできた。ライトのベクトルと法線の内積をとって、UV座標を計算。ベクトルは正規化しないとU値が1より大きくなるので注意。このままでは、値が0以下のこともありえるので、0から1の範…