• Papervision3D(GreatWhite)でMetasequoiaのデータ(.mqo)を読み込みたい
  • Metasequoiaクラスとやらが使えるとのこと
  • 簡単にできたワーイヽ(゚∀゚)ノワーイ
  • オブジェクトに対してのマウスオーバー等のイベントを受け取りたい
  • Viewport3D及びマテリアルのinteractiveプロパティをtrueにする
  • Metasequoiaクラスではないっぽい?
  • じゃあつけちゃえ

ちょっとしたサンプル

手元にあるコードから抽出したコードです。元のコードは動いてますが、こっちは試してません。
でも雰囲気は伝わると思います。
あまりやりたくなかったけどMetasequoia.asを変更してしまいました。
こうしなくても良い方法があれば教えてください。(Metasequoiaをオーバーライドとかではなく)
AS3&Papervision3Dはまだわからないことだらけなので、助かります。

Metasequoia.as

// public var doubleSided:Boolean = false; の下あたりに
public var interactived:Boolean = false;
(省略)
//material.doubleSided = this.doubleSided; の下あたりに
material.interactive = this.interactived;

Sample.as

package {
  //(省略)

  public class Sample {
    private var houses:Array = new Array();
    public function Sample() {
      // 第3引数がinteractive
      super(0, 0, true, true, FreeCamera3D.TYPE);
      houses.push(new House('house1.mqo', 0, 0));
      houses.push(new House('house2.mqo', 100, 100));
      houses.push(new House('house3.mqo', -100, -100));
      for(var i:Number=0; i<houses.length; i++) {
        scene.addChild(houses[i]);
      }
      startRendering();
    }

  }

}

House.as

package {
  //(省略)
  import org.papervision3d.events.*;
  import caurina.transitions.Tweener;
  import org.libspark.pv3d.Metasequoia;
  
  public class House extends Metasequoia {
    
    public function House(mqo:String, x:int, z:int) {
      super();
      this.interactived = true;
      this.addEventListener(Event.COMPLETE, onLoadHandler);
      this.load(mqo);
      this.x = x;
      this.z = z;
      this.y = 0;
    }

     public function onLoadHandler(event:Event):void {
      // マウスオーバーで大きくする
      this.addEventListener(InteractiveScene3DEvent.OBJECT_OVER, mouseOverHandler);
      this.addEventListener(InteractiveScene3DEvent.OBJECT_OUT, mouseOutHandler);
    }

    public function mouseOverHandler(event:InteractiveScene3DEvent):void {
      Tweener.addTween(this,{scale: 2,
                             time:1,
                             transition:"easeOutElastic"});
    }

    public function mouseOutHandler(event:InteractiveScene3DEvent):void {
      Tweener.addTween(this,{scale: 1,
                             time:1,
                             transition:"easeOutElastic"});
    }
    
  }

}