2011-02-06 64 views
3

我正在使用FLARManager和papervision3d來實現小型增強現實黑客。增強現實中的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'的簽名是錯誤的或者它沒有正確連接。