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

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

[复制链接]

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

精华AngleYF 发表于 2013-5-29 10:46:05 浏览:  21020 回复:  0 只看该作者 复制链接
建立一个可以提供数据的摄像头比你想象得简单得多。在我们构建利用摄像头的文件的同时,我们将会提出如何切换debug模式开闭让我们从添加下面的方法开始:
  1.     /**
  2.     * Creates a camera or emulator to use as the src for the ARDetector
  3.     * to analyze for markers.
  4.     *
  5.     */               
  6.     protected function createCamera():void
  7.     {
  8.             if(debug || !Camera.getCamera())
  9.             {
  10.                       createEmulatorCard();      
  11.               }
  12.             else
  13.             {
  14.                       webcam = Camera.getCamera();
  15.                       webcam.setMode(arDetector.width, arDetector.height, 30);
  16.                       video = new Video(arDetector.width, arDetector.height);
  17.                       video.attachCamera(webcam);
  18.               }
  19.     }
复制代码

这个是用来检查debug模式是否激活或者是否有摄像头被检测到并且创建了CardEmulator。如果debug模式没被激活,我们创建了一个新的Camera实例并实例化了。video将会显示从摄像头来的视频流,所以我们将它匹配ARDetector的canvas的分辨率(320*240)并且将摄像头的实例附加给video。

声明的变量和导入的类包:

  1. protected var debug:Boolean = false;
  2. protected var webcam:Camera;
  3. protected var video:Video;
  4. import flash.media.Camera;
  5. import flash.media.Video;
复制代码
下一步在我们的init方法中将createEmulatorCard();替换为
  1.     createCaptureSource();
  2.     createCamera();
复制代码
现在我们需要做的是移除cardEmulator.render()
  1.     public function renderViewport(event:Event = null):void
  2.     {      
  3.             updateCaptureBitmap();

  4.             try
  5.             {
  6.                       if (arDetector.detectMarker()) {
  7.                                arDetector.calculateTransformMatrix(resultMat);
  8.                                baseNode.setTransformMatrix(resultMat);
  9.                                active();
  10.                        }
  11.                       else
  12.                       {
  13.                                inactive();
  14.                        }
  15.               }
  16.             catch(errObject:Error) {
  17.                         trace(errObject.message);
  18.               }
  19.            
  20.             renderer.renderScene(scene, camera, viewport);
复制代码
并改变我们的updateCaptureBitmap:
  1.     protected function updateCaptureBitmap():void
  2.     {
  3.             if(debug || !video)
  4.             {
  5.                       cardEmulator.render();
  6.                       capturedSrc.bitmapData.draw(cardEmulator.viewport);
  7.               }
  8.             else
  9.             {
  10.                       capturedSrc.bitmapData.draw(video);
  11.               }
  12.     }
复制代码
现在如果你编译你的程序你会被询问是否使用摄像头,点击确认之后就大功告成啦!!!

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



分享至:
| 人收藏
回复

使用道具 举报

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

本版积分规则

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