Category Archives: Papervision3D

Papervision3Dでメタセコイアのmqoファイルを表示する

出来るらしいというのは知ってましたが、やったことなかったのでやってみました。

<<– MqoSample.swf –>>

この表示されてる戦闘機は、DOGA-L1で作ったモノ。

それをMetasequoia LEで読み込み、mqoファイルを作成。

このあたりの作業方法は、んぱかさんとこを参照のこと。

4

Macユーザーの僕は、VMWare Fusionでこの一連の作業を行いましたが、仮想マシンの3Dアクセラレーションがなくても特に問題ありませんでした。

mqoファイルの読み込みには、Metasequoiaクラスを使用。

現在は、Papervision3D 1.7を中心に使用しているので、1.7用のファイルをダウンロードして使用。

1.7用のファイルは、クラス名がMetasequoiaとなっていて使い勝手が悪かったので、Metasequoia_1_7に変更して使用。

MqoSample.as

Papervision3DとTweenerの組み合わせでの立方体の回転

Papervision3DとTweenerの組み合わせで、立方体を回転させるサンプルを作ってみました。

addとdecで動きの選択。

適当な場所をマウスクリックで、立方体の回転。中心点から遠ければ遠いほど速く動きます。

まぁなかなか、かっこよく動いてよいんじゃないかと。


Pv3dTweener.as


TextButton.as

Papervision3D public beta版では、BitmapMaterialの挙動が変わった

Papervision3Dがpublic betaになったとのこと。

新しいバージョンになり、svnのアドレスも変わったようなのでインストールして試してみた。

インストールしたバージョンは、Revision 29。

試してみると、どうもBitmapMaterialを使ってる今まで書いたコードがうまく動かない。

んー?弱った。

BitmapMaterialに対して描画して、テクスチャに変更をかけているサンプルが動かない様子。

単純なコードを書いて試し見ると、次のことがわかった。

1.

BitmapMaterialはBiamapDataを渡されると、以前のバージョンでは、参照を保持していたと思われる。だが、今のバージョンは、渡されたものと同じコピーを内部に作成して保持するようだ。

なので、Material内部のBitmapMaterial.bitmap に対して、描画処理を行わなければならない。

2.

BitmapMaterial.bitmapに対して描画するオブジェクトは、addChildされた
ものでなくてはならないようだが?

なんか納得いかないけど、addChildしてないと描画されないので、どうもそういうことのようだが、なんでなのか?

とりあえず、下記のテストコードでは、textFieldをaddChildする処理をはずすと、何故か描画されない。

TextFieldの場合だけ?よくわからん。

ということみたい。

調査のために書いたテストコードと、それによって生成されるswfが以下のもの。


Pv3DBmpmat.as

Papervision3Dでカメラの画像をテクスチャにする

昨日のFLVをテクスチャに貼るコードを、ちょっと変えてウェブカメラなど、PCに接続されているカメラの画像をテクスチャに貼るコードを書いてみました。

MAC BOOK、MAC BOOK PROなら、元からカメラが付いていますので、Flashのカメラ設定をすれば動きます。

コード的には、昨日のFLVより簡単。

Cameraクラスを使用して、ウェブカメラの画像を取得。

毎ループ、テクスチャのビットマップにカメラ画像を描画。

って感じですね。

カメラがあれば、次の絵のように、カメラ画像がテクスチャとして貼られた立方体に、ブラーかかかったり、かからなかったりしながら表示されるはずです。

2_5

以下、ソースコード。


CameraTexture.as

Papervision3DでFLVのムービーをテクスチャ表示する

というのをやってみました。

ちなみに、この猫、電脳空間カウボーイズのトグサ秋月氏の猫ですね。

猫がサンプルに出てくると、猫でもわかるプログラミングみたいで、微妙に良いんじゃないかとか勝手に思ってるんですが(笑

このサンプル、ビデオ再生のループ処理もやってるところが微妙にポイントですかね。

参考資料は、ここ

原理的には、ビデオ再生して、そのビデオを毎ループ、テクスチャのビットマップに描画してます。

あとはなんとなくブラー処理を、見た目のために追加。

以下、コードの太字の部分が重要な点ですかね。


Video3D.as

Papervision3Dでのフィルタエフェクト

さっき、発光エフェクトを作ったら、つまりFlex 2のエフェクトであるFilter各種は普通にPapervision3Dで使えることが解った。

なんで、ブラー、ドロップシャドウ、グロウ、ベベルをマウスクリックでそれぞれ切り替わるサンプルを作ってみた。

ベベルはオブジェクトが3Dでぐるぐる回ってるんで、だいぶ不自然なんだけど。

ポイントは、それぞれのエフェクトを行うためにフィルタを設定している、setFilter関数ですね。


FilterPv3D.as

Papervision3Dでの発光エフェクト

発光エフェクトを作ってみました。

ポイントとしては、DisplayObject3Dのcontainerが作られる必要があるので、まず、sceneをMovieScene3Dで作製する点。

あとは、その平面の持っているcontainerのfiltersに発光フィルターを設定してやればよいだけ。

このプロパティに対してフィルターかければいいんだったら、結局どのエフェクトもかけられるってことか。

ここのGlowを参考にしました。


GlowEffect.as