Papervision3Dメモ #24

2007.08.20

InteractiveSceneManagerとかMouse3Dとか

PV3Dのsvnリポジトリに、FaceLevelInteractivityっていうブランチが出来てて、やたらハイペースでコミットされまくってたので何事かと思ってたら、RockOnFlashで紹介されてた。InteractiveMaterialをふまえた上での次のステップを開発中みたいで、Faceレベルでのマウスイベントサポート(?)とか、3Dワールド座標系→2D座標系への変換とかがサポートされるらしい…んだけど良くわかんない。とりあえずRockOnFlashの件のエントリにサンプルが紹介されてて、svn経由でソースがダウンロードできるので、これを拝借して試してみようと思ったら、FlashCS3でないとパブリッシュできないサンプルだった。ガックシ。

CS3持ってないので、Flex2SDKのみで動くように「helloMouse3D」のmain.asを改造してみた。

Mouse3dTest.swf(要:FlashPlayer9)

デモとしてはハデで楽しいんだけど、これで何作るかが問題だよなとつくづく思う。何かひらめくまでは貪欲に技術を吸収していくべ。

07/08/23追記
コメント欄でご質問いただいたので、現時点での最新版であるPV3D Rev.208を使う前提で、簡単に説明を追記してみる。

まずは、このリビジョンのMovieMaterial.asにバグがあるのでこれを修正する。これをやらないと何をやっても動かないです。

MovieMaterial.as 106行目
animatedMaterials[ this ] = initObject.animated || false;

animated = initObject ? initObject.animated || false : false;

「helloMouse3D」の改造ポイントに関しては、ほとんどオリジナルと変えてない。変えたのは大きく2箇所で、オリジナルのソース中でInteractiveMovieMaterialの設定してる部分と、マウスイベントの部分。Main.as89行目で

var material:MovieMaterial = new InteractiveMovieMaterial( new canvas() );

となっている部分の「new canvas()」が、.flaファイル内で定義されているクラスっぽかったんで、

var sp:Sprite = new Sprite();
sp.graphics.beginFill(0×0099cc);
sp.graphics.drawRect(0, 0, 500, 200);
sp.graphics.endFill();

var material:InteractiveMovieMaterial = new InteractiveMovieMaterial( sp );
material.allowAutoResize = false;

ってな感じでSprite作ってInteractiveMovieMaterialに投げた。上のデモはbeginGradientFillでグラデ塗りしたけど、この辺はお好きなように。allowAutoResizeをfalseにするのはかなり重要。あと、オリジナルでは「material.smooth = true」に設定してあるけど、パフォーマンスがかなり悪くなったんで消した。

次にマウスイベント。handleMouseDown、handleMouseMove内で、

canvas.material["movie"]["surface"].graphics

となっている部分を、

canvas.material["movie"].graphics

に変更。

だいたいこんな感じです。もっとスマートな方法があると思うし、オレ自身それほどAS3やPV3Dに精通してるわけじゃないので、バカっぽい事やってる可能性大ですが参考になれば幸いです。

関連する投稿

Trackback URL : http://blog.r3c7.net/wp-trackback.php?p=92

コメント / トラックバック2件

  1. singo より:

    はじめまして、Papervision3Dの初心者です、いつもこのサイトで勉強させていただきます。
     早速質問をさせていただきたいが、自分もhelloMouse3Dのmain.asをFlex2SDKで動かないことに困っています。note.xさんはどうやって改造したのを知りたいので、もしよければ、ソースを公開していただけませんが、

     よろしくお願い致します。

  2. [...] note.x先生のブログでソースつきで解説されているので参考になるかも。 [...]

コメントをどうぞ

Powered by WP Hashcash