flash 360度3D虚拟实境(cubicVR)实现原理

flash 360度3D虚拟实境(cubicVR)实现原理

flash的3D虚拟实境最早源自于德国的flash图形学大牛andre.michelle在其labsite:lab.andre-michelle.com上发表了一篇关于虚拟实境的文章,并提供了一个实例(NaN sourcecode).为了深入虚拟实境,在接下来的2个月里我陆续找到一些cubicVR的源文件并尝试破译了一些源码,我同时尝试开发了一个简单的flash3D引擎以及图片3D拉伸算法,所有这些的思想均来自于andre-michelle在其日志中提到的一些idea.现在在这篇文章中所用的实例依然是我对andre早期版本的整理,虽然目前我开发的新版本有更好的结构以及执行效率,但此版本的编程思想更通俗易懂。我想利用这个假期时间开发出flash球型虚拟实境,使它变得更真实。

在flash里部署3D虚拟实境无疑是一个革命性进步,我们再也不用去安装java虚拟机和QTVR了,事实上,在基于flash的可编程矢量图形界面基础上开发出来的虚拟现实可以通过创新的用户界面以达到完美的用户体验。city8.com既采用这种技术来部署他们的全景体验城市地图。

demo:鼠标拖拽以转换camera视角

原理:

点透视与投影

通过1点透视来产生远小近大的变化以产生空间感,在cubicVR中,设想观察者camera在一个正六面体中央,通过一点透视来计算每个面的在空间投影中的位置,以产生透视效果。

demo:没有导入透视方程的情况:

细分贴图

flash的matrix类只支持2D图形变换:切变、缩放、平面位移。位图无法实现3D变换,这与openGL不同,openGL只需要在定义多边型顶点和贴图法线,位图就会自动贴到一个面片上,而且整个贴图过程完全由GPU完成。而在flash中必须使用细分贴图的方法来欺骗人们的眼睛,既:将一张图片细分为n张小的三角面片,再将小三角面片进行平面切变,正因为如此,flash3D一旦涉及贴图必然导致大量占用cpu运算资源。

细分贴图的demo:
http://godson.blueidea.com/archives/2006/3708.shtml

消隐算法

如果没有消隐算法,那么观察者只能看到离屏幕最近的面,而不能看到整个3D空间,理论上消隐算法有3个步骤:1在一个六面体中,面法线与视锥体夹角大于180度则应设为不可见,2在同一个像素上,只显示与camera最近的多边形(Zbuffer算法),3投影在屏幕以外的多边型不可见,但这三种算法非常占用cpu资源,andrew设计了一种更简单的算法:1多边形的中心与camera重合,在camera坐标系中Z值<0的多边形不可见,2投影在屏幕以外的多边型不可见。

经典论坛讨论
http://bbs.blueidea.com/thread-2717880-1-1.html

 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着互联网富媒体时代的到来,越来越多的互联网公司、广告公司等迫切需要突破传统超文本格式的新型业务模式,视频和全景展示系统就是其的代表。 全景展示系统已经越来越多的应用于房地产看房、汽车内部情况查看、数码产品展示等领域,没错,能让您自由在房间里面转来转去体验身临其境观看的,就是全景系统。 户提供最优秀的全景展示系统,减少您重复开发的成本,该系统的特点是: 1、纯Flash开发,因此无需客户安装任何插件,用户打开网页即可观看使用,无需安装Java或者QuikTime插件,终端用户体验更好! 2、动态载入图片,全景播放器和图片分离:无论多少全景场景,整个网站只需一个我们的全景播放器,,将所有场景的图片动态载入,高效方便。有些全景系统,需要对每套图片都生成一个Flash文件,一方面,需要依赖人工操作,耗费了一些时间;另一方面,这类系统每个全景都有一个Flash文件,造成了空间和带宽资源的浪费。而我们的全景系统,只需要公用一个全景播放器,然后任意多的全景场景共用该播放器,节省了空间和带宽成本;更重要的是,当用户需要发布新的全景时,可以通过网站后台,上传几幅图片即可。不需要使用工具生成flash全景,高效便捷,是未来的趋势。 3、支持锚点(热点)功能,可以从一个房间进入另一个房间,自定义任意位置、任意数量的锚点。可以通过网页管理,易于操作。 4、图像高保真,无失真和变形:可以通过下面我们的演示页面,看出我们的全景图像的变形程,绝无变形和扭曲。 5、提供源代码,是目前国内唯一提供源代码的360全景展示系统,解除客户后顾之忧。 6、提供全景制作的培训和方案指导:我们提供完善的解决方案和指导服务,从全景图片的拍摄和后期处理,网站的搭建等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值