基于Unity平台的漫游交互系统的设计

2014-11-15 20:09董健
软件工程 2014年11期

董健

摘 要:随着网络及计算机技术的发展,3D实景虚拟漫游已经作为一种全新的展示在房产销售中普遍运用。本系统运用了3Dmax、Photoshop、Unity3D软件,参考现实广场小区,创建虚拟场景。为达到预期效果,通过骨骼动画及JavaScript语言实现控制角色移动转向等动作,用户可以对场景自主漫游、浏览,让用户真正沉浸在虚拟交互环境当中,实现用户与虚拟环境直接交互。

关键词:UV贴图;Unity3D;交互漫游

中图分类号:TP391.9 文献标识码:A

1 引言(Introduction)

虚拟环境系统都是以真实场景为蓝图,可以实现访问者自动漫游虚拟漫游系统是基于地理信息系统技术、虚拟现实技术、宽带网络技术、多媒体技术、计算机图形学等高新技术[1],将真实地理空间信息和其属性信息相结合,构建一个逼真的、具有视觉、听觉、触觉的虚拟景观,用户可以利用计算机网络远程访问这个全新的虚拟景观,通过终端计算机在虚拟景观中漫游。

漫游系统在目前遇到的最大的困难就是在设计和使用中,因为计算机性能的限制,无法做到模型的精细程度和漫游画面的实时性做到完美的统一。要求我们能够针对系统设计的要求进行取舍[2]。

2 场景漫游的实现方法(Method for realizing the

scene roaming)

要实现漫游主要有三个要素,首先是一个完整的虚拟场景,其次是带有行走动画的角色,最后是操控角色的代码控制[3]。其中实现漫游的关键就是在Unity3D中通过JavaScript语言控制绑定人物骨骼动画的角色在虚拟场景中按照用户的意图实现自主交互式漫游。在这里我们采用的是Unity3D来构建我们的漫游系统,Unity3D是目前比较流行的用于三维动画场景模拟、游戏设计等全面的综合设计引擎。

3 场景漫游系统的总体设计(The overall design of

scene walkthrough system)

3.1 系统的技术平台架构

本系统基于Unity3D实现漫游交互,在系统当中用户控制角色漫游,通过角色视角的变化让用户了解该场景,主要的架构如图1所示。

图1 系统技术架构图

Fig.1 Technical system architecture

3.2 系统的开发流程介绍

作为一个虚拟漫游系统,整个设计过程包含了四个过程,分别是问题分析、采集场景参数、建立虚拟场景、实现漫游。主要的过程框架图如图2所示。

图2 系统流程图

Fig.2 Flow chart of the system

4 基于Unity3D漫游系统的实现(Realization of

roaming system based on Unity3D)

4.1 场景中角色的控制

本系统主要构建的是一个建筑小区广场漫游系统,在本系统中可以实现人物前后左右的任意行走、跳跃,可以观察到所建场景的任意一个角度,不会产生人物与建筑的穿插,含有碰撞检测系统,使人物行走观察更为合理[4]。

利用Unity3D提供的Java Script语言编写人物控制脚本,实现人物的移动的调用,脚本如下:

var Bip01:GameObject;

function Update () { ren=GameObject.Find("meng");

if(ren==null){

return;}

if(Input.GetKey(KeyCode.Space)) {

animation.CrossFade ("jump"); }

else{

animation.CrossFade ("idle"); }

将编辑好的脚本添加到场景中的人物模型上,即可实现相应功能。

4.2 漫游视角的控制

在本漫游系统当中我们设定了第三人称视角。根据鼠标控制摄像机来控制视角,利用Unity3D提供的C# Script MouseLook脚本编写摄像机脚本,使摄像机跟随人物运动,右键控制视角旋转,滚轮缩放视距。

using UnityEngine;

public RotationAxes axes = RotationAxes.MouseXAndY;

void Update ()

{ target = GameObject.Find("N1");

// 滚轮设置相机与人物的距离.

if(Input.GetAxis("Mouse ScrollWheel") != 0)

{theDistance = theDistance + Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * ScrollKeySpeed; }

4.3 场景碰撞模型的实现

当角色靠近被碰撞物体时,系统根据碰撞检测算法检测该物体的尺寸,若被检物体高度低于预设值则角色可以通过,反之,角色被物体挡住无法前进[5],如图3所示碰撞检测原理图。

图3 碰撞检测原理图

Fig.3 Schematic diagram of collision detection

在Unity3D当中集成了碰撞检测模块,在Apply Root motion后面打钩即可,台阶高度碰撞设定是调整Step Offset的数值来实现的。

5 结论(Conclusion)

交互式的漫游系统在现在的社会生活中应用的越来越广泛,成为了一个前景十分看好的技术领域。虚拟场景让用户“身临其境”地在漫游中进行多角度体验性观察,尤其是针对于建筑行业以及需要进行数字化展示的特殊行业,多角度全方位的展示与互动也必将成为以后技术发展的新方向。

参考文献(References)

[1] 赵俊昌,程朝武.3DS MAX2010游戏设计师必备实战宝典[M].

北京:科学出版社,2010.

[2] 张凡,谌宝业.3DS MAX游戏场景设计[M].北京:中国铁道出

版社,2009.

[3] 宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社,2012.

[4] 胡安林.3DS MAX材质与贴图应用技法精粹[M].北京:科学

出版社,2008.

[5] 程罡,吴江涛.三维游戏场景设计与制作[M].北京:电子工业出

版社,2010.

作者简介:

董 健(1980-),男,硕士,讲师.研究领域:多媒体信息处理.endprint

摘 要:随着网络及计算机技术的发展,3D实景虚拟漫游已经作为一种全新的展示在房产销售中普遍运用。本系统运用了3Dmax、Photoshop、Unity3D软件,参考现实广场小区,创建虚拟场景。为达到预期效果,通过骨骼动画及JavaScript语言实现控制角色移动转向等动作,用户可以对场景自主漫游、浏览,让用户真正沉浸在虚拟交互环境当中,实现用户与虚拟环境直接交互。

关键词:UV贴图;Unity3D;交互漫游

中图分类号:TP391.9 文献标识码:A

1 引言(Introduction)

虚拟环境系统都是以真实场景为蓝图,可以实现访问者自动漫游虚拟漫游系统是基于地理信息系统技术、虚拟现实技术、宽带网络技术、多媒体技术、计算机图形学等高新技术[1],将真实地理空间信息和其属性信息相结合,构建一个逼真的、具有视觉、听觉、触觉的虚拟景观,用户可以利用计算机网络远程访问这个全新的虚拟景观,通过终端计算机在虚拟景观中漫游。

漫游系统在目前遇到的最大的困难就是在设计和使用中,因为计算机性能的限制,无法做到模型的精细程度和漫游画面的实时性做到完美的统一。要求我们能够针对系统设计的要求进行取舍[2]。

2 场景漫游的实现方法(Method for realizing the

scene roaming)

要实现漫游主要有三个要素,首先是一个完整的虚拟场景,其次是带有行走动画的角色,最后是操控角色的代码控制[3]。其中实现漫游的关键就是在Unity3D中通过JavaScript语言控制绑定人物骨骼动画的角色在虚拟场景中按照用户的意图实现自主交互式漫游。在这里我们采用的是Unity3D来构建我们的漫游系统,Unity3D是目前比较流行的用于三维动画场景模拟、游戏设计等全面的综合设计引擎。

3 场景漫游系统的总体设计(The overall design of

scene walkthrough system)

3.1 系统的技术平台架构

本系统基于Unity3D实现漫游交互,在系统当中用户控制角色漫游,通过角色视角的变化让用户了解该场景,主要的架构如图1所示。

图1 系统技术架构图

Fig.1 Technical system architecture

3.2 系统的开发流程介绍

作为一个虚拟漫游系统,整个设计过程包含了四个过程,分别是问题分析、采集场景参数、建立虚拟场景、实现漫游。主要的过程框架图如图2所示。

图2 系统流程图

Fig.2 Flow chart of the system

4 基于Unity3D漫游系统的实现(Realization of

roaming system based on Unity3D)

4.1 场景中角色的控制

本系统主要构建的是一个建筑小区广场漫游系统,在本系统中可以实现人物前后左右的任意行走、跳跃,可以观察到所建场景的任意一个角度,不会产生人物与建筑的穿插,含有碰撞检测系统,使人物行走观察更为合理[4]。

利用Unity3D提供的Java Script语言编写人物控制脚本,实现人物的移动的调用,脚本如下:

var Bip01:GameObject;

function Update () { ren=GameObject.Find("meng");

if(ren==null){

return;}

if(Input.GetKey(KeyCode.Space)) {

animation.CrossFade ("jump"); }

else{

animation.CrossFade ("idle"); }

将编辑好的脚本添加到场景中的人物模型上,即可实现相应功能。

4.2 漫游视角的控制

在本漫游系统当中我们设定了第三人称视角。根据鼠标控制摄像机来控制视角,利用Unity3D提供的C# Script MouseLook脚本编写摄像机脚本,使摄像机跟随人物运动,右键控制视角旋转,滚轮缩放视距。

using UnityEngine;

public RotationAxes axes = RotationAxes.MouseXAndY;

void Update ()

{ target = GameObject.Find("N1");

// 滚轮设置相机与人物的距离.

if(Input.GetAxis("Mouse ScrollWheel") != 0)

{theDistance = theDistance + Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * ScrollKeySpeed; }

4.3 场景碰撞模型的实现

当角色靠近被碰撞物体时,系统根据碰撞检测算法检测该物体的尺寸,若被检物体高度低于预设值则角色可以通过,反之,角色被物体挡住无法前进[5],如图3所示碰撞检测原理图。

图3 碰撞检测原理图

Fig.3 Schematic diagram of collision detection

在Unity3D当中集成了碰撞检测模块,在Apply Root motion后面打钩即可,台阶高度碰撞设定是调整Step Offset的数值来实现的。

5 结论(Conclusion)

交互式的漫游系统在现在的社会生活中应用的越来越广泛,成为了一个前景十分看好的技术领域。虚拟场景让用户“身临其境”地在漫游中进行多角度体验性观察,尤其是针对于建筑行业以及需要进行数字化展示的特殊行业,多角度全方位的展示与互动也必将成为以后技术发展的新方向。

参考文献(References)

[1] 赵俊昌,程朝武.3DS MAX2010游戏设计师必备实战宝典[M].

北京:科学出版社,2010.

[2] 张凡,谌宝业.3DS MAX游戏场景设计[M].北京:中国铁道出

版社,2009.

[3] 宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社,2012.

[4] 胡安林.3DS MAX材质与贴图应用技法精粹[M].北京:科学

出版社,2008.

[5] 程罡,吴江涛.三维游戏场景设计与制作[M].北京:电子工业出

版社,2010.

作者简介:

董 健(1980-),男,硕士,讲师.研究领域:多媒体信息处理.endprint

摘 要:随着网络及计算机技术的发展,3D实景虚拟漫游已经作为一种全新的展示在房产销售中普遍运用。本系统运用了3Dmax、Photoshop、Unity3D软件,参考现实广场小区,创建虚拟场景。为达到预期效果,通过骨骼动画及JavaScript语言实现控制角色移动转向等动作,用户可以对场景自主漫游、浏览,让用户真正沉浸在虚拟交互环境当中,实现用户与虚拟环境直接交互。

关键词:UV贴图;Unity3D;交互漫游

中图分类号:TP391.9 文献标识码:A

1 引言(Introduction)

虚拟环境系统都是以真实场景为蓝图,可以实现访问者自动漫游虚拟漫游系统是基于地理信息系统技术、虚拟现实技术、宽带网络技术、多媒体技术、计算机图形学等高新技术[1],将真实地理空间信息和其属性信息相结合,构建一个逼真的、具有视觉、听觉、触觉的虚拟景观,用户可以利用计算机网络远程访问这个全新的虚拟景观,通过终端计算机在虚拟景观中漫游。

漫游系统在目前遇到的最大的困难就是在设计和使用中,因为计算机性能的限制,无法做到模型的精细程度和漫游画面的实时性做到完美的统一。要求我们能够针对系统设计的要求进行取舍[2]。

2 场景漫游的实现方法(Method for realizing the

scene roaming)

要实现漫游主要有三个要素,首先是一个完整的虚拟场景,其次是带有行走动画的角色,最后是操控角色的代码控制[3]。其中实现漫游的关键就是在Unity3D中通过JavaScript语言控制绑定人物骨骼动画的角色在虚拟场景中按照用户的意图实现自主交互式漫游。在这里我们采用的是Unity3D来构建我们的漫游系统,Unity3D是目前比较流行的用于三维动画场景模拟、游戏设计等全面的综合设计引擎。

3 场景漫游系统的总体设计(The overall design of

scene walkthrough system)

3.1 系统的技术平台架构

本系统基于Unity3D实现漫游交互,在系统当中用户控制角色漫游,通过角色视角的变化让用户了解该场景,主要的架构如图1所示。

图1 系统技术架构图

Fig.1 Technical system architecture

3.2 系统的开发流程介绍

作为一个虚拟漫游系统,整个设计过程包含了四个过程,分别是问题分析、采集场景参数、建立虚拟场景、实现漫游。主要的过程框架图如图2所示。

图2 系统流程图

Fig.2 Flow chart of the system

4 基于Unity3D漫游系统的实现(Realization of

roaming system based on Unity3D)

4.1 场景中角色的控制

本系统主要构建的是一个建筑小区广场漫游系统,在本系统中可以实现人物前后左右的任意行走、跳跃,可以观察到所建场景的任意一个角度,不会产生人物与建筑的穿插,含有碰撞检测系统,使人物行走观察更为合理[4]。

利用Unity3D提供的Java Script语言编写人物控制脚本,实现人物的移动的调用,脚本如下:

var Bip01:GameObject;

function Update () { ren=GameObject.Find("meng");

if(ren==null){

return;}

if(Input.GetKey(KeyCode.Space)) {

animation.CrossFade ("jump"); }

else{

animation.CrossFade ("idle"); }

将编辑好的脚本添加到场景中的人物模型上,即可实现相应功能。

4.2 漫游视角的控制

在本漫游系统当中我们设定了第三人称视角。根据鼠标控制摄像机来控制视角,利用Unity3D提供的C# Script MouseLook脚本编写摄像机脚本,使摄像机跟随人物运动,右键控制视角旋转,滚轮缩放视距。

using UnityEngine;

public RotationAxes axes = RotationAxes.MouseXAndY;

void Update ()

{ target = GameObject.Find("N1");

// 滚轮设置相机与人物的距离.

if(Input.GetAxis("Mouse ScrollWheel") != 0)

{theDistance = theDistance + Input.GetAxis("Mouse ScrollWheel") * Time.deltaTime * ScrollKeySpeed; }

4.3 场景碰撞模型的实现

当角色靠近被碰撞物体时,系统根据碰撞检测算法检测该物体的尺寸,若被检物体高度低于预设值则角色可以通过,反之,角色被物体挡住无法前进[5],如图3所示碰撞检测原理图。

图3 碰撞检测原理图

Fig.3 Schematic diagram of collision detection

在Unity3D当中集成了碰撞检测模块,在Apply Root motion后面打钩即可,台阶高度碰撞设定是调整Step Offset的数值来实现的。

5 结论(Conclusion)

交互式的漫游系统在现在的社会生活中应用的越来越广泛,成为了一个前景十分看好的技术领域。虚拟场景让用户“身临其境”地在漫游中进行多角度体验性观察,尤其是针对于建筑行业以及需要进行数字化展示的特殊行业,多角度全方位的展示与互动也必将成为以后技术发展的新方向。

参考文献(References)

[1] 赵俊昌,程朝武.3DS MAX2010游戏设计师必备实战宝典[M].

北京:科学出版社,2010.

[2] 张凡,谌宝业.3DS MAX游戏场景设计[M].北京:中国铁道出

版社,2009.

[3] 宣雨松.Unity 3D游戏开发[M].北京:人民邮电出版社,2012.

[4] 胡安林.3DS MAX材质与贴图应用技法精粹[M].北京:科学

出版社,2008.

[5] 程罡,吴江涛.三维游戏场景设计与制作[M].北京:电子工业出

版社,2010.

作者简介:

董 健(1980-),男,硕士,讲师.研究领域:多媒体信息处理.endprint