LITTLE CLAP
グローシェーディングで3Dデータを表示する 2010/11/21
 FLASHでの3Dデータの表示に挑戦しています。今回はポリゴンの繋ぎ目が目立たないように色を塗るグローシェーディングです。
動作確認
 マウスでドラッグすると回転します。
 「FULL」ボタンを押すとフルスクリーンになり、もう一度押すと戻ります。
説明
 表示しているデータはLITTLE CLAPでよく使うオリジナルキャラクタ「ドングラス」です。
 まず面の向きを計算し、頂点を使用する面の平均値を頂点の向きとし、それが光源方向に向かっているほど明るくなるように色を塗ります。
 ポリゴンの内部をならかに塗るためbeginGradientFill→3点指定→endFillを使います。これはグラデーションのかかった四角形を想定して断片を描画するメソッドです。その四角形を傾けたり歪ませたりして3つの頂点の明るさに合うようにしなければならないのですが、用意されているMatrixクラスがUV計算に向いていないため頭がこんがらがったりしました。……よく考えたらdrawTrianglesをバラで使えばこんな計算する必要はなかったのでは?
今後の展開
 beginGradientFillは単純な2色塗りの他にも色々と表現方法が多そうなので、そちらを試してみたいと思います。
inserted by FC2 system