maya无法选中物体怎么能让物体如流动液体般渐现

maya怎么能让物体如流动液体般渐现_百度知道
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。
maya怎么能让物体如流动液体般渐现
我有更好的答案
如果说是要体积填充的话,大概是流体转polygon了,如果是表面淌过去的感觉的话,用UV偏移吧,其实这个用后期软件图层合成可能更加方便了
采纳率:69%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包就是类似液体融合的那种,把两个球融合成一个球,不要什么combin缝合什么的,最好能有具体的制作步骤,或者制作好的原文件也行,谢谢!
如果两个球的体积之比为8比27,那么两个球的半径之比为2:3,7,那么两个球的表面积之比为4:9
法宝融合后,是会随机降低锻造等级1-3级
并且是根据原始法宝的锻造等级进行降低。
所以建议你还是先融合后,再进行锻造
希望丑陋的法国小组别出线!!!!!!!!
融合:róng hé 几种不同的事物合成一体。也可以写成“融和”
只有这一种意思。
要注意它还有一个同音词:
融和:róng hé ①和暖。如,天气融和。②同融...
其实,FLASH里早就有类似的特效了,照着做就行。
画好您的彩球,工具栏里点:插入-时间轴特效-效果-分离,在分离里调整好各个参数,试试看,效果不错吧?
答: 视频剪辑道路很长,不深入学习的话只能算是一只脚踏进门,对于剪辑的初学者更建议你去报个培训机构,时间短而且还高效,我就是从上海映动数码培训机构出来的,那边很不错。
答: 肯定是你机器中的FLASH播放器出现了问题。检查一下是否是。
另外,像雅虎助手这样的软件其中有禁止FLASH播放的选项,看看是否是这样。
答: 肯定是你机器中的FLASH播放器出现了问题。检查一下是否是。
另外,像雅虎助手这样的软件其中有禁止FLASH播放的选项,看看是否是这样。
大家还关注
确定举报此问题
举报原因(必选):
广告或垃圾信息
激进时政或意识形态话题
不雅词句或人身攻击
侵犯他人隐私
其它违法和不良信息
报告,这不是个问题
报告原因(必选):
这不是个问题
这个问题分类似乎错了
这个不是我熟悉的地区当前位置: >>
MAYA粒子及流体特效处理
上海交通大学 硕士学位论文 MAYA粒子及流体特效处理 姓名:毛慧 申请学位级别:硕士 专业:软件工程 指导教师:肖双九;黄斌
Maya 粒子及流体特效处理Maya 粒子及流体特效处理 摘 要在数字动画、影视特效制作等应用中,粒子和流体是动画特效中常用的两种 方法,也一直是计算机数字媒体艺术应用领域的热点,最终目的都是为了追求真 实感的图形与动画。目前在 Maya 三维动画制作软件生产实际的特效场景时,粒 子动画相对于基于物理的流体动画模拟较为容易和控制,所以应用较为普遍。而 从真实感角度而言如果能与流体的体积材质表现相结合则是在特效的真实感和 操控性上达到一个良好的平衡,所以本文首先研究 Maya 粒子和流体各自的特效 处理,然后探索了一种可行的连接两者优点的解决方案,取得了较好的效果。 本文的研究重点及主要成果有: 1.研究如何应用粒子和 Mel 表达式结合模拟真实的自然界物理现象 在总结了 Maya 粒子动力学模拟的优势与弱点后,提出最大实现粒子的可控 制性,既不是单纯靠粒子发射器发射粒子,也不单纯用场来干扰粒子,而是粒子 系统与 Mel 表达式结合。在龙卷风的制作案例中,用立柱控制龙卷风的外形, 用表达式控制立柱上粒子的运行轨迹,最后用贴图序列来渲染龙卷风的烟雾效 果,达到既可以控制龙卷风外形的扭曲形态,又可以控制龙卷风自身粒子贴图的 走势。 2.研究能显著影响流体效果的主要属性并归纳流体模拟分类与属性的关联 研究 Maya 的流体动力学算子, 其中包括了 Navier-Stokes 方程的力学原理并 探索 Navier-Stokes 方程在 Maya 内置程序包中的要点,及其在 Maya 的流体动力 学栅格属性中如何体现。并归纳了控制流体体积材质表现的属性定义。同时通过 案例例证能显著影响流体效果的主要属性及其之间的相互作用,对速度、温度、 密度的反应及流体模拟分类与属性的关联。 不过这种属性定义一般很难对流体特 效在动画上能有所实质控制,所以在复杂的模拟实例时需要有进一步的解决方 案。 3.提出并实现了一种将粒子和流体组合模拟方法,兼具粒子的可控性和流I Maya 粒子及流体特效处理体的表现性 根据粒子模拟和流体模拟的现状, 在前述的粒子模拟案例上尝试将粒子与流 体组合的方式来模拟特效:使用粒子表达式以及场等来模拟龙卷风的动态,使用 流体材质表现龙卷风的质感,并通过 Particle Info 节点和表达式将粒子与流体之 间进行数据交换,实现了既保有粒子和表达式的可操控性,又争取在表现上能有 流体的体积材质效果。 4.该方法使用节点将流体与粒子的各类属性交互,增强渲染质量,最常应 用于厚重烟尘动态特效的模拟 在粒子系统中引入流体材质这一方法吸取了流体本身的采样方式, 同时流体 的容器的解算范围在引入 particle 以后,流体容器被替换成了 particle could 的球 体。通常流体只负责产生体积而不生成动态,但在实际的制作过程中,动态和材 质往往都是具有关联性的。因此使用 maya 的 particle info 节点将流体与 particle 的各类属性交互,得到较好的模拟效果。这一方法在爆炸的烟尘还有火箭发射的 尾烟,楼房倒塌的尘土等涉及到厚重的烟尘特效模拟中都可以使用。关键词 Maya,粒子,流体,纳维-斯托克斯方程,Mel,组合模拟II Maya 粒子及流体特效处理MAYA PARTICLE AND LIQUID SPECIAL EFFECT ABSTRACTDigital animation, visual effects production applications, particles and fluid animation effects are frequently used in two ways, it has been the art computer digital media applications in the field of hot spots, and the ultimate goal is to pursue realistic graphics and animation. Maya is currently in the three-dimensional animation software, the actual production of special effects scenes, as opposed to animation particle physics-based simulation of fluid animation and easier to control, the more general use. From the realistic point of view, if the volume of material and fluid performance is the combination of the effects of the manipulation of reality and achieved a good balance, the first study of this article Maya particles and fluid handling their effects, and then to explore the A possible connection between the advantages solution to achieve good results. In this paper the main focus of the research results are: 1. Research on the use of particles and the combination of expression Mel simulate the real nature of the physical phenomena In conclusion, the Maya particle dynamics simulations of the strengths and weaknesses, made the greatest achievement of the particles can be controlled, not simply rely on particle launchers fired particles, or simply use to interfere with particles, particle system, but with the combination of expression Mel . Tornadoes in the production of the case, the control column by the tornado form, expression control on the Column of the particles running track, with the final map of the tornado sequence to play up the effects of smoke, to control the tornado can distort the shape of form, and can be controlled Tornado own map of the particle movements. 2. Research will significantly affect the results of the fluid into the main attributes and fluid simulation with the classification of property Correlation The operator of Maya Fluid Dynamics Research including the mechanics of Navier-Stokes equations, and to explore the Navier-Stokes equation in the Maya built-in elements in the package, and also including the how property grid in the fluid dynamics of Maya. And control the volume of fluid into the performance of the material properties of the definition. At the same time, through the example of the case could significantly impact the main effect of fluid properties and the interaction between, speed, temperature, density and the reaction fluid simulation with the classification of property Correlation. But this is difficult to attribute the general definition of the fluid in the animation effects can be controlled in real terms, so in theIII Maya 粒子及流体特效处理complex simulation example, when the need for further solutions. 3. To advance and achieve a combination of fluid and particle simulation methods, particles controlled both fluid and the performance of According to the simulation of particle and fluid simulation of the status quo, in the aforementioned case of simulation on particles will try the combination of fluid and particles to simulate the way of special effects: the use of particles as well as the expression field, and so on to simulate the dynamics of tornadoes, using the fluid performance of the material texture of the tornado, and Particle Info through the nodes and the expression of particles and fluid exchange of data between the basic realization of both particles and retain control of the expression, and strive to have on the performance of the fluid volume of material effect. 4. This method is the use of the node will be fluid and particles of various types of interactive properties, and enhance th the most commonly used in thick smoke and dust effects of the dynamic simulation. Particles in the system, the introduction of the material fluid methodology draws on its own fluid sampling methods, fluid containers at the same time the scope of the Solution in the introduction of particle, fluid containers has become a particle could be replaced with the ball. Fluid usually has a size not only responsible for generating dynamic, but in the actual production process, the dynamics and materials are often associated with. Therefore the use of maya the particle info node will be fluid and particle properties of various types of interaction, get a better simulation results. This method of dust explosion in the rocket's tail still smoke, dust, such as the collapse of buildings related to the heavy smoke and dust effects can be used in the simulation.Keywords: Maya, particles, fluids, Navier-Stokes equations, Mel, combination analogIV MAYA 粒子及流体特效处理上海交通大学 学位论文原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立 进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不 包含任何其他个人或集体已经发表或撰写过的作品成果。对本文的研究 做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意 识到本声明的法律结果由本人承担。学位论文作者签名:毛慧日期:2008 年 12 月 15 日 MAYA 粒子及流体特效处理上海交通大学 学位论文版权使用授权书本学位论文作者完全了解学校有关保留、使用学位论文的规定,同 意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许 论文被查阅和借阅。本人授权上海交通大学可以将本学位论文的全部或 部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制 手段保存和汇编本学位论文。 保密□,在 本学位论文属于 不保密□。 (请在以上方框内打“√” ) 年解密后适用本授权书。学位论文作者签名: 毛慧 日期:2009 年 2 月 15 日指导教师签名: 肖双九 日期:2009 年 2 月 15 日 Maya 粒子及流体特效处理1 绪 论1.1 研究背景 数字媒体艺术已经逐渐成为大众娱乐生活的一部分,计算机真实感图形绘制 也正处在研究的前沿,特别是特效领域,不仅需要形象模拟的真实感,也需要运 动的真实感。 1.1.1 应用环境和实例 电影制作在自然状态无法拍摄或者拍摄成本很大的情况下通常会采用特效。 我们先来看看特效最常用到模拟真实场景的例子。 例如福克斯电影 The Day After Tomorrow(译:后天)运用了气势恢弘、无与伦比的视觉特效,拥有如庞大的 暴风雪,破坏性的海啸这些激情澎湃的画面。比如洛杉矶龙卷风、曼哈顿海啸、 从外太空观查到的飓风等场景,见图 1-1 和图 1-2。图 1-1 电影《后天》的特效龙卷风 Fig.1-1 The Day After Tomorrow1 Maya 粒子及流体特效处理图 1-2 电影《后天》的特效龙卷风 Fig.1-2 The Day After Tomorrow离我们再近点的比如国产大片《英雄》中剑穿水滴的特效:无名与长空决斗 时,需要说明无名的剑速远比雨水落下的速度快,以至于可以看到剑穿过雨水的 轨迹(见图 1-3),单靠拍摄很难达到刻画的效果,水滴就是由电脑制作出来的 效果。图 1-3《英雄》的一张原片加特效处理后的前后对比 Fig.1-3 Befor and after还有大大小小无数个例子,应用在我们商业、艺术等方方面面。而这些都是 用一系列三维动画制作软件来实现的。下面来了解一下本文实验选用的软件。 1.1.2 三维动画制作软件 Maya Maya 是 Alias/Wavefront 公司在 1998 年推出的三维动画制作软件,已逐步 发展成故事电影、动画片制作行业的创立者和领先者。其动力学模拟系统,包括 刚体、柔体、流体力学、皮毛和毛发,再结合使用强大脚本编辑语言,使 Maya 成为了当今最伟大的特殊效果制作工具。 所以本文将要实验的粒子和流体特效均2 Maya 粒子及流体特效处理使用 Maya 来实现。 著名卢卡斯的工业光魔(ILM)的粒子部分主要是 houdini 负责,一般先由 Maya 建模之后再经 ILM 动画匹配工具,即 ILM 研发的私有软件微缩模型并后 期合成;也可以看出在大型 CG 工业流程里 Maya 在其中的位置。图 1-4 电影 Indeana Johes Fig.1-4 Movie Indeana JohesMaya 最早是开发于 UNIX 系统的三维制作软件,现在任何一个版本 Maya 的任何一个见面均由 Maya 嵌入式语言 (即 Mel, Maya Embedded Language)组成。 由于刚开始的时候定位是高端,所以在整个软件的架构上采用的是 UNIX 的模 式,有内核层、中间层和用户层三种层次,并且软件对大小写敏感。这种架构性 是符合模块化设计,相比于同类软件更加方便应用的移植。 Mel 作为一种简单的结构和语法,能够更加以接近英文逻辑的方法去解释一 些机器微操作的方式,Maya 软件的正体结构大概分为三层,最外层的是 UI 和 Plugins,内部一层是 Mel 和 C++编译的 MLL,最核心层次是 OpenGL 驱动层和 Dependency Graph(简称 DG),如下图所示:UI Mel OpenGLPluginsMLL 图 1-5 Maya 软件的结构示意图 Fig.1-5 Structure of MayaDependency Graph也就是从外到内共分为 UI 层→中间层(API)→核心层(DG)。首先是我 们平时都能够接触到的最外层 UI,也就是平时用到的那些界面上的按钮等。其 实在中间层 API 那里,这些按钮都变成一个个的命令语,从这个层面上来说 Mel3 Maya 粒子及流体特效处理也是在 API 层和 UI 层中间的一个转换步骤, Hypergraph 就是 DG 层面的可视 而 化表现。 而流体动力学相对来说跟物理应用有着更大的关系,Flud/Dynamic 模块是直 接在 DG 层面上的应用,一般分为两种:模拟应用和仿真。模拟应用更大的应用 在一些非精确度要求严格的场合,更加的作为一种视觉效果的表现而存在;对于 仿真级别的应用是更需要符合一些特殊算法的应用,因为 Maya 自身不具备 DG 层的仿真级别的算法,所以为了达到仿真效果,则大部分情况需要另外补充 DG 层的算法模型。 1.1.3 Maya 嵌入式语言 Mel 正如上节所说,MEL 的全称是 Maya Embedded Language,是一种解释性语 言,在 Maya 中 Mel 主要起到以下一些作用: (1)解释最外的 UI 层命令; (2)编写一些简单的 UI 层命令集合,即微操作集合; (3)编写一些中间层 API 接口所提供的功能的微操作集合; (4)新版本的 Maya 中还能够使用更为靠近人类语言的 Python 语言作为解 释语言,但是都是基于 API 所提供的功能模块,如果要创造新的功能模块或者 运算模块,则需要用 C++语言来创造 DG 层面的功能应用模块。 正是因为基于模块的解释化语言,所以 Mel 文件不因为平台的限制而受限。 Mel 的特点也就是基于语言表达方式的语言, 所以在移植上几乎不存在任何的问 题,所以 Maya 在跨平台的应用上更加的适合。也是为什么选用 Maya 来实验的 原因之一。 动力学粒子部分和流体特效部分是需要大部分的模拟来实现的, 所以 Mel 的 优势就能够比较良好的体现出来了。简单的说就是 Mel 能够把大量需要人工手 工操作的部分简化到一个按钮中,这种 Mel 一般被称作批处理命令 Mel。里面不 包涵任何的算法,仅仅是一些操作序列的集成,能够在很大程度上面简化复杂的 操作中的设定。场景设定(Sence Setup),比如做了一个海面的镜头常用的海面 的设定,流体的设定都可以保存到一个 Mel 中,下次做另外一个海面的镜头的 时候,只需要选择海面,然后执行这个 Mel,就能够把整个海面的设定全部转移 过来,而减少重复劳动。 另外一种内部包涵了算法的 Mel 能够起到更大的作用,因为 Maya 为节点类 软件, 每一个功能都是由基本的 MLL 底层组成。 Mel 在调用各个 MLL 底层的同 时组成自己独特的运算法则。就像用砖头做房子一样,有了砖头,在凭借设计师4 Maya 粒子及流体特效处理的想象力,就能做成任何一种造型的房子。1.2 粒子、流体及计算机流体力学 1.2.1 粒子系统 粒子系统英文叫做 Particle System,是 Reeves 在 1983 年提出的利用粒子模 拟自然场景的一种技术[1],例如说雨,雪,水流,爆炸,烟雾等场景。由于这些 场景都是根据物理模型计算出来的, 所以粒子系统可以说是一种基于物理模型来 解决问题的方法, 主要用来解决由大量按一定规则运动或变化的微小个体组成的 物质在计算机上的生成与显示的问题。 粒子系统的基本思想是采用许多形状简单的微小粒子作为基本元素来表示 不规则模糊物体。每个粒子需要一些属性来和其他粒子区别,这些粒子都有各自 的生命周期,在系统中都要经历“产生”、 “运动和生长”及“消亡”三个阶段。 粒子系统是一个有“生命”的系统,因此不像传统方法那样只能生成瞬时静态的 景物画面,而可产生一系列运动进化的画面,这使得模拟动态的自然景物成为可 能。通常在一个系统中的所有粒子有一个相同的属性集。 生成系统某瞬间画面的基本步骤是: (1)产生新的粒子; (2)赋予每一新粒子一定的属性; (3)删去那些已经超过生存期的粒子; (4)根据粒子的动态属性对粒子进行移动和变换; (5)显示由有生命的粒子组成的图像。 粒子系统采用随机过程来控制粒子的产生数量,确定新产生粒子的一些初始 随机属性,如初始运动方向、初始大小、初始颜色、初始透明度、初始形状以及 生存期等,并在粒子的运动和生长过程中随机地改变这些属性。粒子系统的随机 性使模拟不规则模糊物体变得十分简便。 高级粒子系统可能会需要大量的代码,所以设计好数据结构是非常重要的。 例如设计粒子系统时首先应该明白粒子数会大大增加每帧的可见多边形数量。 通 常每个粒子可能需要四个顶点和两个三角形来表现,以此计算,一个场景中如果 有 2,000 个可见的雪花粒子,那么将增加 4,000 个可见的三角形。如果设计欠佳, 粒子系统就会大幅降低刷新率。 大多数性能问题也是由粒子系统带来的内存管理 问题引起的。5 Maya 粒子及流体特效处理粒子系统的核心不是在于如何显示,而是在于对微小物质模型的规则提取。 只有基于物理模型的方法,才能模拟出随机而逼真的自然景象。 1.2.2 流体系统 二十世纪八十年代后期基于物理的动画技术慢慢开始发展起来,各类学者对 动力学方程在计算机动画中的应用作了深入广泛的研究,流体模拟是其中之一。 早期的流体模拟主要是基于过程模型, 即运用一些简单的过程函数来描述流体自 由表面的变化,如[Peachey1986] 通过将波浪函数表示成一系列线性波型的组合 来合成浅水表面高度场[2]。随着 Reeves 粒子模型[Reeves1983]的提出[1],很多学 者很快就找到了它在流体动画中的应用。即将流体表示为粒子的聚合体,这样通 过粒子之间的相互作用力以得到整个流体的运动过程。 随着研究的深入,流体本身具有丰富和复杂的细节,如湍流等,人们开始转 向计算流体力学(CFD,Computational Fluid Dynamics) 领域寻求解决之道,这样 基于纳维-斯托克斯流体运动方程组的流体模型方法开始普及起来。由于纳维-斯 托克斯流体运动方程组本身的复杂性导致计算困难度大大增加, 一方面计算的收 敛性和稳定性是一个必须克服的问题,另一个方面计算代价太大,对时间步长的 要求过于苛刻,以致应用起来比较麻烦。 流体与粒子是不同的,粒子是以空间中独立的点进行运算,因此它们不能与 其他粒子发生相互影响,它们也不是作为一个整体来进行渲染,由于粒子之间没 有相互作用,每个粒子都是独立于其他粒子进行运行的,因此很难作用于粘性流 体模拟,另一方面,流体效果中的流体以更一致的方式进行运动,因为它们被速 度和其它斜率所控制,因此流体虽然运行的速度会慢一些,但更适合元素之间相 互影响的场景,如水,火,熔岩等。不过,粒子实际上能够被流体容器中的流体 所影响,因此粒子可以成为流体效果模拟中的组成部分。 Maya 流体系统 Fluid Effects 包括一个真实的三维解算器和一个高度交互式的 二维解算器。二维解算器可以几乎实时模拟二维的流体运动。Maya 流体效果从 形体上分包含两个独立的实体:2D/3D 流体和海洋效果。2D/3D 流体实体运行一 个模拟引擎来实现流体流动,与粒子引擎类似;但海洋效果实际是错位贴图,复 杂纹理和粒子的组合,从而模拟海洋表面或其他大面积水面。因此 2D/3D 流体 是流体模拟器,而海洋效果则不是。所以本文流体的案例是基于 2D/3D 流体来 来进行。 Maya Fluid Effects 从原理上分,又可以还分为动力学流体(Dynamic Fluid) 和非动力学流体(Non-Dynamic Fluid)两种。区别在于动力学流体利用物理学机6 Maya 粒子及流体特效处理械运动的公式去描述流体如何流动, 通过在每一个时间点分别求解流体动力学公 式去仿真流体的行为。而非动力学流体不利用物理学上的公式去仿真,要产生动 态必须利用关键帧动画技术去改变动画材质的某些属性。 所以本文流体的案例是 基于动力学流体(Dynamic Fluid)来进行。 1.2.3 计算机流体力学 计算机流体力学是用电子计算机和离散化的数值方法对流体力学问题进行 数值模拟和分析的一个新分支。早期的流体模拟,由于计算能力有限,主要采用 参数建模的方法,比较有代表性的是 1986 年 Darwyn R.Peachey 博士发表的海面 及波涛的模拟一文[2]。文中通过将波浪函数表示成一系列线性波型的组合,更进 一步将各个波型简化为波形和相位的组合函数,从而合成浅水表面高度场,能处 理波折射问题,并采用粒子系统来模拟当波浪破碎或者碰到障碍物时形成的浪 花。 但由于这篇文章中表示的水的粒子或者网格只是在其初始位置附近运动,所 以它们都无法表现真正的流动效果,也无法处理边界给水面带来的影响。又如基 于统计的 FFT 经验模型[4]可以很好地描述波幅较小的海平面, 但是对于以上这些 模型,人们觉得控制起来很困难,而且不能模拟一些复杂的、细节更为丰富的效 果,于是很多研究者转向基于物理的方法去研究。 目前描述流体现象最为完整的为纳维-斯托克斯(Navier-Stokes Equation,简 称 N-S 方程),是湍流最古老的方法。此方程是法国科学家 C.-L.-M.-H.纳维于 1821 年和英国物理学家 G.G.斯托克斯于 1845 年分别建立的。 该方程是根据牛顿 第二定律推导出来的,将要在第三章 Maya 流体动力学中简单阐述。 基于物理的流体动力学主要有两种方法[5]:第一种方法是从研究流体所占据 的空间中各个固定点处的运动着手, 分析被运动流体所充满的空间中每一个固定 点上的流体的速度、压强、密度等参数随时间的变化,以及研究由某一空间点转 到另一空间点时这些参数的变化, 该方法被称为欧拉法, 是一种基于网格的方法; 第二种方法是从分析流体各个微团的运动着手, 即研究流体中某一指定微团的速 度、压强、密度等描述流体运动的参数随时间的变化,以及研究由一个流体微团 转到其他流体微团时参数的变化,以此来研究整个流体的运动,被称为拉格朗日 法,是一种基于粒子的方法。可以参见本文第 3 章 3.3 节。 而计算机流体力学发展到今天,关键部分已经不再是简单的模仿液体的运 动,还能够实现如烟雾、火焰、爆炸等特效。真实的实现这样的流体效果需要考 虑到很多如温度、湿度、重力、燃料、能量等环境因素,虽然把这些条件全部考7 Maya 粒子及流体特效处理虑到流体的解算中会使计算变的相当复杂, 但如果这些效果能很好的用 CG 技术 来实现,就不需要进行实拍了。那样既安全又经济。1.3 本文的研究内容和结构安排 本文主要研究三维动画制作中的粒子和流体特效模拟问题。探索了粒子系统 通过与 MEL 表达式结合所体现的很强的灵活性和可控制性。并以此为基础,尝试 了将流体动力学的体积材质表现与粒子的可控性结合, 实现了用流体材质表现特 效细节质感并同时拥有粒子的可控性实例。主要进行了以下工作: (1)在总结了 Maya 粒子动力学模拟的优势与弱点后,提出最大实现粒子的 可控制性,既不是单纯靠粒子发射器发射粒子,也不单纯用场来干扰粒子,而是 粒子系统与 Mel 表达式结合。 在龙卷风的制作案例中, 用立柱控制龙卷风的外形, 用表达式控制立柱上粒子的运行轨迹,最后用贴图序列来渲染龙卷风的烟雾效 果,达到既可以控制龙卷风外形的扭曲形态,又可以控制龙卷风自身粒子贴图的 走势。 (2)研究 Maya 的流体动力学算子,其中包括了 Navier-Stokes 方程的力学 原理并探索 Navier-Stokes 方程在 Maya 内置程序包中的要点, 及其在 Maya 的流 体动力学栅格属性中如何体现。并归纳了控制流体体积材质表现的属性定义。同 时通过案例例证能显著影响流体效果的主要属性及其之间的相互作用,对速度、 温度、密度的反应及流体模拟分类与属性的关联。不过这种属性定义一般很难对 流体特效在动画上能有所实质控制, 所以在复杂的模拟实例时需要有进一步的解 决方案。 (3)根据上述现状,在前述的龙卷风案例上尝试将粒子与流体组合的方式 来模拟特效,基本实现了既保有粒子和表达式的可操控性,又争取在表现上能有 流体的体积材质效果。 全文的内容编排如下: 第 1 章:简要介绍三维动画中特效技术的领域及其制作软件 Maya,并介绍粒 子和流体系统和流体力学技术的特点及本文的研究背景。 第 2 章:阐述 Maya 中粒子动力学模拟技术的特点,并通过龙卷风的制作实 例,提出了粒子和 Mel 表达式结合的方法实现粒子系统的可操控性。 第 3 章:对 Maya 的流体动力学算子特别是 Navier-Stokes 方程简要介绍, 并通过 Maya 流体动力学模拟技术和实例,对显著影响流体效果的主要属性进行 归纳比较。8 Maya 粒子及流体特效处理第 4 章:介绍粒子与流体的组合模拟技术概况,并通过改进第二章的龙卷风 案例,实现了粒子与流体材质的内部连接,除了仍然可以拥有粒子的动态可操控 性外,使粒子也能像流体材质一样接受 MAYA 的灯光信息,从而产生更加真实的 光影效果。 第 5 章:对全文的工作进行总结,并对下一步的工作进行展望。9 Maya 粒子及流体特效处理2 Maya 的粒子动力学当我们创作一个效果的时候,我们首先会决定是使用流体还是使用粒子,或 组合使用这两种工具,因此,了解二者是非常重要的。本章首先介绍了粒子系统 在模拟自然现象的优势和特点,并探索了粒子系统与 Mel 表达式结合所带来的 灵活性和可控制性。而这种结合在实现自然现象的三维模拟中经常使用。2.1 粒子的分类与特点 我们进入 Maya 的 Dynamic 模块去了解在未安装插件以前内部算法模块能够 提供的功能和相应的解决方法,更详细的内容可以参考 Maya 8.0 Unlimited Version Developer’s Help。创建一个粒子物体时,同时也创建了一组粒子,粒 子物体有自己的 transform 属性,同时,组成粒子物体的每个粒子也有各自的属 性。这就是粒子最为灵活的地方。粒子除了含有每粒子属性,还包括有每粒子内 置属性,只不过属性面板没有显示出来罢了。除此之外,用户还可以添加额外的 每粒子属性,这类属性仅仅能够被指定数值,而不能改变粒子的状态。自定义的 属性分为矢量(vector)和浮点(float)两种类型。 根据渲染方式的不同粒子系统可以分为两种:软件渲染粒子和硬件渲染粒 子。软件粒子(Cloud 、Blobby、Tube)适宜于制作云或者液态的效果、它们能 渲染出阴影、反射和折射。硬件粒子(Point 、Spheres、 MultiPoint 等)采用图形 卡渲染,通常会在后期中合成加工。图 2-1 Maya 粒子的软件渲染与硬件渲染 Fig.2-1 Render type of Maya prticles10 Maya 粒子及流体特效处理如图 2-1 中[s/w]所标识的就是软件渲染粒子类型。 粒子系统的动画可以通过关键帧动画来实现,也可以通过动力学属性来实 现。 粒子系统运动时或者受动力场影响与几何体发生碰撞时, 都会改变运动状态。 综合来说,粒子的特点如下: ? ? ? ? ? ? 可以快速的计算,并允许多次的反复实验 如果没有体积的限制意味着粒子系统能够覆盖的区域不受任何限制 对于创建体积的效果来说非常困难(粒子的累积及溢出) 能够非常好与 MEL 相结合, 通过 creation 和 runtime 表达式中的 MEL 能够非常好的模拟气流、烟、云、火等 很难创造出液体搅动的效果,不仅需要大量的场,而且很难控制使自身具有很强的灵活性2.2 粒子与 Mel 表达式结合 Maya 的粒子动力学系统相当强大,一方面它允许使用相对较少的输入方便 地控制粒子的运动, 另外可与各种不同的动画工具混合使用, 也就是说可以与场、 关键帧、表达式等方便地结合使用,并实现最优的可操控性。 针对于动力学模块而言,Mel 语言能够做的常用功能[6]: (1)使用一系列功能组合达到需要的效果,比如在下一节制作龙卷风的案 例中,创建粒子系统,定义并引导粒子运动; (2)使用特殊的组合方式形成一系列的命令流程(Mel 插件); (3).配合 C++创建新的 API 达到完成新的算法(Mll 插件即是 DG 层面的 插件)。2.3 粒子和 Mel 表达式制作龙卷风实例 2.3.1 背景 首先观察一下龙卷风的特性: (1)巨型漩涡状气候; (2)上大下小的造型结构; (3)自身具有旋转特性;11 Maya 粒子及流体特效处理(4)中间柱状部分会在运动的时候产生形变; (5)底部会引起一片气旋,顶部巨大。 考虑龙卷风现有的制作方法中有用 Surfaces&Extrude 将 circle 绕 CV 直线挤压 旋转成龙卷风的外形,然后从形表面散发粒子云的方式来实现;这种方法调整龙 卷风的整体外形不方便,粒子云用来模拟龙卷风的效果不是很理想;另外也有从 地面 Circle 散发向上方向的粒子, 利用扰动场形成旋转上升的粒子来模拟龙卷风 的方法,但是扰动场会聚集粒子向 Circle 中心聚拢,龙卷风两头漏斗形的控制通 过扰动场的调节就不是很方便。 所以综合以上需要解决的问题,在这里提出一种制作方法,用立柱控制龙卷 风的外形,用 Goal 表达式控制立柱上粒子的运行轨迹,用贴图序列来渲染龙卷 风的烟雾效果,就能很逼真的模拟自然界的龙卷风现象了。 2.3.2 制作 1) Goal 实现龙卷风 用 Create&NURBS Primitives&Cylinder 创建一个 NURBS 立柱做热空气柱主 体; 为便于后面表达式的编写, 创建后要注意执行 Modeling&Edit NURBS&Rebuild Surfaces, 选中 Parameter Range 0 to 1 以使 goalU、 goalV 在 0 到 1 的范围内变化, Spans U = 4 ; Spans V = 8 ; 选 中 Cylinder1 的 CV 点 或 者 Hull 加 簇 Animation&Deform&Create Cluster,方便调整龙卷风柱形。调整各层簇形成想要 的龙卷风的外形,如图 2-3 所示:图 2-3 调整各层簇形成龙卷风的外形-persp 图体 Fig.2-3 Persp view of tornado with cluster创建粒子发射器 Dynamics&Particles&Create Emitter,然后先选中粒子,再选12 Maya 粒子及流体特效处理中立柱 Dynamics&Particles&Goal 使粒子吸附到立柱 UV 点上; 调出 particle1 的属 性 编 辑 框 Attribute Editor , 在 particleShape1 菜 单 下 Add Dynamic Attributes&General&Particle 添加 goalU、goalV 两个属性变量;在 particleShape1 菜单下 Per Particle(Array)Attributes 新增的 goalU,goalV 右侧右键单击选择 Create Expression 打开表达式编辑框 Expression Editor;Creation 的表达式中,我 们使 U 方向上的粒子从立柱底部发生,防止在 goalU = 0 的粒子飘出立柱体外, 所以选用近似值 0.001;V 方向上的粒子从 0 到 1 随机分布,于是有表达式: particleShape1.goalU = 0.001; particleShape1.goalV = rand(0,1); Runtime before Dynamics 表达式则使 U 方向上粒子上升,V 方向上粒子逆时 针旋转,组合成龙卷风盘旋的动态: particleShape1.goalU += 0.003; particleShape1.goalV -= 0.02; if (particleShape1.goalU & 0.99) particleShape1.lifespanPP = 0; 注意此时 Lifespan Attributes&Lifespan Mode 应为 lifespanPP only,否则最后 的条件语句无效;观察此时 U 方向上的粒子上升到立柱顶端需要 350 帧,折合 14 秒。因为后面将会用贴图序列替换粒子,到时候 Lifespan Mode 就是用常数来 计量了。 将制作的龙卷风主体存为 tornado_inside.mb 文件。 2)制作渲染需要用到的贴图序列,为龙卷风的烟雾效果提供贴图材质 新建一个文件,执行 Particles&Create Emitter 创建一个粒子发射器,Playback End Time 给 100 帧,ParticleShape1&Lifespan Mode = constant;Lifespan = 2; ParticleShape1&Particle Render Type = Cloud。 添加 Camera: Create&Cameras 并为 Camera 定位, Panels&Perspective&camera1 切换为摄像机视角;选择 View&Camera settings,勾选√Resolution Gate(缺省 640×480)、√Safe Action、√Safe Title 得到可视的安全框,只需要图像控制在 Camera 视角最里层的方框就 ok 了。 添 加 材 质 : Materials&Assign New Material&Particle Clouds , 并 调 整 particleCloud2&Common Material Attributes 的 Color 为白色,采用贴图序列主要 是 为 了 能 有 α 通 道 , 而 与 贴 图 材 质 的 颜 色 无 关 ; 调 整 particleCloud2&Transparency&Density = 0.7,降低密度防止中间白光区域太大; 为 particleCloud2&Transparency&Blob Map 添加 3D 的 Cloud 材质;其中需要13 Maya 粒子及流体特效处理增 强3DCloud的 对 比 , 设 置Contrast=1 ; 设 置particleCloud2&Transparency&Roundness = 0.75 以实现边缘感模糊。 下面对贴图序列进行渲染: 打开 Render Settings 设置渲染参数, Start Frame = 50,End Frame = 100;Frame Padding = 4;Image Size = 256×256;Camera = camera1;Maya Software&Quality = Production Quality;然后执行 Render&Batch Render 命令进行渲染。将渲染好的贴图序列集中放进 texture_smog 文件夹。 3) 为龙卷风的粒子添加贴图序列 打开先前制作的龙卷风主体 tornado_inside.mb 文件,准备添加贴图序列,先 将 Particle1 的 Particle Render Type 改为 Sprites, 同时 LifespanPP only 已经无效, 所以 Lifespan Mode 用 Constant,Lifespan = 14.00; 添加贴图序列:Dynamics&Particles&Sprite Wizard,定位 Sprite File 为生成好 的 texture_smog 文件,注意选择 Cycle through the images for each particle。 4) 硬件渲染龙卷风 添加 Camera: Create&Cameras 并为 Camera 定位; Panels&Perspective&camera1 切换为摄像机视角;选择 View&Camera settings,勾选 √Resolution Gate(缺省 640×480)、√Safe Action、√Safe Title 得到可视的安全框,只需要图像控制在 Camera 视角最里层的方框就 ok 了。 选中 nurbsCylinder1,Ctl+H 隐藏 nurbsCylinder1,只让粒子出现在 camer1 的 镜头中;调出 particle1 的属性编辑框 Attribute Editor,在 particleShape1 菜单下 Add Dynamic Attributes&Color&Add Per Object Attribute 添加 Render Attributes 的 RGB,Color Red = 1,Color Green = 1,Color Blue = 1;让粒子完全运动到立柱 顶端,选择该帧,Dynamics&Solvers&Initial State&Set for Selected,让龙卷风在开 始就是成型的样子;Dynamics&Solvers&Create Particle Disk Cache 创建缓存。 开始硬件渲染, Window&Rendering Editors&Hardware Render Buffer 调出硬件 渲染窗口,设 Cameras 为 camera1;Render&Attributes&Image Output Files: Resolution 选择 640×480 1.33,Alpha Source = Hardware Alpha;注意选择渲染 模式 Render&Attributes&Render Modes:√Texturing,√Line Smoothing,√Full Image Resolution , √ Geometry Mask ; 更 重 要 的 是 注 意 勾 选 Render&Attributes&Multi-Pass Render Options:Render Passes = 16,动态模糊 Motion Blur = 5.0;然后就可以开始渲染了,执行 Render&Render sequence。最后 可以用 Flipbooks&tornado_inside.1-100 观看贴图序列的动画。图 2-4 给出渲染完 成的龙卷风主体其中一帧动画。14 Maya 粒子及流体特效处理图 2-4 龙卷风主体渲染完成后的一帧动画 Fig.2-4 Render of tornado_inside5) 实现龙卷风外围 一般龙卷风卷起地面的碎片石块等等,由于模拟沙漠中的龙卷风,所以至少 龙卷风的外围有一些细沙。 打开 tornado_inside.mb 文件; Outliner 选中 particle1 调出属性编辑框 Attribute Editor,现在不需要贴图序列了,所以将 particleShape1&RenderAttributes&Particle Render Type 改为 MultiPoint; 展开 Current Render Type, 修改 Multi Count 和 Multi Radius 为合适的值;这里要主意与镜头平行放置一块挡板 nurbsPlane1,因为我 们只需看到前半部分的碎石细沙效果;然后同样渲染。 6) Shake 合成龙卷风内核和外围 将渲染完成的 inside iff,outside iff 分别导入 Shake。 注意 outside iff 应该放在 inside iff 外层,用 Layer 节点连接两个文件;其中, outside iff 根据效果的需要添加了 Fade 节点减弱纯度,并可以利用 Color&Mult 节点修正其沙土的橙黄色;同理 inside iff 根据效果的需要添加了 Color&Mult 节 点,修正龙卷风主体颜色,添加 Brightness 节点降低主体的反光效果。节点示意 如图 2-5:15 Maya 粒子及流体特效处理图 2-5 Shake 节点示意图 Fig.2-5 Node of Shake最后创建 FileOut 节点,渲染输出为 mov 文件。可视 Shake 后期合成左视窗 效果如图 2-6 所示:图 2-6 Shake 后期合成效果 Fig.2-6 Effect after Shake16 Maya 粒子及流体特效处理2.3.3 结论 在这个实例中,对于 Maya DG 系统来说需要用一种方法把龙卷风的这些特 点表现出来,让 DG 层认识这些特性,从而表现出来。表现的方法有两种:模拟 和仿真。仿真是数学层面的表达方式,基于许多的计算公式,可是 Maya 内置的 动力学部分和粒子部分无法完成数学层面的仿真运算, 需要另行安装相关算法插 件。 而 Maya 的粒子―动力学系统相当强大,一方面它允许使用相对较少的输入 方便的控制粒子的运动,另外可与各种不同的动画工具混合使用,也就是说可以 与场、关键帧、Expressions 等方便的结合使用。 之所以使用表达式来控制表现龙卷风的粒子,主要的原因是因为表达式的可 控制性。在制作特效的时候要考虑整体与个体之间的关系,粒子虽然在 Maya 中 看成一个物体,但是粒子的个体有着自己的特性,这个和其他类型的物体有本质 的不同的。粒子可以快速的计算,并允许多次的反复实验,能够非常好与 MEL 相结合,通过 creation 和 runtime 表达式中的 MEL 使其具有很强的灵活性。 Maya 本来就不是一个科学计算仪器,所以在制作龙卷风时考虑是否能用流 体来实现。理论上是可以用流体的方法来做,但是无法实际操作。根本的问题在 于怎么去控制流体能够按照理想方式螺旋上升运动?粒子则可以按照表达式移 动,而流体的解算引擎是内置的,粒子的表达式的原理是每个粒子每一帧的各类 属性(包括:位置、速度色彩等等)当所有的帧串联起来便成为动画。拓展来说: 动画的基本原理也是这样。2.4 本章小结 本章在简要总结粒子系统的重点及粒子与表达式结合的要点后,用龙卷风制 作的案例,实现用立柱控制龙卷风的外形,用 Mel 表达式控制立柱上粒子的运 行轨迹,最后用贴图序列来渲染龙卷风的烟雾效果。相对于通常的模拟方法,达 到了既可以控制龙卷风外形的扭曲形态, 又可以控制龙卷风自身粒子贴图的走势 的效果。17 Maya 粒子及流体特效处理3 Maya 的流体动力学相对于流体,粒子系统对于创建体积的效果来说非常困难,存在粒子的累积 及溢出控制问题;也很难创造出流体搅动的效果,不仅需要大量的场,而且也很 难控制。这也是很多情况下不适用于流体来实现特效的原因。在这一章节中则重 点探索 Maya 流体与流体动力学之间的关联和应用。 因为 Maya 的流体动力学内置了 Navier-Stokes 方程来进行流体动力学的计 算,所以介绍了 Navier-Stokes 方程的相关情况,并简单解释算法中常用的欧拉 法和拉格朗日法。并研究控制流体建模中体积材质表现的属性。3.1 Maya 的流体算子 在 Maya 7.0 版本中 Maya Fluid Effects&Dynamic Symulation&Solver 的选项里, 除了 Navier-Stokes,还有 Spring Mesh。 3.1.1 Spring Mesh Solver 弹性网格模型,3D 在某种程度上说是不可以对点操作的,所以它的最小单 位是 Mesh[7]。 Spring Mesh 解算器支持模拟尾波或池塘里的波浪。它使用二维流体在三维 表面上创建动态的波浪形的动作,因此,动画泥坑或者水塘里更小的带有波浪、 泡沫、涟漪等等真实的水体效果,都可以用真正的动态波浪创建。这一技术可让 制作者快速创建一个动态场景,比如一只青蛙漂浮在一朵纯洁的百合上,百合在 涟漪池塘里来回摆动。 Spring Mesh Solver 也可用来创建海洋或者池塘里的真实波浪, 比如当一只船 经过水面时,船产生了弯曲的波浪,搅动了船壳下的水面。 3.1.2 Navier-Stokes Solver 随着硬件的发展,尤其是图形硬件可编程性的出现,许多研究者采用 GPU (Graphic Processing Unit,图形处理器)来加速整个计算。文献[8]给出了一个18 Maya 粒子及流体特效处理很好的 GPU 实例。对于非基于网格的算法,目前由于 GPU 开始支持绘制到顶点 的功能,这样人们可以利用 GPU 来构造粒子系统,通过像素程序对粒子的位置 和其他状态值进行更新,计算出新的顶点位置,直接送给顶点处理器,而不需要 将这些数据返回给主内存操作,从而大大提高效率。 Alias-英特尔工程团队致力于 Maya 流体特效的线程功能研发。计算密集型 工具包括一个真实的 3D 解析器和一个支持准实时模拟 2D 流体运动的高度交 互式 2D 解析器。 问题是 CPU 频率不能像平时我们所看到的那样不断增长。因为芯片特征尺 寸已缩小而晶体管数量已激增,散热已经成为了一个非常棘手的问题。 为了解决这一问题,微处理器厂商正在增强芯片级别的并发能力,大多数企 业通过部署多核架构来实现。 所面临的挑战是这种新的更强大的硬件平台要求软 件厂商在其代码中添加并发处理功能。 2005 年春, Alias 公司决定针对 Maya 流体特效在并行或线程方面进行一次 尝试。这次尝试目标直指 Maya 流体特效的核心:一个通过 Navier-Stokes 方程 来增加数量的流体解析器,该解析器为流体流动物理学专业人士所熟知 Watt 团队通过将一些 OpenMP 指令插入到流体解析器代码中,来实现额外 的并行功能。这些并行指令看起来像非 OpenMP 编译器的注释,当编译时这些 指令将忽略。相反地,OpenMP 编译器(如英特尔? C++ 编译器)会找到这些 指令,并执行并行代码。如今,线程及性能优化代码已及时编写完成并内置于 Maya 7 版本中。3.2 Navier-Stokes 方程 Navier-Stokes 方程是描述粘性不可压缩流体动量守恒的运动方程,简称 N-S 方程。此方程是法国力学家、工程师(C.L.M.H. Navier,)于 1821 年和 英国力学家、数学家(G. G. Stokes,)于 1845 年分别建立的,故名。该 方程在图形学中的探索应用却是在二十世纪九十年代中期。在无粘性的情况下, 纳维斯托克斯方程组可简化为欧拉方程组[9],现被公认是描述流体运动规律的流 体力学基本方程组。 在 Maya Fluid Effects&Dynamic Symulation&Solver 的选项里,基本固定选择 在 Navier-Stokes。只有这个算子才可以让流体的模拟在 Maya 中预期进行,故而 探索 Navier-Stokes 方程在 Maya 内置程序包中的要点。19 Maya 粒子及流体特效处理3.2.1 有关于 N-S 方程的解 对于纳维-斯托克斯方程组, 经过 150 多年的研究, 仅在―些简化的特殊情况 下,找到不多的准确解。由于纳维斯托克斯方程组光滑解的存在性问题,至今尚 没有在数学上解决,且这个问题极其重要又关系到人类的生产、生活、军事和对 大自然的认识,所以克莱数学促进会(Clay Mathematics Insti-tute )于 2000 年 5 月 24 日在法国巴黎的法兰西学院,将其发布为新千年数学大奖悬赏的 7 个世纪数 学难题之―,悬赏奖金高达一百万美元。 在学习微分方程理论时,我们知道有三种解的情况:第一,如果某物理问题 的微分方程,被证明其解不仅存在而且唯一时,则无论用何种方法找到这个微分 方程的解,可以认为这就是该物理问题方程的解。第二,当某物理问题的微分方 程,被证明解是存在的,但却不见得唯一时,则如用―种方法找到了解,还必须 研究解的稳定性问题,只有证明了所找到的解是稳定的,才能认为这个解有可能 代表实际存在的物理现象。第三,如果某物理问题的微分方程,解的存在性尚还 不能被证明,若用某种近似方法(如渐近方法或差分法、有限元法等各种数值方 法)找到了“解”,则难以肯定它是否真是代表实际存在的物理现象的解。流体 力学中所遇到的欧拉方程组和纳维-斯托克斯方程组,正好都属于第三种情况。 可是,大量的自然界、各种工程实际中的流体力学问题需要解决,并不能等 弄清方程组解的存在性后再说。人们只能在用理论分析、数值计算、物理实验相 结合的方法,研究、解决所遇到的流体力学问题。分析解及数值解都是建立在具 有―定假设条件的运动方程组之上的,其结果仍都应受到物理实验结果的捡验。 由于纳维-斯托克斯方程组解的存在性问题至今尚未解决,就更难以肯定数值方 法找到的解,是否代表真实的流体运动。所以,数值摸拟与物理实验的本质差别 并未消失,数值模拟尚不能替代物理实验,数值摸拟的结果必须用物理实验来可 偿还检验其正确性。[9] 由于计算机和数值计算技术的快速发展,出于科学研究和生产实际的需要, 对于流体力学问题进行大规模数值模拟,现己很常见,国内已有几种功能较强的 计算流体动力学的商品软件(如 FLUENT,STAR―CD,TASC flow,PHOENICS 等)在应用,且已使用并行计算机进行大规模数值模拟。但所得到的数值模拟结 果,仍须用物理实验来检验其正确性。而作物理实验又需要更多的投入,所以巧 妙地构思、设计小规模、精细的物理实验,以较少的花费来检验大规模数值模拟 的正确性,就显得十分重要。20 Maya 粒子及流体特效处理3.2.2 N-S 方程在 3D 绘制的应用 Navier-Stokes 方程在 3D 绘制上的广泛应用起源于 1999 年 stam 公开的一篇 论文“stable fluids”。当时 stam 供职于 ALIAS 公司,从论文中的语气看,此方 法好像几年前就研究出来了,只是未加以公开。该文的一个贡献是使用了半拉格 朗日方法来取得 Advect 方程无条件的稳定解,而不必考虑步长的大小;另外还 使用了一种投影的方法来保证质量守恒。以前的方法要用非常小的步长,才能求 得 Advect 方程的近似解,这样运算的速度非常慢而且结果也不一定准确。 “stable fluids” 论文的公开, 引发了随后几年学术界对 Navier-Stokes 方程在流体 绘制中研究的热潮。斯坦福大学的 Ronald Fedkiw 是其中的领军人物,完成了一 系列的在该领域的里程碑式的文章。“Visual Simulation of Smoke”,将“stable fluids”方法引入到了烟的真实绘制,并且做出一个非常有效的改进 Vorticity Confinement,解决了半拉格朗日方法由于在粗格子计算导致漩涡过快消失这一 弱点[10]。该论文的结果非常的漂亮,在 Ronald Fedkiw 的网站上有演示动画片。 在 SIGGRAPH2001 , “ Practical Animation of Liquids ” 一 文 问 世 了 , 是 PDI/DreamWorks 的 Nick Foster 与 Ronald Fedkiw 合作的文章,在“stable fluids” 的基础上, 创造性地运用 Dynamic Level Set 来模拟水的表面[11]。 《怪物史莱克 2》 的 流 体 绘 制 软 件 就 是 PDI/Dream Works 科 学 家 Nick Foster 开 发 的 。 SIGGRAPH2002“Animation and Rendering of Complex Water Surfaces”使用了 Particle Level Set Method 方法,使水的绘制达到了照片般的逼真。 3.2.3 Navier-Stokes 方程推导 就像我们最初接触高数的时候一样,流体力学方程组也是先从积分形式开始 导出的。对有限的流体体积,讨论它的质量、动量、能量的变化率,根据基本物 理定律写出的方程组就是积分形式的流体力学方程组。 然后从积分形式的方程组出发,把式中的面积分化成体积分,并假定各被积 函数(流场中物理量及其有关的偏导数)连续,就可得到微分形式的方程组。当 然也可直接对无限小体积元应用基本物理定律来建立微分形式的方程组。 在下面介绍基于质量守恒定律,动量定理,能量守恒定律的各方程时,一般 先介绍其积分形式,对应的微分形式方程也就很好得出了。 基于动量定理的运动方程可以设 F 为作用在单位质量流体上的体力,则运动 方程动量定理的积分形式为:21 Maya 粒子及流体特效处理(5-1) 体积分后微分形式为: (5-2) 引入牛顿粘性流体的本构方程: (5-3) 式中 为单位张量; 为变形速率张量;p 为压力;μ为动力粘性系数。μ= 0 的情形称为理想流体,对理想流体 。 把式(5-3)代入式(5-2)则推导出纳维-斯托克斯方程: (5-4) 将其简化为: (5-5) 其中, 代表流体质点受到的压应力,粘滞力 是质点受到的切应力,为流体粘性系数,而表示流体质点所受到的外力场的质量力。如果忽略流体粘性令式(5-4)中λ=0,μ=0,就得理想流体的欧拉方程: (5-6)3.2.4 Navier-Stokes 方程的力学原理 流体动力学研究流体机械运动的基本规律,即流体运动要素与引起运动的动 力要素――力之间的关系, 这就需要根据物理学与理论力学中的动量守恒和能量 守恒定律,建立流体运动的动力学方程,来描述流动要素(流速等运动要素和压 强等动力要素)的空间分布与时间变化。[12] 由流体力学知识我们知道:无论流体处于运动状态还是平衡状态,都是受力 作用的结果。要研究流体的运动必须首先分析作用在流体上的力的种类和性质。 在分析受力时选用的方法,通常是在流体中取出一段隔离体,这个隔离体是一个 封闭表面所包围的一部分流体(看作是流体质点),将作用在隔离体上的力根据 作用方式不同分为表面力和质量力两大类。 表面力是作用在隔离体表面上的力,其大小和受力作用的表面面积成正比。 表面力是相邻流体或其他物体作用的结果。由于流体内部不能承受拉力,所以表 面力又可分为垂直于作用面的压应力和平行于作用面的切应力。22 Maya 粒子及流体特效处理质量力是指作用在隔离体内每个流体质点上的力,其大小是和流体的质量成 正比的。最常见的质量力是重力和惯性力。 根据这种分类,我们来看看流体质点受到的主要作用力。 实际流体所受的表面力包括: 压应力和粘性引起的切应力(我们通常称为粘滞 力)。由于流体具有流动性,在静止时不能承受剪切力以抵抗剪切变形,但在运 动状态下,流体内部质点间或流层间因相对运动而产生内摩擦力以抵抗剪切变 形,这种性质就是粘性,内摩擦力称为粘滞力。流体的粘性是流体中发生机械能 损失的根源。而压应力是由流体动压强产生的。 通常情况下所考虑的质量力只有重力一种,惯性力并没有被包括在内。以上 所诉也应用于物理模型中。3.3 欧拉法与拉格朗日法 流体动力学研究中基于物理的方法主要分为两种:第一种方法是从研究流体 所占据的空间中各个固定点处的运动着手, 分析被运动流体所充满的空间中每一 个固定点上的流体的速度、压强、密度等参数随时间的变化,以及研究由某一空 间点转到另一空间点时这些参数的变化,该方法被称为欧拉法,是一种基于网格 的方法[3];第二种方法是从分析流体各个微团的运动着手,即研究流体中某一指 定微团的速度、压强、密度等描述流体运动的参数随时间的变化,以及研究由一 个流体微团转到其他流体微团时参数的变化,以此来研究整个流体的运动,被称 为拉格朗日法,是一种基于粒子的方法[3]。 欧拉法着眼于流体质点所经过的各固定空间点上运动要素的时间、空间变 化,而不是追究各个质点的详细运动过程。若将拉格朗日法比作“跟踪”法,则 欧拉法属于“步哨”法。通过在各固定空间点步哨,观察不同流体质点通过某一 固定哨位所产生的该哨位上流动要素的时变过程, 而且能够通过综合各哨位情况 全面了解整个流动的时间、空间变化规律。 拉格朗日法的方法的优点为容易表达,不需要对整个空间进行处理,而且容 易保证质量守恒,而且比较容易实施控制。但拉格朗日法对于平滑运动界面的重 建比较难处理, 而且自由界面拓扑的改变必须采用复杂的算法才能构造出该表面 的几何,计算量随着粒子数的增多而加大。 欧拉法和拉格朗日法各有优缺点,为了更真实地模拟流动,基于网格的欧拉 算法往往结合拉格朗日的粒子算法一起使用, 比如得到广泛应用的半拉格朗日算 法[Stam1999] [4],或者用来对流体进行约束,从而加强交互控制[Pighin2004] [3]。23 Maya 粒子及流体特效处理所以综合对于流体来说,采用欧拉法的计算效率较高(有限差分法),而计 算流体的自由边界(例如浪花)则是拉格朗日法(粒子方法)占优,所以现在出 现一些混合方法(如 levelset)。3.4 Maya 流体制作分类 关于 MAYA 流体特效,是应用流体动力学观点技术去模拟 2D 和 3D 大气特 效、燃烧特效、胶粘流体等特效。MAYA 只解释单一流体,意思是它不能让两 个或更多的流体相互作用。 3.4.1 从形体上分 如前所述,Maya 流体特效从形体上分可以分为 2D 流体和 3D 流体。 与高度场所不同的是,2D 流体只存在于一个用户定义好的体积之中。它的 分辨率是靠存在于长度和宽度范围内的一定数量的“体积像素”(voxels)所定 义的,它的高度值只是定义的流体的厚度(在厚度上没有细节)。2D 流体能够 进行变换操作,也能够作为 UV 或投影类型纹理。 3D 流体也存在于一个用户定义好的体积之中,但有一点和 2D 流体不同,那 就是它在高度上具有细节和可控制的分辨率。3D 流体也可以进行变换操作,以 及作为体积(volumetric)纹理应用于物体和粒子。 3.4.2 从原理上分 流体特效从原理上分,又可以分为动力学流体(dynamic fluid)、非动力学 (non-dynamic fluid)流体和开放水流体特效这样三个基本类型。 开放水流体特效,即海洋效果则是通过把海洋材质赋给一个平面而建立[13]。 原理上是错位贴图、复杂纹理和粒子的组合,而不是流体模拟器,所以本文暂不 讨论开放水流体特效。 动力学流体是遵循自然规律的流体动力学,也就是基于物理的流体。简单的 理解是利用物理学机械运动的公式去描述流体如何流动, 通过在每一个时间点分 别求解流体动力学公式去仿真流体的行为。动力学流体可以为其设定材质,对它 们贴图,和其它几何物体产生碰撞、影响柔体、还能与粒子产生作用。如果你想 表现流体的动力学属性就必需定义一个动力学栅格,比如为速度定义流体容器, 当运行这个模拟时,在每一个时间段中 Maya 指定的流体动力学解算器会对这个24 Maya 粒子及流体特效处理模拟所在容器的属性计算新的值来代替栅格中的旧值。可以通过发射,描绘,或 者指定一个存储器在动力学栅格容器中的方式指定力给流体建立动力学流体, 既 可以是内力或外力,又可以增加重力和磨擦力在流体节点的内部,也就是在动力 学模拟部分的属性编辑器进行操作。 非动力学流体则不利用物理学上的公式去仿真,要产生动态必须利用关键帧 动画技术去改变动画材质的某些属性。由于 Maya 不用解算过多的方程,这种形 式的流体渲染得比动力学流体要快得多。非动力学流体特效,若运动则是动态和 纹理。 建立一个非动力学流体特效[14] , 不能用动力学流体解算器建立流体运动, 所以在整个模拟时间内属性值是一个恒量。包括指定一个生动的纹理。 综合来说,流体的特点如下: ? ? ? ? ? ? ? 具有真实的体积,能够堆积和填充 流体不能在他的体积范围之外存在 流体的精度越高,计算速度越慢 预先设置好的各种效果将减少调整时间 能够为其他用途服务,如 2D 或 3D 纹理 能够模拟出非常好的液体和流动效果 无法模拟空间中的液体效果3.5 属性定义的方法 流体最常需要考虑的属性包括: 密度(Density)――密度是流体的可见特性,决定流体的几何结构; 速度(Velocity)――速度是影响动态流体移动密度、温度、燃料和颜色值 的行为,速度是动力学流体必需模拟的,可以通过用速度的力量去推动容器内所 有的物体; 温度(Temperature)――主要是温度斜率影响; 燃料(Fuel)――与密度属性结合,是密度定义的可发生反应的区域,温度 能点燃燃料为爆炸物效,密度代表材料,燃料值决定了反应的状态。即燃料属性 描述反应的情况; 颜色(Color)――可使用内置的梯度滑块,也可使用网格控制每体素颜色。 另外在 Maya 中为了让流体效果真正运行模拟引擎,在 Attribute Editor 的 Fluid Effects Attribute (流体效果属性)部分中,必须至少将 Density(密度)和 Velocity(速度)设置为 Dynamic,如果这些属性被设置为 Static,引擎就只对它25 Maya 粒子及流体特效处理们运算一次,即初始状态,然后就不再计算了。 有两种方法在流体的容器中定义流体的密度、 速度、 温度、 燃料和颜色属性: 流体动力学栅格定义属性和流体梯度定义属性。 可以运用任何组合去建立流体特 效。建立一个非动力学流体特效不能用动力学流体解算器建立流体运动。3.5.1 流体动力学栅格属性 这种方法可以理解为用一个流体发射器,在流体容器中发射流体的各项属 性。移动流体发射属性体积像素的静态或动力学栅格容器,栅格可以精确的控制 每个容器中的属性,我们能指定流体动力解算器为动力学流体模拟,至少当这流 体属性被定义为流体栅格时,属性值被解算,也就是各个属性值可以得到生动的 模拟表观。 定义流体动力学栅格属性的要点: (1)可以用流体发射器添加流体属性,如 Density、Heat、Fuel 和 Color 等 到流体容器中; (2)发射器必需在流体容器范围内发射; (3)可以在一个流体容器内进行多重发射; (4) 可以用一个流体发射器的负发射属性值将流体的 Density, Heat 和 Fuel 从流体容器中移除。 注意对静态栅格只能放置属性,不能应用流体动力解算。通过增加体积像素 的数目(即 Resolution 项),可以组成一个动静态或动态栅格流体,从而增大了 流体图像的渲染品质(但是也增加了它的渲染时间)。本章后面的实例将主要运 用流体动力学的栅格属性来定义和解算流体。 3.5.2 流体梯度属性 主要用于在流体容器中定义非动力学流体的梯度属性。而且这个值是永远不 改变的。因为梯度属性值是 Maya 内部定义的在渲染时间内不需要计算的一种通 过生动的贴图指定的梯度技术,可以得到非常逼真的效果。流体梯度属性因为不 用解算,所以要比动力学栅格属性渲染快得多。作品通过指定贴图到梯度得到生 动的贴图,也就是所谓的纹里贴图流体。 属性值在整个时间是一个恒量,但可以用非动力学流体建立运动。在 Maya 中你可以预先确定一个边恒梯度,属性或者静态栅格,定义一个静状弹性栅格可26 Maya 粒子及流体特效处理以控制体积像素内的种种属性, 通过发射、 描绘或指定一个放置精细属性的栅格, 这样就预先在容器中确定一个存储器。 初始存储器是用一个流体边框放置预先定 义的属性,预先确定梯度属性。 添加梯度容量到容器的具体步骤如下: (1)建立流体容器 建立 3D 空间流体选择 Fluid Effects&Create 3D Container 打开 3D 流体选项窗 建立 2D 空间流体选择 Fluid Effects&Create 2D Container 打开 2D 流体选项窗 (2)修改定义流体容器和 resolution 尺寸以改变容器容量; (3) 选择流体容器, 选择 Fluid Effects&Add/Edit Contents&Gadients 开启流体 梯度选项窗; (4)开启选项窗后,想描绘哪个梯度就选那个梯度,然后 Apply 或 Close 一般从 fluidshape 的 Attribute Editor 中添加容量梯度,改变产品梯度,然后 改变产品梯度到想要的梯度类型。3.6 2D 动力学流体属性编辑器示例 先创建一个流体容器 Fluid Effects &Create 2D Container,选择容器,再选择 菜单 Fluid Effects & Add/Edit Contents & Emitter, 这样会在容器的内部创建一个流 体发射器 Emitter,流体发射器类似粒子发射器,控制流体发射的参数,并且把 流体发射到容器里进行仿真运算。一个容器可以包含多个 Emitter。这时点击时 间轴上的播放按钮,就可以看到流体的流动仿真情况了。注意流体是不会超出容 器的范围的。 3.6.1 基本属性 选择流体容器 Container,Ctrl + a 先看看它的属性编辑器:27 Maya 粒子及流体特效处理图 3-1 容器基本属性编辑器 Fig.3-1 Basic attributes editorResolution 是下一节用来控制体素 Voxels 大小的关键,可以理解为容器分辩 率的大小; Size 设置容器的大小; BoundaryX、BoundaryY 设置容器的边界,如果设置成 none,则边界消失, 播放时流体不会同边界碰撞,但是流体一旦越过边界,则立即消失,因为流体不 会流动超出容器的范围; 在 Contents Method 部分,Density(密度,是流体的可见属性)和 Velocity (速度)部分都选用了 Dynamic Grid 参数。一个 Dynamic Grid 把容器分成许多 小方形“voxels”即栅格,这些小栅格里面的数值多少控制了流体的流动(为方 便观看可选择属性编辑器里面的 Display&Numeric Display&Density,就可以看到 栅格及其 Density 数值)。栅格的多少可以通过上面 Resolution 项来调整,当前 为 40×40 格。可以利用发射、绘制和预设默认值来定义这些数值。在模拟的每 一步,Maya 利用动力学解算器计算栅格中的数值,数值的变化,促成了流动的 实现。28 Maya 粒子及流体特效处理图 3-2 栅格及其属性值(例:密度) Fig.3-2 Voxel and it's values(exe. density)在这个例子中我们制作的是动力学流体,因为我们使用动态栅格定义流体的 这些属性; 如果是非动力学流体则如前所述可以用一个边框梯度或者静态栅格来 定义这些属性。3.6.2 动力学流体的运动属性 选择 Container, Ctrl + a 打开它的属性编辑器, Dynamic Simulation 项目下 在 面,可以改变流体受到的重力(Gravity),流体的粘绸度(Viscosity)和受到的摩擦 力(Friction)等。重力设置为负数,则流体向下运动。也可以展开 Content Detail 项目以下的项目,即可以设置速度(Velocity)、受扰乱程度(Turbulence)等属 性。图 3-3 动力学属性编辑器 Fig.3-3 Dynamics attributes editor29 Maya 粒子及流体特效处理通常更改 fluid 的 Damp 湿气值为 0.05,Simulation Rate Scale 设为 4,以提高 解算的速度。 注意展开 Solver 解算器可以选择:N-S 方程做为解算引擎。图 3-4 解算器选项展开 Fig.3-4 Expanding solver editorMaya 应用流体动力学规律去摸拟流体运动,关键在于背后运用动力学流体 模拟来建立真实的流体运动,让流体表现动感,用粒子是难以实现的。其中选择 基于物理的纳维-斯托克斯流体方程算子。 如同上面所说,如果想表现流体的动力学属性(例如,密度)就必需定义一 个动力学栅格,速度必须选为速度定义流体容器,运行这个模拟时 Maya 指定一 个流体动力学解算器,给这个模拟所属性在容器,在每一个时间段中计算新的值 来代替在栅格中的旧值。 需要注意的是:当梯度属性值在为动力学模拟计算中应用时,这个属性值作 为一个模拟计算结果不能被改变。例如:你能用一个动力学栅格定义密度,但是 只添加了单方向上的恒定速度去影响运动的密度, 在这个模拟方法中大量的方向 上的速度将保持不变,但是密度的值却发生了变化。 有三种建立动力的方法归纳如下: (1)指定力 通过在动力学流体属性编辑器中指定力给流体建立动力学流体,你可以使用 内力或外力,在流体节点的内部增加重力和摩擦。 (2)速度充当/( Velocity) 还有一种方法是应用流体的速度充当力,速度(包括动荡)能被用作移动周 围物体在动力学栅格中的力量, 速度的漩涡属性是流体内力属性独特的有效小栅 格漩涡运动。 (3)应用外力场/(fields) 动力学场(在 Fields 菜单)也能影响流体运动,应用 Graewity 和 Tarbulenle 建 立流体在应用外力更直接,但是用外力你可以控制整个目标。 3.6.3 流体的颜色 选择 Emitter,Ctrl + a 打开它的属性编辑器,打开 Fluid Attributes 属性项,30 Maya 粒子及流体特效处理勾选 Emit Fluid Color 选框,这时弹出一个对话框要求把 container 里面的 color method 属性设置成 Dynamic Grid 属性。图 3-5 颜色属性设置确认对话框 Fig.3-5 Be sure to set color method to dynamic grid如果 color method 已经设置成 Dynamic Grid 属性,则这个对话框不会弹出。 设置时点击 Set to Dynamic 即可。 在下面的颜色框上点击, 选择自己喜欢的颜色, 即可改变流体的颜色。 由于一个容器可以包含多个 Emitter, 所以多加一个 Emitter 进去容器,调整其颜色,可以实现多彩的效果。 3.6.4 在栅格中描绘流体属性 Paint Fluid Tool 是工匠笔刷工具。 运用 Paint Fluid Tool 在流体栅格中精确的 描绘流体的细节属性,用每种笔刷(brush slroke)通过放缩,光滑更替和添加去编 辑流体栅格现有的属性。在 Maya 中以 Painting 对 faintfluid 属性值。容器模式必 需定义成静态栅格或者动力学栅格。 (1)在 2D 容器中描绘流体属性 在 2D 容器中描绘属性值就是在帆布上描绘一样,在容器的表观平面上移动 笔刷,就拖动属性设置到栅格中。 a) 选择流体容器; b) 选择 Fluid Effects&Add/Edit Contents &Paint Fluids Tool 上, 开启描绘工具 设置窗; c) 在工具设置窗的描绘属性菜单部分,在可描绘属性旁,选择你想要描绘 的流体属性; d) 如果选择的属性没有设置动力学或静态栅格,将被提示设置; e) 选择笔刷轮廓,进行描绘,详细请可以查看应用工匠描绘工具在 Maya 的 painting 章节中; f) 修改笔刷属性设置请查看 Paint Fluids Fool 设置; g) 拖动交叉的流体区域31 Maya 粒子及流体特效处理(2)在 3D 容器中描绘流体属性 在 3D 容器中描绘,实际上是在容器中进行一个二维切片中描绘,你描绘区 域是一个 X、Y 或 Z 的平面,邻近的切片聚集在一起就是 3D 流体。 当你选择流体描绘工具时一个切片就显示在目标流体容器中,这时切片是用 虑线表示的一个平面, 流体操作器在一个角落, 当你在切片指示器上移动指视器, 改变笔刷就可以描绘了。切片轴向相对于你的观察,或者是轴向颜色改变能够描 绘不同角度的属性值。 在 3D 流体容器中描绘流体属性除去显示次体积以控制切片的位置和厚度以 外类似在 2D 容器中描绘。3.6.5 流体发射器属性 流体发射器(FluidEmitter)也是影响流体最终效果的重要元素,属性如下: (1)Basic Emitter Attributes 发射器基本参数图 3-6 发射器基本参数属性编辑器 Fig.3-6 Basic emitter attributes editorEmitter Type:发射器类型 [Omni] 全方向的点发射器,流体发射属性在所有方向发射; [Volume] 体积类型,流体发射属性是一个封闭体积。 Cycle Emission:周期发射器,在每隔几帧后周期发射随机数字流,参 Cycle Interval; Cycle Interval:周期间隔,定义每间隔多少帧重复随机数据流,参 Cycle Emission;如果周期发射没有设置,则没有效果.; Distance Attributes:距离属性 Max Distance:定义新的粒子被发射器建立的最大距离,不用于体积发射器; Min Distance:定义新的粒子被发射建立的最小距离,不能用在体积发射器。32 Maya 粒子及流体特效处理(2)Fluid Attributes 流体参数图 3-7 流体发射器流体属性编辑器 Fig.3-7 FluidEmitter's fluid attributes editorDensity Rate:密度等级,设置一个平均等级在那个密度值被发射进栅格每秒 负数值从栅格中移除密度; Heat Rate:温度等级,设置每秒被发射到栅格中心平均温度速度; Fuel Rate:燃料等级,设置每秒中发射多少燃料到栅格; Fluid Dropoff:设置衰减值,对体积发射器的衰减是定义多体积轴向外衰减 多少, 对点、 线和面发射器的衰减是基于发射点从 Min Distance 到 Max Distance。 (3)Volume Emitter Attributes 体积发射器参数图 3-8 体积发射器属性编辑器 Fig.3-8 Volume emitter attributes editorVolume Shape:设置发射器的体积形态,它仅影响发射器类型; Volume Offser:X,Y,Z,这是从属性定义发射器的发射点在发射器体积中心 偏移距离; Volume Sweep: 是弧形体积发射用于 Sphere 球、 Cone 锥、 Cylinder 和 Torus; Sectoon Radius:仅指定给 Torus 体积类型,定义 Torus 的扫描范围。3.7 流体模拟分类与属性的关联 在动力学流体模拟中将流体大致分为几类:烟雾与云彩、燃烧与爆炸、自由33 Maya 粒子及流体特效处理运动界面、混合流和多相流[15]、相变和非牛顿流体、流固耦合、非真实感流体。可以看出主要是根据各类流体的相似属性来划分的。在 Maya 制作中也不能忽视 相似属性在其中的关联和应用。 3.7.1 烟雾与云彩 烟雾问题[Fedkiw2001]可能是流体现象模拟中最为简单的一类,不存在自由 运动界面的问题,也没有其他什么特别需要处理的。云彩的运动跟烟雾类似,不 过为了更真实地模拟云的变化,[Harris2003a,Harris2003b]引入云彩形成的物理 机理,通过热力学作用考虑空气中水分含量的影响[3]。 烟雾动力学属性是重点,密度,温度值,速度,节点通道全开。在 Density 属性编辑器中更改 fluid 的 Damp 值增加湿度,如果需要使烟雾快速扩散消失则 需要增加 Dissipation 和 Diffusion 值。加大 Velocity 的 Swirl 和 Turbulence 的 Strength,以产生无规则的扰动。 调试一个雾气效果,修改它的透明和色彩如图所示,以接近色彩图 3-9 透明和色彩属性编辑器 Fig.3-9 Color and incandescence attributes editor在 Maya 中调节烟雾效果简单的说需要注意容器体积,打开色温显示,调节 透明度、Ration 值、Frequency Radio 值,勾选 Inflection,TEXTIME 设定 MEL 以及 implode center,灯光打开,勾选阴影。在渲染之前,还需要进行缓存计算, 以便得到确定的结果。最后渲染效果如图 3-10:34 Maya 粒子及流体特效处理图 3-10 烟雾效果 Fig.3-10 Smog effect云彩属性重点是密度 Density,速度 Velocity 通道全部关闭,在 Shading 里调 节云的色, 最重要是把 Color, Incandescence 和 Opacity 的 Input 都改为 YGradient。 最后渲染效果如图 3-11:图 3-11 云彩效果 Fig.3-11 Cloud effect35 Maya 粒子及流体特效处理3.7.2 燃烧与爆炸 最常见的燃烧现象就是火焰,它是一种低速流动燃烧的过程。目前动力学界 最为精确的模拟方法来自[Nguyen2002],采用全 NS 方程来求解,并考虑了燃烧 过程[3]。 快速燃烧就会形成爆炸现象. 爆炸最主要的后果是冲击波, 它以超音速传播, 推动或者撕裂物体,改变光线折射,而次后果才是爆炸引起的火球,尘云等。[3] 冲击波会影响气体的密度,从而改变折射率,导致图像扭曲,对于视觉来说,主 要效果来自爆炸次后果。模拟悬浮粒子造成的爆炸,可能的话考虑引入再次燃烧 的过程,和气体膨胀过程。 其实利用 Maya 流体制作火焰之类的效果的时候无非就是要利用好 Shading 和 Textuer。 创建 2D 容器,同样 Contents Method 属性框下面 Density 和 Velocity 注意选 中 Dynamic Grid,Display 属性框下面 Boundary Draw 选中 Bounding Box。 Fluid Effects & Add/Edit Contents & Emitter 添加粒子发射器, 调节决定质感的主要参数,属性见图 3-12: 调节火焰基本颜色为黑色,然后用 Incandescence 做出橘黄色发光的效果。图 3-12 Incandescence 属性编辑器 Fig.3-12 Incandescence attributes editor这里需要提一下的是流体绘制方面的问题。对于火焰、爆炸这类现象,温度 占很重要的位置,这个时候黑体辐射不可忽视,而且还需要考虑亮度过高带来的 色适应问题[Nguyen2002][3]。而对于烟雾之类的常温现象[Fedkiw2001],其密度场就可以完全表现了。其属性编辑详见图 3-13。36 Maya 粒子及流体特效处理图 3-13 Opacity 属性编辑器 Fig.3-13 Opacity attributes editor最后渲染效果如图 3-14:图 3-14 火焰效果 Fig.3-14 Fire effect色彩的渐变效果是控制流体火效果的关键, Shading 中的 Glow 数值在制作发 光燃烧之类的效果的时候是非常实用的。 另 外 还 要 注 意 在 决 定 流 体 的 渲 染 类 型 FluidShape&Surface 选 择 Volume Render 是渲染火焰,而旁边的 Surface Render 是表现烟和液体时选择的。 3.7.3 小结 动力学流体属性中主要的如基本属性、运动属性、流体的颜色、栅格中描绘 流体属性和流体发射器属性在通过各个实例可以验证: 流体表现的原理是当这流 体属性被定义为流体栅格时,属性值将会被解算,也就是各个属性值可以控制流37 Maya 粒子及流体特效处理体生动的模拟表观。 而流体栅格中最主要运作的概念就是体素 Voxels, 解算器计 算栅格中的数值,数值的变化,促成了流动的实现。 本节也探索了流体模拟分类与属性的关联。其中烟雾动力学属性是重点,因 为烟雾之类是常温现象,所以用其密度场就可以完全表现了。云彩属性重点是密 度 Density,速度 Velocity 通道全部关闭,在 Shading 里调节云的色,关键在于是 把 Color,Incandescence,和 Opacity 的 Input 通道定为 YGradient。在利用 Maya 流体制作火焰之类的效果的时候要利用好 Shading 和 Textuer。另外还要注意在 Maya 中根据流体的效果来决定流体的渲染类型:渲染火焰选择 Volume Render, 表现烟和液体时选择 Surface Render。3.8 本章小结 本章的研究重点在于流体力学在 Maya 流体特效制作中的应用和流体动力学 栅格属性的运用。并归纳了运动属性中三种建立动力的方法:指定力,用速度充 当和应用外力场。 通过本章的案例能例证显著影响流体效果的主要属性为运动属 性、流体的颜色、栅格中描绘流体属性和流体发射器属性。流体模拟分类与属性 的关联在于各属性之间的相互作用,以及对速度、温度、密度的关联。但是这种 属性一般很难对流体特效在动画上能有所实质控制, 所以在要求更逼真的模拟实 例时需要有进一步的解决方案。38 Maya 粒子及流体特效处理4 粒子与流体组合模拟粒子便于操控,而流体模拟更加接近真实,所以在实际应用中经常会将粒子 和流体进行组合模拟。在本章中先介绍了组合模拟技术的几种方法,无外乎是使 粒子受流体动力学驱动或者流体基于粒子模拟这两类。 前面第 2 章已经用粒子的 方法模拟了龙卷风特效, 所以本章继续在第 2 章的实例基础上进行基于粒子的流 体模拟实验, 最后通过采用了流体材质基本实现了既保有粒子和表达式的可操控 性,又争取在表现上能有流体的体积材质效果,从而进行了逼真效果上的优化。4.1 组合模拟技术概况 粒子和流体的结合是在应用中经常碰到的:如果使粒子与容器之间建立约束 关系, 那么流体里的动力学能够作为场来对 Emitter 所发射出来的粒子施加影响, 基于这个基础,粒子就能够受流体动力学驱动,并保持粒子的易操控性;场还能 够与粒子相链接,通过粒子来对流体产生作用。 流体则能够用作粒子的纹理,还包括各种体积材质(volume shaders),这样 流体的材质特性就能够保留下来在特效中显现; 这样的情况还可以用来实现把粒 子作为发射器来发射流体。 还有一类组合模拟则多实现于海洋面 Ocean shader 上,粒子可以漂浮在 Ocean shader 上,也可以通过探测来触发粒子事件(events)[12]。4.1.1 受流体动力学驱动的粒子 升腾的烟雾,云,核爆炸,星云状的气体通常是有体积感的例子。产品级的 模拟像用许多有工程纹理的面和球体,去渲染成看起来象流体样的效果。但是用 这些靠添加场来驱动粒子的运动,去创建真实的流体动力效果是极其困难的[16]。 在 MAYA 流体效果介绍中给了用户许多有力的令人信服的途径来实现。但 在三维场景中基于流体动力学模拟不可避免的需要巨大的运行时间,也很难控 制,因此在短时间内得到令人满意的效果是很重要的。 解决方案往往是用二维流体模拟驱动粒子的运动。想像下风中飘浮的尘土和 随风起舞的树叶。让二维流体模拟速度向量场,并依照在场中的位置指定速度给39 Maya 粒子及流体特效处理每个粒子。这样创建比在真实细腻三维模拟中有更快的速度[16]。在 Maya 场景中创建一个 2D Container,然后另外创建一个粒子发射器 Emitter,此时 Emitter 所发射出来的粒子是不受到流体力学的影响的。 从大纲视图中选择 particle1,按 Ctrl 键再选择 fluid1,执行 Fields&Affect Selected Object(s),使粒子与容器之间建立约束关系,于是 Emitter 所发射出来的 粒子就受到流体动力学的驱动了。 查看动力学关系窗口如图 4-1:图 4-1 Maya 动力学关系窗口之粒子与流体 Fig.4-1 Dynamic Relationships View of Particle and Fluid4.1.2 基于粒子的流体模拟 流体能够用作粒子的纹理,包括各种体积材质(volume shaders)[17];场能 够与粒子相链接,通过粒子对流体产生作用;粒子可以作为发射器发射流体。 [Rasmussen2004] 通过控制粒子的方法来对速度,粘性,level set 和速度散 度进行控制,并提供了两种基本控制形状(球形各向同性控制和圆柱各向异性控 制),而每个粒子的影响量则通过三种下降曲线来体现,在具体实施控制的时候 又提供了软控制或者硬控制两种模式, 从而为整个流动提供了一种灵活的控制机 制。类似地,[Pighin2004]则采用迁移径向基函数(ARBF: Advected Radial Basis Function)的方式来增强对流体模拟的控制,而 ARBF 即为采用粒子来对流体进 行重新参数化的过程,通过改变粒子的位置达到控制流体的目的。[3] Takashi Amada 用 GPU 也实现了基于粒子的流体模拟,并实现了实时的刚体40 Maya 粒子及流体特效处理和流体的交互。[18] [19] [20]4.1.3 海洋效果的组合模拟 本文前面第一章绪论里已经解释过海洋效果实际是错位贴图,复杂纹理和粒 子的组合,从而模拟海洋表面或其他大面积水面。因而不是 2D/3D 流体容器意 义上的流体模拟。 流体力学对于波浪这种大规模场景, 波浪共有三个尺度的效果, 精细尺度为飞溅和泡沫,中间尺度为水面的波纹,大尺度上为波浪的翻转和破碎[3]。这些次要系统互相影响做模型动力学流动的实体。模拟一个液体的身体表面行为,O'Brien, J. F.使用一个每个次要系统符合的三个部份的系统到流动体一个 实际区域:主要部份体积,液体的自由表面,和分离的液体 (水沫) 的成份[21]。 如图 4-2 所示。图 4-2 体积、表面和水沫粒子组成波浪 Fig.4-2 Columns, surface, and particles buildup wave4.2 组合模拟优化龙卷风特效实例 4.2.1 背景 我们再来看看龙卷风的质感特性41 Maya 粒子及流体特效处理(1)漏斗形云柱; (2)云柱的云层厚实; (3)有明显的体积感; (4)强烈的气旋会卷起地面的尘埃。 在本文第 2 章 2.3 节中粒子和 MEL 表达式制作龙卷风实例的章节中已经使 用了粒子模拟龙卷风的方法, 虽然通过粒子表达式能非常便捷的控制粒子的形态 和速度。但是由于在渲染时使用的是贴图序列,并且是使用硬件渲染,因此粒子 无法接受 MAYA 的灯光信息,导致无法产生真实的光影效果。 而流体的动态虽然难以控制,但是流体使用的是体积材质。体积材质是能够 通过软件渲染并能准确的接受 MAYA 的灯光信息,产生真实的阴影和体积感。 所以根据粒子和流体的这些特性,需要使用另一种解决方案。使用粒子控制 龙卷风的形态和速度,使用流体的体积材质渲染龙卷风的质感。两者各取所长, 更加真实的模拟龙卷风的效果。 4.2.2 制作 1)建立体积材质 打开 hypershade 材质编辑器,在 Great Maya Nodes&Volumetric&Fluid Shape 建立一个流体材质,在场景中会默认生成一个名为 FluidShape1,采样 精度为 10×10×10 的流体晶格。在这里不需要建立流体发射器,因为并不需要 流体的动态。进入 FluidShape1 的属性编辑器。如图 4-3,在 Contents Method 下, 将 Density 和 Velocity 的属性从默认的 Dynamic Grid 改换成 Off(zero), 这样就将 该流体所有的物理动态完全关闭了。图 4-3 建立流体体积材质 Fig.4-3 Set up FluidShape42 Maya 粒子及流体特效处理调整 FluidShape1 的材质,与体积材质有关的属性都在 Shading 下拉菜单中, 如图 4-4。 Dropoff Shape 的类型调整为 Sphere, 将 Edge Dropoff 调整为 0.6 左右, 这一属性控制着体积材质的阴影边界衰减类型以及衰减透明度。图 4-4 阴影属性 Fig.4-4 Shading InputColor 属性控制着材质的颜色变化,如图 4-5。在 Color Input 中选择 Center Gradient,这可以使颜色的渐变由材质的中心像外围扩散。在 Selected Color 的渐 变条中,选择所需要的颜色过度。图 4-5 颜色属性 Fig.4-5 Color InputIncandescence 属性与 Color 的参数相同,它控制着材质的自发光颜色过度, 如图 4-6。在 Incandescence Input 中选择 Center Gradient,添加 Selected Color 中 的颜色过度,在这里选择稍暗的颜色渐变,因为龙卷风并不会有高亮的自发光现 象。图 4-6 光热属性 Fig.4-6 Incandescence Input整个材质的透明度是由 Opacity 属性控制的,它通过一个曲线编

我要回帖

更多关于 maya锁定物体 的文章

 

随机推荐