官方教程 收藏本版 +发表新主题
查看: 24378|回复: 0
打印 上一主题 下一主题

开发基于FLARToolKit的增强现实(AR)基础教程(五)

[复制链接]

开发基于FLARToolKit的增强现实(AR)基础教程(五)

精华AngleYF 发表于 2013-5-29 10:41:40 浏览:  24378 回复:  0 只看该作者 复制链接
ARDetector将会扫描BitmapData来决定现在是否是有效的标记。我们在onActivate方法后添加下面的方法:
  1.     /**
  2.     * Creates a Bitmap for us to scan for valid markers.
  3.     *
  4.     */               
  5.     protected function createCaptureSource():void
  6.     {
  7.              capturedSrc = new Bitmap(new BitmapData(arDetector.width, arDetector.height, false, 0), PixelSnapping.AUTO, true);
  8.              arDetector.src = capturedSrc.bitmapData;
  9.              addChild(capturedSrc);
  10.     }
复制代码
声明的变量和导入的类包:
  1.     protected var capturedSrc:Bitmap;
  2.     import flash.display.Bitmap;
  3.     import flash.display.BitmapData;
  4.     import flash.display.PixelSnapping;
复制代码

下一步我们将会在我们调用init之前调用这个方法。改变onActivate方法:


protected function onActivate(event:Event):void{         createCaptureSource();         init();}
下一个方法将会对我们的cardEmulator处理更新captureSrc的bitmapData。在renderViewport方法后添加如下代码:
  1.     /**
  2.     * Updates the capturedSrc with new bitmap data.
  3.     *
  4.     */               
  5.     protected function updateCaptureBitmap():void
  6.     {
  7.              capturedSrc.bitmapData.draw(cardEmulator.viewport);
  8.     }
复制代码
注意到我们是如何由cardEmulator的viewport到capturedSrc画BitmapData了么?这种构建将会允许我们用用户的摄像头置换出cardEmulator。目前我们还有一些东西要添加来使得它工作起来。让我们继续在我们的渲染循环中调用updateCaptureBitmap。改变renderViewport方法:
  1.     public function renderViewport(event:Event = null):void
  2.     {        
  3.              cardEmulator.render();
  4.              updateCaptureBitmap();
  5.              renderer.renderScene(scene, camera, viewport);
  6.     }
复制代码
我们需要做的最后一件事情就是告诉仿真器它不用向它的显示列表添加viewport了,在构造函数中的第四个参数默认为false,所以让我们来改变createEmulatorCard方法中的一条line:
  1.     cardEmulator = new CardEmulator("images/flarlogo.gif", 320, 240, true);
  2.     变为:
  3.     cardEmulator = new CardEmulator("images/flarlogo.gif");
复制代码

记住captureSrc现在直接从仿真器的viewport中取样BitmapData,所以不需要在CardEmulator中显示viewport,如果你现在正在运行,所有的都应该看上去一样除了仿真器正在绘制我们的captureSrc的bitmap。为了确保我们仅有一个显示对象被渲染你可以试着将captureSrc的x属性平移360px。如果你既看到了CardEmulator又看到了captureSrc,那么这个是错误的。


非常好,我们现在已经捕捉到了源,我们的仿真器正在运行所以让我们将它连接到ARDetector.

转载http://miyaonanhai.blogbus.com/logs/70837043.html


分享至:
| 人收藏
回复

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Copyright © 2013-2017 ARinChina-增强现实中国技术论坛   All Rights Reserved.