News Information

基于Unity3D的景点漫游系统制作

作者: 牧客数字创意 发布时间: 2023-08-08 点击数: 383

360截图20230808090621377.jpg

摘 要:Unity 3D 是跨平台的虚拟现实创作工具,具有直观的虚拟现实编辑功能,是一个全面整合的专业引擎。牧客数字创意探讨了采用 Unity 3D 作为虚拟现实的开发平台,完成制作景点漫游系统的详细过程和注意事项,大大降低了开发景点漫游系统的难度,提高了制作效率。

关键词:Unity 3D;景点漫游系统;虚拟现实

虚拟现实技术能够利用计算机生成真实的环境模拟效果,使体验者沉浸在虚拟环境中,同时产生现实用户与虚拟环境的直接交互。虚拟场景在沉浸感、交互性与实时性方面的综合效果优势是传统二维效果图及二维和三维动画技术所无法比拟的。三维数字系统漫游系统,不仅能通过互联网更直观地展示景点,还能通过人机交互产生身临其境的感觉,对景区今后的规划与设计具有重要的现实意义。

1,基本介绍。

Unity 3D 是由丹麦 Unity Technologies 公司开发的多平台游戏开发引擎,是一个全面整合的专业游戏制作工具。它的更大 特性就是出色的跨平台性。对游戏或是虚拟现实开发感兴趣的人们来说,学习编程语言,比如 C++ 或是掌握如何使用工业标准级别的游戏引擎是一件极其艰巨的任务,没有系统而完整地学习编程或是计算机动画制作,是很难理解游戏或是虚拟现实技术的概念、方法、设计原则的,但是 Unity 3D 引擎改变了这一现状。Unity 3D整合了丰富的开发资源,包括:地形创建工具、物理引擎、粒子系统、常用脚本、灯光渲染组件、碰撞检测组件、设置图像画面的后处理方法等,并且 Unity 3D提供了一个庞大的类库:Mono Behavior,在这个类库中已经为开发人员定义好了各种方法,可以方便地调用这些方法进行功能的开发。本景点漫游系统采用 Unity 3D 作为虚拟现实的开发平台,大大降低了难度,提高了制作效率。

2,开发前期设计

2.1 景点漫游需要达到的效果

(1)实现网络浏览,单个浏览文件不能太大,要保证大多数普通计算机用户可正常访问;

(2)在虚拟场景中按比例真实还原实体景点,所有重要的场景要尽量真实表现出来;

(3) 提供比较人性化的 GUI 界面便于用户操作,比如“帮助导航”用来给用户提示信息;

(4)供用户浏览模式的选择,包括自定义漫游路径、通过输入设备手动漫游;

(5)设置导航图方便用户了解景点的整体布局情况;

(6)配备背景音乐播放,并可以由用户自行设置关闭或打开;

(7)设置有与景点网站链接。

2.2 景点场景要求

(1)烘焙贴图,烘焙完之后删掉灯光,光线效果直接在物体模型上,但没有实时光线变化。

(2)灯光的逐像素光照,可以改成逐顶点光照。顶点灯光可以让所有的物体在每一帧被渲染一次,像素灯光只能让每一个被灯光照射到的物体在每一帧渲染一次,在漫游场景中通过顶点灯渲染整个画面,从而即使是配置低的计算机也同样可以顺畅运行该系统。

(3)三维模型的面数渲染越多,就会消耗越多的系统资源,将景点漫游用户看不到的面删除,同时对于合并的物体使用同一种材质从而加快渲染的速度。

(4)除模型优化外,在贴图上除了要注意尽量真实,还应注意贴图文件不要过大,避免影响系统运行速度。

3,景点漫游制作过程

3.1 获取景点信息。

景点漫游系统来源于真实的旅游景点,因此获得真实景点中的空间数据信息最关键。 将获得的信息通过平面、三维等软件进行后期处理,即可得到构建景点漫游系统所需的空间数据。

(1) 对景点进行拍照测量,制作平面 CAD 图像,为后期的建模工作提供基础;

(2)仔细研究景点地形地貌,建筑物景点会简单些,自然景点进行场景计算机重绘更难,花费更多工作时间;

(3)用相机拍摄整个建筑,并在图像处理软件中制作贴图,最终应用于模型中。

3.2 模型构建。

模型构建包括地形、建筑物以及环境,地形和建筑在有了具体的地形数据和建筑物数据之后, 可以在 3DS Max 等三维软件中根据景点信息数据进行构建,环境部分主要包括天空、树木和花草,这些在Unity 3D 中有自带的多种模型可以选择,也可以通过软件制作(如:制作树木可以用 speedtree),在高版本的 Unity 3D 中也自带有树木生成系统。在模型的构建中需要注意的是多边形模型面的优化。一个景点漫游系统模型是具有很多个三角面的, 对模型充分的优化可以减小最后执行文件的大小,利于用户快速浏览。除模型优化外,在贴图上除了要注意尽量真实,还应注意贴图文件不要过大,避免影响系统运行速度。贴图大小要为 2 的次方,如:物体贴图为 128×128、512×512 等。

3.3 漫游系统交互性设计与实现。

人机交互技术是通过计算机输入及输出设备,以有效的方式实现人与计算机相互传递信息的技术。在本系统中主要的人机交互技术包括 GUI 界面设计和漫游功能设计。 用户通过浏览器可以直接打开漫游系统,并可进入使用界面选择多个漫游模式,包括自动漫游、手动漫游、地图导航。用户可以通过 GUI 进行交互设计,还可以以 人称视角通过键盘上的 WSAD 四个按键在场景中移动,代码如下:

function Update ()

{

if(Input.GetKeyDown("w"))

transform.position+=Vector3.forward*speed;

if(Input.GetKeyDown("s"))

transform.position-=Vector3.forward*speed;

if(Input.GetKeyDown("a"))

transform.position-=Vector3.right*speed;

if(Input.GetKeyDown("d"))

transform.position+=Vector3.right*speed;

}

配合鼠标随意改变视点角度:

void Start ()

{

if (rigidbody)

rigidbody.freezeRotation = true;

originalRotation = transform.localRotation;

}

public static float ClampAngle (float angle, floatmin, float max)

{

if (angle < -360F)

angle += 360F;

if (angle > 360F)

angle -= 360F;

return Mathf.Clamp (angle, min, max);

}

3.4 多媒体元素的应用

漫游场景与导航图视频能够融合到景点漫游中,可以选择景点视频介绍在三维场景中由用户选择播放,在景点漫游系统中可以加入视频作为全面了解景点的一种形式,Unity 3D 支持的视频格式种类包括 mov、mpg、mpeg、mp4、avi 等。 视频元素要绑定至某个场景对象才能产生作用,视频一般以平面的形式展现,所以可以在游戏场景中创建一个平面对象,然后通过编写脚本的方式控制视频播放,在脚本中主要用到MovieTexture 类,本例中将场景中的大屏幕与景点的视频介绍完美结合(如图三所示),对于景点漫游系统使用者对整个场景的了解起了很大帮助。

场景中视频播放代码如下:

function Update () {

if (Input.GetButtonDown ("Jump")) {

if (renderer.material.mainTexture.isPlaying) {

renderer.material.mainTexture.Pause();

}

Else

 {

renderer.material.mainTexture.Play();

}

}

}

4,结束语

Unity 3D 是跨平台的虚拟现实创作工具,具有直观的虚拟现实编辑功能,是一个全面整合的专业引擎。Unity 3D 更大 的优势是性价比高,并且可以发布成网页进行浏览,有些网络浏览器内置有 Unity3D 播放插件,用户不需要下载客户端,就可以直接体验三维漫游交互效果。Unity 3D 支持各种脚本语言,其中包括 JavaScript、C# 等,兼容各类操作系统,真正地实现跨平台。Unity 3D 在景点漫游系统制作中将得到越来越多的应用。

(本稿由牧客数字创意研发部提供,如转载或引用,请注明出处)