FLASHでの3Dデータの表示に挑戦しています。今回はアニメのセル画のように色を塗るトゥーンシェーディングです。
動作確認
マウスでドラッグすると回転します。
「FULL」ボタンを押すとフルスクリーンになり、もう一度押すと戻ります。
「SHADER」ボタンを押すとワイヤー/フラット白/フラット色/グロー/トゥーンシェーディングの順に切り替わります。
説明
表示しているデータはLITTLE CLAPでよく使うオリジナルキャラクタ「ドングラス」です。
面の塗り方自体はグローシェーディングと同じです。適用するグラデーションを、一律の線形補間ではなく偏らせることでベタ塗りっぽい領域を増やします。
問題になるのは輪郭線の方で、「どのポリゴンどのエッジが輪郭線に相当するか」が表示する向きによってリアルタイムに変化します。モデル読み込み時に各三角形の接続情報を検索しておき、接続先が存在しないか描画時の裏表が逆になっていたらそのエッジに黒い線を引きます。
今後の展開
私の知っているFLASHのクラスライブラリではテクスチャと陰影を同時に描画できません。他に方法があるのかも知れませんが、とりあえず2回に分けて描画する方法を試してみたいと思います。