Augmented Reality 3D Manipulation

I use FLARManager and papervision3d to implement a small hack with augmented reality.

My requirement is to lure the model at the touch of a button.

This is what I have done so far:

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

Loop event handler:

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

I have a button handler:

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

He seems to be doing nothing with the model ... :(

PLEASE, HELP!!!!!!!!!!!!!!!

+3
source share
1 answer

Try yawing toward the loop or whatever your inner loop is. Then you can make sure that the “yaw” is working properly. If it works, the signature "onButtonClicked" may be incorrect or incorrectly connected.

0
source

Source: https://habr.com/ru/post/1790292/


All Articles