2011-02-06 14 views
3

私は、FLARManagerとpapervision3dを使用して、小さな拡張現実感のハックを実装しています。Augmented Realityでの3Dモデル操作

私の要件は、ボタンをクリックしたときにモデルをヨーイングすることです。

これは私がこれまでにやっていることです:

public class AugmentedReality extends Sprite 
{ 
    private var flarManager:FLARManager;   
    private var scene:Scene3D; 
    private var camera:FLARCamera3D; 
    private var viewport:Viewport3D; 
    private var renderEngine:LazyRenderEngine; 
    private var pointLight:PointLight3D;   
    private var activeMarker:FLARMarker; 
    private var model:DAE; 
    private var modelContainer:DisplayObject3D; 

    public function AugmentedReality() 
    {   
     start(); 
    } 

    private function start():void 
    { 
     flarManager = new FLARManager("../resources/flar/flarConfig.xml"); 
     addChild(Sprite(flarManager.flarSource)); 
     flarManager.addEventListener(FLARMarkerEvent.MARKER_ADDED, onMarkerAdded); 
     flarManager.addEventListener(FLARMarkerEvent.MARKER_UPDATED, onMarkerUpdated); 
     flarManager.addEventListener(FLARMarkerEvent.MARKER_REMOVED, onMarkerRemoved);   
     flarManager.addEventListener(Event.INIT, onFlarManagerInited); 
    } 

    private function onFlarManagerInited(evt:Event):void 
    { 
     flarManager.removeEventListener(Event.INIT, onFlarManagerInited);   
     scene = new Scene3D();   
     camera = new FLARCamera3D(flarManager.cameraParams);    
     viewport = new Viewport3D(stage.stageWidth, stage.stageHeight); 
     addChild(viewport); 
     renderEngine = new LazyRenderEngine(scene, camera, viewport); 
     model = new DAE(true, "model", true); 
     model.load("../resources/assets/geom.dae"); 
     model.scale = 30; 
     modelContainer = new DisplayObject3D(); 
     modelContainer.addChild(model); 
     modelContainer.visible = false; 
     scene.addChild(modelContainer); 
     addEventListener(Event.ENTER_FRAME, loop); 
    } 

ループイベントハンドラを次のように

private function loop(evt:Event):void 
    {  
     if (activeMarker) { 
      modelContainer.transform = FLARPVGeomUtils.convertFLARMatrixToPVMatrix(activeMarker.transformMatrix); 
     } 
     renderEngine.render(); 
    } 

を次のように私は、ボタンのハンドラを持っている:

public function onButtonClicked(event:Event):void 
    { 
     model.yaw(1); 
    } 

モデルに何もしていないようです... :(

お願いします!!!!!!!!!!!!!!!

答えて

0

「ループ」の側で、または内側のループが何であれ、「ヨー」と呼んでみてください。次に、「ヨー」が期待どおりに機能していることを確認できます。動作している場合、おそらく 'onButtonClicked'の署名が間違っているか、適切に接続されていません。