Papervision3D の Materials(4) ~ Bitmap 系 ~
2007/05/22 20:39 - Papervision3D
今回は Bitmap 系マテリアルの話です。
BitmapMaterial( asset : *, initObject : Object = null )
BitmapAssetMaterial( id : String, initObject : Object = null )
BitmapFileMaterial( url : String, initObject : Object=null )
fla 内のムービークリップをテクスチャーとする Movie 系マテリアルに対して、Bitmap 系マテリアルは、jpg や png などの画像を 3D オブジェクトのテクスチャーとします。
BitmapMaterial、BitmapAssetMaterial は、その名前から分かるように、テクスチャーの指定方法は Movie 系マテリアルのそれぞれと同じです。
new BitmapMaterial( new image( 100 , 100 ) ); new BitmapAssetMaterial( "image" );(リンケージプロパティのクラス欄が”image”だった場合)
一方 BitmapFileMaterial は外部画像ファイルをテクスチャーとして指定することができます。
new BitmapFileMaterial( "image.jpg" );
画像を fla 内に取り込む必要がない BitmapFileMaterial は、かなりの優れものだとは思いますが、これを使う場合、画像のプリロードに関わる処理を考えなきゃいけないのかなぁ、とも思ったりもします。
てゆーかむしろ、プリロードが必要になるようなデカい画像をテクスチャーにすんなってことかな。
この三つの Bitmap 系マテリアルは、Movie 系マテリアル同様、いずれもその挙動は同じなので、BitmapAssetMatarial のサンプルだけ掲示します。
ところで、BitmapMaterial の引数の件ですが、何食わぬ顔で new image( 100 , 100 )なんぞと書いてますが、Public Alpha ではライブラリのビットマップ画像を attachMovie 的に呼び出す場合、new image() で済んでいたように記憶していました。
今回プラットフォームを Flash CS3 に変えたところ、new image() だと、引数が二つ足りないというエラーメッセージが出るじゃあありませんか。
リンケージプロパティを見ると image のベースクラスとして flash.display.BitmapData が書かれています。
flash.display.BitmapData は必須引数として、第1引数に幅、第2引数に高さを要求するので、サブクラスに当たる image() にもソレが必要なのかなぁ、と思い jpg 画像の幅と高さを入れて、new image( 100 , 100 ) と記述したところエラーは出なくなりました。
これが正しいのかどうかは、よく分かりません。でもたぶん正しいんじゃないかと思います。
Materials ソース
- Graphics コマンド系( graphics.zip 2.10 KB as のみ)
- Movie 系( movie.zip 8.51 KB CS3 )
- Bitmap 系( bitmap.zip 24.9 KB CS3 )
- VideoStreamMaterial( video.zip 1.15 KB as のみ)