前回のデータをマウス座標によって3Dオブジェクトが回転するようにしてみました。
マウスに反応してくれるようになるといよいよって感じがしてきます。

サンプル

JavascriptをONにし、最新のFlashプレーヤーをインストールしてください。

ドキュメントクラス

package
{
    import flash.display.BitmapData;
    import flash.events.Event;
    import org.papervision3d.materials.BitmapMaterial;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
    public class Main extends BasicView
    {
        private var _plane:Plane;
        public function Main():void
        {
            super(0, 0, true);
            var bmd:BitmapData=new Img(180,180)
            var bmm:BitmapMaterial = new BitmapMaterial(bmd);
            bmm.doubleSided = true;
            _plane = new Plane(bmm, 300, 300, 3, 3);
            scene.addChild(_plane);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            startRendering();
        }
        private function enterFrameHandler(e:Event):void{
            _plane.rotationX = stage.mouseY - stage.stageHeight * 0.5;
            _plane.rotationY = stage.mouseX - stage.stageWidth * 0.5;
        }
    }
}

回転軸(各rotationの値)が少しわかりにくかったので
↓のサンプルで勉強させてもらいました。
崖っぷちWEBデザイナーブログ | PaperVision3Dでオブジェクト回転とかカメラ移動とか

関連記事

前回のデータにテクスチャを貼り付けただけです。

ライブラリからリンゲージ指定で「Img」クラスとして指定した
BitmapData(画像)を使用しました。

サンプル

JavascriptをONにし、最新のFlashプレーヤーをインストールしてください。

ドキュメントクラス

package
{
    import flash.display.BitmapData;
    import flash.events.Event;
    import org.papervision3d.materials.BitmapMaterial;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
    public class Main extends BasicView
    {
        private var _plane:Plane;
        public function Main():void
        {
            super(0, 0, true);
            var bmd:BitmapData=new Img(180,180)
            var bmm:BitmapMaterial = new BitmapMaterial(bmd);
            bmm.doubleSided = true;
            _plane = new Plane(bmm, 300, 300, 3, 3);
            scene.addChild(_plane);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            startRendering();
        }
        private function enterFrameHandler(e:Event):void{
            _plane.rotationX += 5;
            _plane.rotationY += 4;
            _plane.rotationZ += 3;
        }
    }
}

3DオブジェクトのMaterialの指定がBitmapMaterialになりました。 これはBitmapDataをマテリアル化してくれるみたいです。

関連記事

触りだしたのはいいですが、
「Papervision3D用の世界」を作り出すのがまず大変そう。
Viewport3D、Scene3D、Camera3D・・・色々あるけど、全然わからない。

その辺りのベースをすべて用意してくれてるのがBasicViewクラス。

機能は省かれているかもしれないですが、
とりあえずな僕にはちょうどよさそう。

Spriteを継承しているからドキュメントクラスにextendsしたら
後は3Dオブジェクトの登録とレンダリングの設定のみでいいみたいです。

サンプル

JavascriptをONにし、最新のFlashプレーヤーをインストールしてください。

ドキュメントクラス

package
{
    import flash.events.Event;
    import org.papervision3d.materials.WireframeMaterial;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
    public class Main extends BasicView
    {
        private var _plane:Plane;
        public function Main():void
        {
            super(0,0,true);
            var wfm:WireframeMaterial = new WireframeMaterial(0xFF0000);
            wfm.doubleSided = true;
            _plane = new Plane(wfm, 300, 300, 3, 3);
            scene.addChild(_plane);
            addEventListener(Event.ENTER_FRAME, enterFrameHandler);
            startRendering();
        }
        private function enterFrameHandler(e:Event):void{
            _plane.rotationX += 5;
            _plane.rotationY += 4;
            _plane.rotationZ += 3;
        }
    }
}

14行目のdoubleSidedはオブジェクトの両面にマテリアルを反映するかどうかです。

関連記事

fl.events.ScrollEventを使用しようと思ったときにひっかかりました。

上記のクラスはScrollPaneやTextAreaなどの
UIコンポーネントで使用されているクラスで、
それらをそのままライブラリに追加し使用する分には問題ありません。

しかし、クラスだけを使用したいときには
クラスが見つからないと怒られてしまいます。

よくよく見たら、デフォルトのグローバルクラスパスには
flパッケージがありませんでした。

どうしても、クラスだけ使いたいときは、
下記をクラスパスに追加しましょう。

$(AppConfig)/Component Source/ActionScript 3.0/User Interface
1  2  3  4  5  6  7  8  9  10  11