基于Unity3D的虚拟水流墙系统的设计研究

Babybus-u3d技术交流-基于Unity3D的虚拟水流墙系统的设计研究

来源:[第三维度

作者:张锡英,韩吉烨
单位:东北林业大学信息学院

** 摘要
针对现有水流墙系统中水流真实性不高、可移植性不好等问题,开发一套新的基于[Unity
3D虚拟水流墙系统。该系统采用SPH算法对水流墙系统中的水流加以优化,使其能够达到模拟真实水流的效果,真实地模拟了水流的视觉效果和物理特性。利用C#语言编写的画线代码可以完美地在屏幕上画线改变水流的路线。同时采用了以线段代替点的全新存储结构,减小存储压力,从而提高性能。
该项目成果可大量发布于Windows、Android、IOS、Linux等多系统中供用户进行体验,并且对硬件需求不高,无需绑定硬件,一般配置都可以完美运行,支持发布到多种操作平台,以便满足多平台的需求,使用户可以得到更真实、更全面、更方便的体验效果。
虚拟水流墙系统是一款对现实中水流的各种物理特性进行模拟的[虚拟现实
系统
。随着[虚拟现实
技术在各领域的广泛应用,基于[Unity
3D的[虚拟现实
研究已经成为当前研究的热点。初级版本的虚拟水流墙系统现在已存在于许多城市科技馆、科技主题公园等公众场所用于展示与用户体验,但这些初级版本的虚拟水流墙系统中存在着许多缺点和不足。针对这些问题,笔者开发了一款全新的虚拟水流墙系统。
** 1 水流墙的设计与实现

在水流墙项目系统中,水流是项目的主体。在程序启动时,会有虚拟的水流从屏幕顶端流出。
** 1.1 [Unity3D [Unity3D是一款基于.NET的游戏开发引擎。作为一款成熟的3D游戏擎,[Unity
3D为游戏设计者提供了许多游戏开发所必要的功能。这些强大的功能为开发该水流墙项目提供了可行性保障。同时大大降低了开发成本,缩短了开发周期并降低了风险。
由于[Unity
3D可以充分、实时地处理大量的三维模型和数据,并能够提供高效的性能和高质量的保证等特点,长期被用于三维显示、
实时交互的项目开发设计项目中。Uni-ty3D还有一个很重要的特点是跨平台开发,它实现了一次开发、一键式发布的方式发布到多种平台的功能,目前支持发布到Android、Windows、Linux、Mac、IOS、Web和Flash等平台。这个特点为在多平台发布和项目实现可移植性提供保障。
** 1.2 粒子系统

粒子系统是一种用于模拟不规则物体或自然场景的方法,这些不规则物体的特点是动态性和随机性。粒子系统中的每个粒子都具有形状、大小、颜色、透明
度、运动速度、运动方向、生命周期等多种属性,而且这些粒子随时间的推移不断变化,在时间和空间上具有动态分布特性,从而尽可能真实地模拟出具有复杂运动规律的动态特效。粒子系统的基本开发流程包括以下几个步骤。
1.2.1 确定模拟对象的粒子模型。
在利用粒子系统进行模拟之前,首先要对待模拟对象的运动规律进行分析,从而选择合适的粒子模型进行模拟。
1.2.2 初始化粒子系统。
根据上一步骤确定的粒子模型对粒子系统进行初始化,包括设置粒子数量、大小、形状、颜色、初始位置等属性。
1.2.3 设置粒子运动规律。基于要模拟的对象设置粒子的运动规律及相关公式。通过粒子的协同运动模拟对象的运动。
1.2.4 粒子状态更新。
粒子系统开始运行之后,需要根据粒子的运动规律按一定频率更新粒子状态。
1.2.5粒子的消亡。
每个粒子完成一个生命周期的所有活动之后便会进入消亡阶段,此时需要将消亡的粒子及时删除,以免耗费过多的系统资源。
** 1.3 SPH算法

SPH算法是典型的拉格朗日视角,基本原理是通过粒子模拟流体的运动规律,然后转化成网格进行流体渲染。SPH算法的基本思想是将连续的流体分解为无数个细小的颗粒,这些颗粒相互影响,共同形成复杂的流体运动,其中每个单独的流体粒子都遵循牛顿第二定律。
SPH算法的基本运算流程包括以下几个步骤。
(1)初始化粒子,为每个粒子添加初始值。包括粒子的初始位置、初始速度等。
(2)根据公式[图片上传中。。。(1)]计算出每个粒子的密度。其中,m为每个粒子的质量,h为相互作用的两粒子间的距离,ri、rj分别为两粒子的位置,ρ(ri)即为ri点处粒子的密度。
(3)根据公式P=K(ρ-ρ0)计算出每个粒子的压强。其中,ρ0是流体的静态密度,K是和流体相关的常数,只跟温度有关。计算结果P即为所有粒子压强。
(4)根据公式计算每个粒子的加速度。


基于Unity3D的虚拟水流墙系统的设计研究

(5)根据临界条件来调整加速度。
(6)根据加速度计算每个位置的速度变化。
(7)根据速度计算粒子的位置变化。
(8)重新绘制粒子位置。
(9)返回到步骤2重新计算粒子密度,直到粒子加速度为0,位置不再发生变化为止。
** 2 画线的设计与实现

该项目的基本目的是用户可以在一个虚拟的有水流的环境下进行画线、删除等操作,所画的线会与虚拟水流中的水滴发生碰撞,改变水流的流动路径。基本思想是基于C#语言进行编码实现画线部分,使得画出的线具有碰撞盒,可以实现刚体碰撞。
** 2.1 画线操作的设计

开发过程中发现,实际操作中并非需要对每个点都进行存储,因为项目实际运行时应该是在触摸屏幕上运行的,而此时所需要的最小的长度单位应该是手指的宽度,而非屏幕像素中的每个点。所以在画线过程中并没有存储鼠标动作的每一个点,而是采用线段代替点作为画线过程中的最小长度单位,不需要将鼠标遍历过的所有的点都进行存储,而是仅仅存储满足条件的线段的起点和终点,并存储在结构体内,建立与之相对应的对象并将结构体存储在链表中。这样做有几个好处。
(1)由存储点变为存储线段,显然是减小了存储的压力,提升了程序性能。
(2)方便管理。并非将每个点都存进链表,而是利用有限的线段代替,每个线段对应一个对象,根据对象添加碰撞盒,减小了添加碰撞盒的难度。
(3)方便删除。在删除操作时,并不需要考虑每次删除的点在链表中的什么位置,
而是仅仅知道删除的点在哪条线段上,直接将该线段删除,并删除对象即可。
(4)设计的常量可以随时变更,更加灵活,以便适应更多的环境要求。这种用线段代替点的算法是项目相对于已有的系统的创新点之一。
画线算法基本流程如图1所示。


基于Unity3D的虚拟水流墙系统的设计研究

图1 画线算法基本流程

** 2.2 删除操作的实现

删除操作是该项目中的又一个重点,也是难点。项目在实际运行中,不可能因为某次画线出现错误而重新启动项目并且重新画线。作为娱乐、展示的项目的,其操作人员并非都是专业人士,所以一定要有类似删除、重做等容错功能。这就使得删除操作必须存在。
在删除操作时,首先需要寻找要删除的点在哪个对象中,这部分是调用C#内部函数处理的。
删除操作算法流程如图2所示。
[图片上传中。。。(4)]
** 2.3 碰撞设计

碰撞由碰撞检测、速度调整、位置调整3个部分组成。该研究中碰撞分为粒子间碰撞、粒子和所画线段之间的碰撞两部分。对于粒子间的碰撞,需要进行碰撞检测,根据牛顿第二定律调整速度,进而调整粒子位置。而对于粒子和所画线段的对象之间的碰撞,仅需要在检测之后调整粒子的速度和位置即可,线段对象不发生形变和位移。实现方法是实现水流的同时为粒子系统中的所有粒子添加碰撞盒,使其能够具有真实水流的物理特性。画线的同时为所画的线段添加碰撞盒。使其在与水滴碰撞的同时发生刚体碰撞,实现阻挡、改变水流流向的目的。碰撞盒的大小是根据画线过程中每个对象的长短来确定的,以保证运行时所画的线可以完全阻挡水流。
** 2.4 成果展示

基于[Unity
3D的水流墙系统已经实现,图3分别为系统运行时的静态图、系统开始时水流流出图、采用画笔画线改变水流流向图、采用橡皮擦擦除线段图。如图3所示,系统要求已经基本达到,并可以随时进行发布。
[图片上传中。。。(5)]
** 3 结语

基于[Unity
3D的水流墙系统的设计,采用SPH算法对粒子系统加以控制,使其能够达到模拟真实水流的效果。真实地模拟了水流的视觉效果和物理特性。利用C#语言编写的画线代码可以完美地在屏幕上画线改变水流的路线。该项目成果可大量发布于Windows、Android、IOS、Linux等多系统中供用户进行体验,并且对硬件需求不高,一般配置都可以完美运行,无需绑定硬件,使用户可以得到更真实、更全面、更方便的体验效果。
** 参考文献

[1]赵沁平.[虚拟现实
综述[J].中国科学F辑:信息科学,2009,39(1):2,46.
[2]邱建松.基于[Unity
3D的实时虚拟仿真系统的研究与实现[J].电子制作,2012(12):15
[3]倪乐波,戚鹏,遇丽娜,等.[Unity
3d产品虚拟展示技术的研究与应用[J].数字技术与应用,2010(9):54-55.
[4]陈晓青,王少伟.基于[Unity
的[虚拟现实
技术在教育中的应用[J].软件导刊(教育技术),2012(12):76-78.
[5]吴继承,江南.[虚拟现实
中粒子系统的设计与应用[J].计算机仿真,2005,21(11):137-140.
[6]王功明,郭新宇,赵春江.粒子系统的优化技术研究[J].计算机应用研究,2008,25(2):495-497,500.
[7]熊耀.基于[Unity
3D粒子系统的三维影视特效开发研究[J].软件导刊,2012,11(11):134-136.
[8]金阿芳,买买提明·艾尼.论光滑粒子流体动力学(SPH)方法[J].新疆大学学报:自然科学版,2006,23(2):188-193.
[9]李会珍.采用SPH方法的拉格朗日方式流体运动模拟[D].合肥:安徽大学,2013.
[10]郑兴.光滑质点流体动力学(SPH)算法研究[D].哈尔滨:哈尔滨工程大学,2005.
[11]何水艳,丁沂.粒子系统与碰撞检测的研究[J].轻工科技,2012(6)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,639评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,277评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,221评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,474评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,570评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,816评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,957评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,718评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,176评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,511评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,646评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,322评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,934评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,755评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,987评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,358评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,514评论 2 348

推荐阅读更多精彩内容