3D моделирование манипуляций в дополненной реальности

Я использую FLARManager и papervision3d для реализации небольшого взлома дополненной реальности.

Мое требование - рыскать модель при нажатии кнопки.

Это то, что я сделал до сих пор:

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);
    }

Похоже, что он ничего не делает с моделью...:(

ПОЖАЛУЙСТА ПОМОГИ!!!!!!!!!!!!!!!

1 ответ

Попробуйте вызвать 'yaw' в стороне от 'loop' или любого другого внутреннего цикла. Тогда вы сможете убедиться, что "рыскание" работает как положено. Если это работает, возможно, подпись onButtonClicked неверна или неправильно подключена.

Другие вопросы по тегам