Flash3D/表現力を上げる
マテリアル
ポリゴンを描画するときに面を塗りつぶしますが、この面の塗りつぶし方を工夫すると、立体の表現力がグッと向上します。しかし、Papervision3DはポリゴンをDisplayObjectに変換して表現する都合上、DisplayObjectにできない表現はできません。
- ワイヤーフレーム
- 単色塗りつぶし
- テクスチャ貼りつけ
- 擬似シェーダー
org.papervision3d.materialsパッケージを眺めていると上記のようなマテリアルの設定ができるようです。
ワイヤーフレームは塗りつぶさないで、ポリゴンの線だけ描画します。
テクスチャマテリアルは、絵の一部分をポリゴンに貼りつけるような表現です。Flashらしくアセットの絵を貼りつけることもできますし、外部サーバの画像や動画なども貼りつけることができます。テクスチャは一枚の画像をタイルのように並べて貼ることもできます。透明な画像を使えば複雑な形を一枚のポリゴンで表現することもできそうです。テクスチャのどの部分をポリゴンのどの点に合わせて貼りつけるか指定することもできます(UV座標指定)が、テクスチャ位置を正確に合わせるのは計算コストが高いらしくデフォルト設定ではおおまかな座標位置しか合わせてくれないようです。
シェーダーというのは、光源の位置とポリゴン面の向きを計算して影ができるところを暗い色で表現する描画方法のことですが、FlashのDisplayObjectにはそんな器用なことができません。でも、頑張って擬似的に表現しようとしているマテリアルがあるようです。今後、Flash3DのAPIがMolehill世代に移っていくと、むしろこっちのシェーダー表現の方が普通になっていくわけです。
エフェクト
私は使ったことがなかったのですが、描画したビューの履歴を保持して一定時間重ねて表示するようです。履歴の画像を加工することで残像表現や燃え上がるような表現ができるようです。ただ計算コストは高そうです。
アニメーション
私はPapervision3Dの標準アニメーション機能ではなくて、別の物理演算ライブラリを使って3Dオブジェクトを動かしていたので、内容をよく把握していないのですが、パッと見た感じ指定時間中に3Dオブジェクトを直線や曲線にそって座標移動するもののような気がします。やっぱり静物より動物の方が表現力が高いと思いますが、アニメーションでは時間軸という新たな次元を考慮する必要がでてくるので制御は奥が深いです。私はやはり物理演算によって重力を表現するのが好きです。
インポート
外部モデリングツールで作成したモデルデータをPapervision3Dで読み込む方法も提供されていました。テキストエディタに座標を打ち込んでいくのはもちろん限界がありますよね。DAEとかColladaとかいう形式のファイルのインポーターが提供されていたので、Google SketchUpでモデリングしたデータなんかを読み込んで遊べます。でも、テクスチャの貼り方が再現できないこともあったりしました。