DMFテスト:擬似的な球体マッピングの試作
FLASH8から強化されたビットマップ画像データの操作の機能の中でも、DMF:DisplacementMapFilterはいろいろな応用の仕方が考えられ、まさにアイデア次第の機能だと思います。元となるビットマップデータと、得たいビットマップデータとの各画素の座標変位をテーブルとして設定する事ができます。ただしこのテーブルは、Map、という事からもわかる様にビットマップデータとして持つ事になります。従って座標の変位値には制限がかかります。画素値の最大値255である事から、変位値は-128画素~+128画素に限定されてしまうのです。この部分がポイントで、決して自在に画素を移動できる機能ではなく、あくまでも「置き換えフィルター」としての機能です。
ここでは球体マッピングを擬似的に行いました。左の”太陽”はおへその所が絞り染め風になっております。かっこわるい・・実際のDMFのデータは外部に持つ事にしました。FLASHではなく、簡単なプログラムを組んでテーブル値の羅列を出力させてデータファイルとしました。各ピッチ角ごとにファイルを用意し、swfからは必要なファイルだけ読み込む様にしています。swfにてDMFデータを算出しビットマップ化させてみるとあまりにも異常に時間がかかります(なんなんでしょうか?)。そこで計算済みのデータを外部から読み込む様にさせたのです。これでも取り込んでからswf内でビットマップデータに展開する部分で妙に時間がかかってしまっています。うーむ・・
この様にDMFは擬似的な3Dマッピングのような使用方法もでき、従来のFLASHから見れば仰天する様な応用方法も工夫次第のような気がします。今回の球体のサイズは128dot*128dot、マッピングに使用した画像は192dot*96dotとしていますが、このあたりが1枚のDMFフィルタで球体をマッピング(-90度から90度のピッチ角の回転に対応せねばならない)するための論理的な限界です(たぶん・・)。
DMFの枚数を増やし、ややこしい計算を行えばさらに大きな画素数の画像を扱えると思います。このマッピング方法はいわば裏技のような物ですので、これ以上追求するモチベーションはここで途絶える事となりました!現在でも力技ならUV変換できると思いますが、次期バージョンにてよもやテクスチャマッピングの機能がお手軽に使用できる様になりでもしたら。。。