- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于Unity3d河下古镇虚拟交互漫游系统实现
基于Unity3d河下古镇虚拟交互漫游系统实现
【摘 要】随着虚拟现实交互技术的研究和运用日益深入和广泛,对虚拟场景的真实感和沉浸感都提出更高的要求。目前交互引擎也种类繁多,而且大都功能强大,画面效果表现力亦很强,本文提出以unity3D为交互引擎系统的开发解决方案,介绍采用unity3D游戏引擎构建虚拟河下古镇交互漫游系统的框架,着重阐述虚拟场景交互漫游的方法及实现,包括一个以三维等手段的系统完整制作流程以及一个以路径漫游、天气变化系统、碰撞检测等技术点的引擎具体运用。
【关键词】虚拟场景 交互漫游 三维游戏引擎
虚拟交互漫游又称虚拟现实,是近年来迅速发展起来的一个利用计算机技术开发的综合研究领域。利用其技术表现的三维虚拟场景空间,可使人身临其境。名人场景、文物等古迹遗址数字化再现是当前文化遗产保护的研究热点,随着虚拟现实技术和三维游戏引擎开发日益成熟和发展,使得对河下古镇进行全方位的三维模拟展示成为可能。
河下古镇主体建筑主要包括河下古镇沿河主要景区的古街建筑。系统使用maya构建三维场景模型和贴图,交互漫游和三维预览使用游戏引擎unity3D实现。具体框架分为三维场景搭建,Unity3D平台开发中的物理碰撞、行走漫游、天气变化系统等部分。
一、三维场景搭建
(一)三维模型搭建与模型优化
系统中的三维模型都是采用多边形(polygons)建模方式进行搭建。在创建场景中不规则较复杂物体时,由于物体结构较为复杂,可采用了曲线放样的建模方法。根据不规则物体的轮廓,利用CV曲线讲物体结构绘制出来,然后进行曲线放样得到完全符合物体参照图的NURBS模型,最后通过NURBS to Polypons工具讲模型转化成多边形模型。
由于交互引擎对真个场景面数有局限性,因此减少场景中模型的个数和总体面片数量可以有效降低场景对计算机物理性能的需求。采用整体删减线面和合并点线的方法对模型行进精减,去除一些多余的线和繁复的细节。完成模型精减工作之后使用maya中的Cleanup工具检查模型,修改出现的点线面错误并优化模型。
(二)贴图烘焙与绘制
由于对三维场景模型进行了大量的优化和精减,严格控制了模型的面数,从另一程度上也使得模型本身的细节有所丢失,为了让低精度模型仍然显示高精度模型的细节,对场景中的一些重要物体进行了高精度模型制作,在maya中将分好UV的低模包裹高模选择Normal(法线)工具进行法线贴图烘焙。
二、Unity3D平台开发
Unity3D是一个创建诸如三维视频游戏、建筑可视化、实时三维动画等类型互动内容的多平台的综合型游戏开发工具,是一个全面整合的专业游戏引擎。其平台类似于Director,Blender game engine等利用交互的图型化开发环境为首要方式的软件其编辑器运行在Windows 和Mac OS X下,可发布游戏至Windows、Mac、Wii、iPhone和Android平台。
(一)物理碰撞测试
本系统是模拟第一人称视角游戏开发的一套场景虚拟交互漫游,画面以第一人称为视角,通过敲击键盘上的对应键位在虚拟场景中自由行走。为避免在行走中与墙壁、门、树干等物体发生物体重叠也就是穿插,需要给物体添加物理碰撞成分,以确保在漫游时不肆意穿插。
在本系统的碰撞测试中重点完成的就是第一人称视角主体与地面的碰撞,因此事先做了一个基本的物体与地面碰撞测试。描述如下:当物体碰到地面,输出被物体碰撞的地面的name“Ground”,则表述检测到物体碰撞了地面。具体实施步骤:
1.编写代码
在“Project”面板中单击“Create”旁边的小三角,选择“javascript”创建一个名为“collision”的js文件。双击它,系统启动Monodevelop来编辑js文件。
清除里面默认创建的代码。写上。
function OnCollisionEnter(obj:Collision)
{
Debug.Log(obj.gameObject.name);
}
2.运行程序
程序运行结果,当立方体与地板碰撞时,unity3d底部状态栏会输出地面的name。
由此得知碰撞测试完成,基于这个原理可以给场景中对应的物体加载物理碰撞。
(二)行走漫游
实现行走功能可以使系统操作者在通过敲击键盘上相应键位并结合鼠标使用在虚拟场景中自由移动行走和飞行鸟瞰全景或者任意观看虚拟场景物体,实现完全自主虚拟游览从而达到交互漫游目的。
(三)天气变化系统
在通过对整个虚拟场景进行灯光系统测试之后,确定光源位置和光照方向,并且规划
出天气变化方案。在古镇场景交互漫游系统中使用了U
文档评论(0)