APP下载

基于Unity3D的虚拟展厅风格定制的研究与实现

2017-02-05吴保文王勇坚

文山学院学报 2017年6期
关键词:展厅鼠标实例

吴保文,王勇坚,罗 勇

(1.文山学院 信息科学学院,云南 文山 663099;2.文山学院 艺术学院,云南 文山 663099)

随着虚拟现实技术的发展,各类主题的数字展厅的应用层出不穷。中国的陶瓷文化历史悠久,它的存在可以追溯到公元前8000年至2500年,是中华民族的发展史中重要的组成部分,它代表着中国历史各个时期人们的审美。陶瓷是珍贵易碎的,将陶瓷艺术品应用于三维数字化技术的展示在文化遗产保护的行业内得到广泛认可。

本展厅是以陶瓷文化展厅设计为例,使用3ds Max构建三维模型,在uniyt3D中实现漫游和交互的同时,把展厅风格的自由变换作为研究重点,实现了在不打开和编辑展厅源文件的情况下,只要通过菜单式选择,就可以实现展厅不同风格材质的选择与变换。

1 陶瓷虚拟展厅的开发流程

以陶瓷展品为主题的虚拟展厅首先使用AutoCAD绘制平面图;然后在3ds Max中利用3d捕捉开关的图形按钮对平面图中的直线进行挤出命令操作,按平面图建立三维墙体,并建立三维模型,将完成的展厅三维模型导出为FBX格式;最后将在Unity 3D中为展厅添加材质和灯光、实现漫游和展厅风格的变换[1]。开发思路及流程如图1所示:

图1 陶瓷展厅开发流程

2 陶瓷展厅风格定制功能的实现

2.1 可变换对象的确定

展厅中的墙面、地板、吊顶和展台表面均是展厅风格变换的对象,本展厅中共有28个对象实例需要进行材质的变换,把这些实例分别命名为a1、a2、a3……an……a28。

2.2 材质库的建立

材质变换功能的实现,首先在场景中建立18个(根据开发需要自行确定可供用户选择的材质数量)不同颜色、纹理和风格的实例作为展厅风格变换的材质库,并分别命名为Y1、Y2、Y3……Yn……Y18。

利用Unity 3D的按钮组件创建18个按钮,并定义anniu_01、anniu_02、……anniu_n、……anniu_18函数,用于选择材质Y1、Y2、Y3……Yn……Y18。修改各按钮的on click事件属性,建立changeColor文件与按钮的关联,即当鼠标点击按钮时自动加载changeColor文件中对应的anniu_n函数。

2.3 材质的选择与变换

为展厅创建一JSP脚本文件并命名为changeColor。本展厅实例材质的选择与变换通过各按钮加载此文件实现,changeColor文件中程序的推导及实现步骤如下:

1)定义两个Color类型的变量oldcolor和newcolor,用来存放物体原来的和新替换的颜色或材质;

2)定义两个布尔型变量jihuo和tj。jihuo作为是否选定各材质对应按钮的判断,并赋初值为否,即在未点击装修材质对应的按钮之前,不能对变换实体an进行材质更改。变量tj表示选定变换的实例状态,用于判断用户需要更改的物体是否选定,即用户可以修改tj为真true的物体材质。

定义一个激活函数jihuo_daima(),当按钮按下时jihuo的值变为true,表示可对展厅实例进行修改:

3)定义一个函数Start(),将Renderer组件下material中对应的颜色值赋给oldcolor的作为初值:

4)定义anniu_01、anniu_02、……anniu_n、……anniu_18函数,分别作为18个材质按钮的触发事件:

pd=1则表示按下的是第一个按钮anniu_01、pd=2则表示按下的是第二个按钮anniu_02,以此类推,pd=n则表示按下的是第n个按钮;

newcolor=GameObject.Find("Yn").GetComponent(Renderer).material.color

表示把场景中命名为“Yn”物体的颜色或材质值存储到newcolor变量中。如果pd=1,则newcolor的值为Y1的颜色,pd=2则newcolor的值为Y2的颜色值。每个按钮的在点击时都要响应对应的anniu_n函数。

5)定义鼠标划过事件函数OnMouseOver(),用于修改鼠标划过的某一场景实例状态,将其颜色变为红色:

6)定义鼠标按下事件函数OnMouseDown(),用于修改鼠标按下某一场景实例时,将其颜色变为白色:

7)定义鼠标退出事件函数OnMouseExit( ),用于实现场景实例颜色或材质的变换:

当鼠标退出时判断tj为false或者pd为0,表示展厅实例或按钮未被选中,展厅实例则保留原来的颜色或材质;当判断tj为true并且pd不为0,即表示展厅某一实例和按钮同时被选中,展厅实例将进行与按钮相对应的颜色或材质替换。

8)每一次完成展厅实例材质的变换都需要将激活函数回复到未激活状态,等待下一个展厅实例的选择与材质变换。

3 结束语

本文在Unity 3D中通过JSP编程实现了用户通过菜单操作与展厅进行交互控制,从而实现了用户对展厅风格的一键式定制。此方法从材质变换的角度实现了对展厅的一次建模多次使用,为提高虚拟博物馆的重复利用率提供了思路。

[1] 吴保文.基于3ds Max与Unity3D的虚拟展厅图片更新的实现.文山学院学院学报[J].2016(6):56-58.

[2] 年爱华.基于Unity3D的三维虚拟展厅的设计与实现.广东交通职业技术学院学报[J].2015(8):55-57.

[3] 吴亚峰.Unity开发实战详解[M].人民邮电出版社,2013.12.

[4] 朱惠娟.基于Unity3D的虚拟漫游系统[J]. 2012(12):56-58.

猜你喜欢

展厅鼠标实例
不断改变,不断进步 参观KEF展厅后随笔
BESPOKE ROMANCE展厅
GAB展厅
NORHOR成都展厅
完形填空Ⅱ
完形填空Ⅰ
鼠标折叠笔
45岁的鼠标
超能力鼠标
鼠标也可以是这样的