maya建筑模型教程的模型怎么放到拍的视频里

您的位置:&-&-> -& Maya基础课程之建模篇-软件教程第二章基础几何体建模 制作机箱按钮
同类周下载排行
软件授权:免费软件
软件大小:7660KB
人气指数:0
软件语言:简体中文
软件评级:
运行环境:Win7/XP//Vista
更新时间:
出 品 人:&&
软件合集:
&&&&&&Maya基础“建模篇”为21互联maya基础教程的第一部分,内容主要包含Maya软件介绍、界面认识、基本工具介绍等能,并配以大量实例使学习者迅速掌握高超的建模技术。本教程由“21互联远程教育网”制作,希望给您的学习带来帮助。
讲师:银成阳
简介:现任金时数码影视公司技术部经理、兼顺天电脑培训学校高级讲师,多年的开发、项目管理和培训经验,实践工作经验和教学经验都非常丰富。对影视前期及后期都有着丰富的经验。精通三维软件、Aftereffects、flame等后期合成系统及软件、对线性编辑系统及非线性编辑系统以至现场转播设备等都十分了解。
2-34.利用NURBS方式制作机箱按钮
热门软件推荐
热门安卓应用推荐houdinixmaya
模拟萤火虫(Simulation FireFly)
正值夏季,一闪一闪美丽的萤火虫也在这时出没。有没有想过用自己掌握的CG技术,模拟出这些可爱的小精灵呢?
上面图片,是这次教程最终合成出来的。
一、导言&&
&(请到博客相册看原图)&&&
上图是我做整个效果最终的思维导图,请一定认真看完。再看下面的文字,这样会事半功倍。
思维是学习的一般性方法,也就是通用的方法。你不能看一个教程只会做这一个效果。你要用这种做效果的思维方式做很多种效果。
思维的学习优先级一定要大于领域知识的学习。因为这是“元方法”,是万能钥匙。
(更多思维的学习,请深入刘未鹏博客,)
还像往常一样,我们先不做效果而是研究一下萤火虫。具体来说是研究一下他发光的动态。因为萤火虫通常做的中远景,不是那种特写,所以本次教程就不会涉及很细节的。只要有亮点就可以了。
在CG软件中能做这种亮点的手段太简单也太多了。
萤火虫通常是一大群的,发出黄绿色光,还一闪一闪。只要把握住如何闪就成功大半了。所以本教程大部分时间都在讨论如何闪的好看,以及用什么手段来闪。
再来看一下本教程做出来的动态
这一次,教程用一种试错的方式来写。所以不到文章节束,你都不可能得到最终效果。但每一种方法,都是一次必不可少的尝试,不要感觉这是在浪费时间,这些方法会开拓你的思路,可能只是在这个案例不适用,你以后做别的效果时就有迹可循了。
二、开始制作&&
这一次制作平台是Maya。我用的是Maya 2012版本。但这个效果对版本没有特别要求。
所有的都是基于Particle ,加上一点点表达式。
&在开始时我为了一下子就能得出最终效果。想的比较复杂。比如我要萤火虫是闪动的,颜色是由内至外分别是白,黄,绿,还得加上辉光。
当然在最后发觉,这样进行思考是错误的,浪费时间不说,还打击了自信心。要分小步骤进行制作。
首先建立一个Maya 文件,保存一下命名成Firefly.mb .帧数是从0到300.最好再设置一个工程目录。
建立一个默认的发射器emitter1
Emitter Type 改成 Volume , Rate 设置成100 。Volume Shape 是Cube。
Emitter1 Sclae值为7
现在模拟一下会发现,粒子在框里,从中心往四周运动。但我们做野外的一群萤火虫,是不需要它从中心往外扩散的效果的。
Away From Center 调整为0.这样粒子一出生就在原地了。你再模拟一下,会发现粒子一出生就不动了,定在那。
Random Direction 调整为1.0 。再模拟一下发现,粒子随机的运动了。这就是我们需要的效果。别的暂时不用调整。
现在问题是粒子太多了,特别是播放到后面,这样萤火虫太多了。
现在选择 particleShape1面板。
Max Count 改成50。意思就是最多只能有50只萤火虫。
为了便于观察与渲染,把Particle render Type改成Cloud(s/w),也就是云粒子。
选择这个粒子也是因为它渲染出来比较好看。
&&&现在你渲染一下,会发现,就是蓝色的一些点。好的,下面再调整一下材质。保存一下文件&
打开Hypershade面板。为了安全,还是新建立一个Particle Cloud材质球。把这个材质赋予给你的粒子。
Color改成纯黄色,Incandescence 改成纯成绿色。Transparency下的 Density改成4.0 Bob Map 改成纯黄色。S为0.5的绿色。
这样渲染一下就能有那个黄绿色的效果了。但你会看到颜色有云的杂乱,只要把 Noise打成0就可以了。
现在渲染出来的结果如下图
里面是黄色的,外面是绿色
全部材质设置如下图。
请注意上面效果,我是打了Glow的。
如果摄像机离的太远,可能渲染出来看起来是绿色为主,glow,也会看起来更大。辉光(glow)会与 Distance From Camera 距离有关系。
Tips1:要知道物体距摄像机距离,在 Display菜单的Heads Up Display里勾选上Object Details.再在场景选择对像就能看到Distance From camera信息
Tips2:Glow最好不要在渲染时加。在后期里加就好了。这样避免通道错误等一系列问题。并且后期里辉光效果也很好
现在我们得到的萤火虫有随机的运动,但没有一闪一闪的效果。接下来就做“闪”的效果
在做闪之前,得知道一下现实世界里的荧火虫是如何闪的。
看一下,现实拍的萤火虫。
&&确实,Gif看的不怎么清楚(请到Vimeo上搜索firefly))&&&
三、闪的秘密曲线
看一下科学的观察描述。
摘自方舟子的科普书《大象为什么不长毛》。(强烈推荐他的科普书,他书中传达的研究问题的方法,非常值得像我这样没有受过专业科学思维训练的人。况且写得也很有趣)
北美最常见的一种萤火虫属于黄光萤火虫,俗称“北斗”,它发出的是黄绿色荧光。雄虫靠近地面飞行,每隔6秒钟发一次闪光,持续时间大约半秒,发光时向上飞行,形成一个“J”字。
地面上的雌虫如果看到了,会等大约2秒钟再发出一次持续半秒钟的闪光做出响应。其他种的萤火虫的发光模式与此不同:有的每间隔2-3秒钟就发出持续时间长达2-3秒的光,有的每隔3-4秒钟快速地闪3次,
有的发光模式则类似于莫尔斯电码中的“点-划”(先快速闪一次,再来一次长时间的)……
我再用自己的理解翻译一下,亮一会,不亮,再亮一会,再不亮,如果用动画曲线来描述的话,如下图。
&&从第一点开始,慢慢由黑变亮,持续几秒再慢慢变暗,再持续几秒。&&&
(关于动画曲线使用后面会有详细介绍)
现在我们了解闪的原因了,就是一会亮一会不亮。我们来头脑风暴一下看看你有多少手段来达到这个一会亮一会不亮的目的:
通过给亮度(color)key帧,一会有颜色一会没颜色&&
给粒子透明度key帧,一会变实一会变虚&&
给粒子半径key帧,让它一会变大一会变小到0&&
控制粒子寿命,让它一会死一会活&&
精灵贴图,用一套“闪”的贴图&&
粒子替代,用一套“闪的粒子”
限于我大脑,我只能想到这几个,相信你能有更多的办法。但我们最终肯定只需要一个就成了。如何选择呢,成了一个难题。你可以通通试一次,然后挑选最好的。
&在做动画时,有一个忌讳就是不能“闪”,这样会看着很不舒服,虽然我们看到真实的萤火虫是可能会突然熄灭的,但为好动画好看,还是不要突然灭的好,要留足够的“淡入淡出”时间。
我最终选了在粒子半径上想办法这条路。它有几个好处,首先就是它能可以平滑的过度,闪起来动画漂亮。粒子寿命的方法,肯定不行,它到到设定时间就立马死去。而color与透明度的方法,又不便于我后期修正。
所以后面所有针对闪的方法都是朝着着半径这个大方向的。(但你可以把后面得到曲线肤质到,别的属性上)
这些“闪”的本质就是动画曲线的变化。一会亮一会灭,亮灭的长短不同,频率不同,看起来就有很多种了。所以我们要做闪的效果,就是做出这个动画曲线。
3.1表达式制作曲线
我首先想到最简单的办法是用正弦曲线(sin)进行一些变换。
如你对正弦曲线不熟悉。强烈推荐你先看完这篇,不然后面内容很难明白( RealFlow Expression)也可以看Maya帮助,直接搜索Sin就可以了。
那到底要怎么变换呢,只要用到一个限制函数(clamp)就可以了。
绿色的是正常的正弦线:radiusPP = sin (time);
蓝色是变换后的也正是我们需要的:radiusPP = clamp(0,0.5,sin (time));
Tips3:如果要在Graph Editor(动画曲线窗口)看到你用表达式写的曲线,需要在 View 菜单下勾选上 Show Results
现在这个表达式是最基本的,需要好的效果,得要自己调整。我把自己测试的一些结果放在下面。给你做个参考。在此之前还要补充一点:
radiusPP是每粒子属性,你在这里写的表达式曲线,是在Graph Editor窗口看不到的。
最好把这个曲线在一个单一的属性上调整好,再放到这里来。
如果要每个粒子曲线不一样,只要引入 ParticleID就好了。(准确说来,不用ParticleID,每粒子半径也不同,但只是一个线性的从大到小变化)具体怎么应用,下面我会说到。
但不管怎么变都遵循两个基本原则
正弦的基本性质&(y=Asin(ωx+φ)+h )
每粒子的变化&(ParticleId)
particleShape2.radiusPP = clamp(0,0.3,sin((time+particleShape1.particleId%4)*2))*0.5;
这个表达式是我变换过后的。稍微解释一下。
Clamp让曲线成功变成基本的,闪
乘以2(*2)是为了增加频率,不可能让它亮200帧再灭200帧吧。(这里数字根据自己需要,最好参考萤火虫真实闪动频率,20帧20帧间隔比较好)
乘以0.5(*0.5)是为了让曲线在垂直方向缩放到一半
加上ParticleShpe1.particleId%4.:这是要重点说的。这个部分属性是了改变相位。让不同的粒子闪和灭的时间不一样。
ParticleID %4,是为了取余,选择不同的粒子。不然所有粒子的变化都是一样的。这个属性可与正弦解析式每个参数进行结合。
y=Asin(ωx+φ)+h 
你可以得到,不同频率,不同相位,不同大小的曲线
你可以一点一点试验。注意开启 show Results ,这样才能看到在动画曲线窗口看到,不同曲线。
Tips4:所有曲线的试验,我都是新建一个物体,加在如 TranlateY,这样的属性上。曲线直接应用到radiusPP上,是不好观测的。
3.2 Key帧制作曲线
如果你说,你不喜欢使用表达式,那么好,可以用key帧的办法。
怎么操作呢。
a.&新建立一个Locator 对像。
b.&给这个Locator新建立一个属性&命名为 firefly_button&&&(此新建在别的对像上也可以)
c.&给这个新建立的属性key帧,如图。
e.&选中这条曲线。分别开启前后循环。(Curves-pre Infinity-Cycle, Curves-Post Infinity-Cycle,)
要看到开启循环后的样子得打开:View-Infinity
f.&现在你很轻松就得到,需要表达式费很大力气才能得到的曲线了。如下图
g.现在就可以把这个曲线直接给&粒子的RadiusPP属性了。
&&在Runtime before里写
$a =Locator.firefly_//把上面key好的曲线,赋值给一个简单的变量,是为了下面表达式短一点。不推荐,因为少了意义
particleShape2.radiusPP = 0.08*$a;//你可以乘上一些值,控制大小。这样我最大时半径就是0.08
Tips5:在key帧时,最大值为1,最小值为0.&这样后面你什么属性想要什么值,完全不用考虑这个曲线,只把它当成一个萤火虫开关就可以了。
这样粒子就能随着时间而变大缩小,也就有了闪的效果。闪的频率长短完成可以由你动画曲线决定,修改也非常方便。
现在模拟一下,发现是所有粒子在一块变大变小。有没有办法,让粒子随机一点呢。也就是有的闪,有的不闪。
h.&先还是从表达式入手。
$a = particle2.firefly_
$r= int(rand(0,5));//得到一些随机数,取整
if(frame%3==$r &&&&particleShape2.particleId%5==$r )&//如果帧取余为3,粒子某ID取余为5并等于随机数$r
&{particleShape2.radiusPP = 0.08*$a;}&//半径就为闪动的
现在模拟一下,效果差不多就可以了。当然上面表达式还有一些缺陷,需要你自己来完善。
但如果为了只是为了粒子达到闪的目的,方法是有多种的,并且都比表达式要好吧。
3.3 多种方式达到闪
方法一:上面的表达式(如果你擅长这个,就用它吧)
方法二:渲染几帧后使用Sprites粒子。它甚至可以不需要用半径。再控制闪。
而是用SpriteTwistPP,根据不同粒子不同的旋转角度来赋予不同图片帧,效果也不错
方法三:使用多套粒子。就是说上面做到 G步骤后就停止。然后复制几套粒子,改一下动画曲线。然后把多套粒子放到一起,也会有闪的效果。
方法四:使用粒子替代。
做出几个小球(各自有不同放大缩小),动画曲线错开,但大体曲线跟上面曲线是一样的。
把这些小球给粒子
在创建表达式里,让粒子随机使用不同的小球就可以了。
这个方法小球最好三到四套。多了不好,少了也没感觉。最好再夹几套不会闪的小球(也就是不需要缩放动画的小球)
这个方法优点是,可以直接渲染给定的材质,不像使用粒子,必须要渲染粒子(渲染粒子有很大局限性的)
我最终就用这个粒子替代方法制作的,速度快。渲染就是一个自发光为黄色的Lambert(不需要灯光,有自发光就好了)
Tips6:如何复制粒子?&当然用特殊复制(Duplicate Special)&,在Options里勾选上Duplicate input Connections,就可以了。
如果粒子使用了场(Field)的话,要在Dynamic Relationships Editor窗口里,重新关联一下。
四、萤火虫合成
在合成时也是有很多可变因素的。前面只要有闪的粒子就可以了。颜色可以改,辉光可以改。
我在Nuke里,给了粒子两次Glow,这样,就能里外发光不一样了,如果粒子太大,还可以用 Dilate限制一下。
&&上图就是我在Nuke里使用的结点。Dilate限制一下粒子数量,Blur好看一点,两次Glow,得到内黄外绿的效果。&&&
当然最终,可能要根据不同景别,叠加多套。如图
&&这里有至少三套。最大的近景,最远的远景,颜色还有变化的。总之,在后期是有无限可能性的。&&&
五:萤火虫一点补充
1.萤火虫动态,闪的动态要像“呼吸”一样舒服。这就考验你动画功底了。亮起来暗下去,曲线要很平滑。
&&& 2.最上面方法,我们只用了三百帧。但项目变态的有3000帧时会怎么样。你可以自己模拟一下。
糟糕了吧,摄像机中的粒子越来越少了,原来,最开始做动态时,就进入了一个误区。粒子只有那么多只,就算有一点点运动,最终也会跑出很远的。
下面步骤是为做无限多的帧而修改的。
最开始时,Random Direction 不要打开,修改成0.这样粒子就不动了。
给粒子加一个 TurblenceField场。这样粒子就会随机动了,很漂亮
上面步骤,其实能保持粒子很长时间了。但还不够,粒子最终还是飞走了。
打开粒子生命。如用Random range.最大100,随机30.这些都可以根据效果再修改。或者你用Life PP,用表达式控制寿命。
Max Count 里数值,就是差不多要保留的数量。假如我要300只左右,这里改成300就OK了。
注意为了达到数量平衡,不能突然成批死去。Emitter里的Rate(Particles/Sec),需要你自己测试一下。通常要小一点。根据你自己情况了。
我最终用这方法做了整两分钟的动态。
这个效果,对于大部分人,可能是非常简单的。但我写这篇文章不是为了让你只会做这个效果,而是,做效果的一般思维方式,这是非常非常重要的,请一定要重视。
我这些方法可能不是最优的,需要热心的你来补充。
这不是合格的教程,因为到最后,也没能让你一步一步做出一个高水平的效果来。
谁知道呢?
我反正写出了我想写的。
本篇文章涉及的知识点比较多,全是探讨性的,我做的不是原创性的工作,是大家都能搜索到的,我只是把整理在一起。但谁说知识系统的整理就不是创造性的工作呢?
可能有人觉得我探索这些问题有什么用呢,是不是太闲了。
1:做这件事时,是一个探索的过程,让我学习到,物理数学等各方面知识。对我养成科学素养有很大帮助
2:对我制作CG特效有很大帮助,让我制作时不盲目。下面每一节都有一个相关小猜想。
3:对本质的探索,是我让我活下去的动力。不然我就不知道我为什么活着了
4:附加作用是,能让看博客的你,感觉世界上竟然有我这样的人。()
由此看出做这些看似无聊的事,其实很有意义的。至少比睡懒觉,发呆,跟人吵架生气有意义的多。
一切是由下面这张图引起的:
艺术性的描述:&柔和的光线里,她从空中落下,玲珑的身体落在平平的水面上,水面轻轻下陷,伴随着一圈圈向外而去轻微的波纹,她被弹回空中,如是者三;突然她融入水中,水面上出现了几圈大些的波纹,一个小一些但玲珑依旧的她又弹回空中,开始了另一个轮回……再来一段标准性的描述:水滴和水面相撞时首先会激起一圈环形的结构,把水向周围排开。环形结构里的水流回中间的时候,又会把一些水激起,形成一个水柱。然后,类似地,水柱里的水向下回流,同时水柱迅速变瘦,在水柱的顶端偏下的位置形成一个断点,就这样,一个小水滴形成了。在这整个过程中飞溅的浪花和断开的水柱会形成很多小水滴,其中有一部分竖直方向运动速度较小,就会形成前面提到的漂浮在水面上的小水滴。
这是我准备写的博文,思维导图。(如果有人对思维导图有兴趣,欢迎交流)&一共有五个问题:
一、水滴时下落为什么呈球形?二、水滴落入水是地,具体怎样融入水中的?三、水滴下落后,为何再弹起一滴?四、水滴碰撞,为什么产生水花?五、水面一圈圈波纹怎么回事?名词解释:
水:水(化学式:H2O)是由氢、氧两种元素组成的无机物,在常温常压下为无色无味的透明液体。水是地球上最常见的物质之一,是包括人类在内所有生命生存的重要资源,也是生物体最重要的组成部分。水在生命演化中起到了重要的作用。
&流体:流体就是在承受剪应力时将会发生连续变形的物体。气体和液体都是流体。流体没有一定形状,几乎可以任意改变形态,或者分裂。
&表面张力:表面张力是一种物理效应,它使得液体的表面总是试图获得最小的、光滑的面积,就好像它是一层弹性的薄膜一样。其原因是液体的表面总是试图达到能量最低的状态。
水滴:水滴,是小量的体,能以任何出现。
表面张力成因:
用分子力解释:液体的内聚力是形成表面张力的原因。在液体内部,每个分子都在每个方向都受到邻近分子的吸引力(也包括排斥力),因此,液体内部分子受到的分子力合力为零。然而,在液体与气体的分界面上的液体分子在各个方向受到的引力是不均衡的(见图解)造成表面层中的分子受到指向液体内部的吸引力,并且有一些分子被“拉”到液体内部。因此,液体会有缩小液面面积的趋势,在宏观上的表现即为表面张力现象。
用分子势能解释:液体内部分子周围有大量分子,因此,内部分子的分子势能较低。然而,表面层中的分子周围的分子明显小于液体内部分子的,所以,表面层的分子有较高的分子势能。为了达到低能量的稳定状态,表面层中的分子有向液体内部移动的趋势,从而导致表面层中的分子数量减少,宏观表现为液体表面积减小。
&&&一、水滴下落时为什么呈球形?
1.物质总自然趋于势能最低的状态
2.在空间几何体中,球形的表面势能最小。球形是同体积几何体中,表面积最小的&,球形是同表面积几何体中,体积最大的。球体是一种表面没有棱角的几何体。
上面这两个概念的证明,本文就不涉及了,把它当作最基本自然法则即可。有兴趣读者可以做一些证明。
失重:物体对支持物的(或对悬挂物的拉力)小于物体所受的情况称为失重现象。
人对支持物的压力等于零,便是所谓的“完全失重”。宇航员在空间站里便是“完全失重”的状态。
应当注意的是,人处于失重状态时,人的重力没有变化(同一地点),始终存在,只是人对支持物体的压力变化了而已,其实是人的一种错觉。
完全失重的定量分析:
当a=g时,支持力为N,由牛顿第二定律知:
mg-N=ma=mg 所以N=0
由牛顿第三定律可知,物体对支持物的压力为0
得出结论:向下加速向上减速:加速度方向向下,产生失重现象
故只要加速度方向向下就是失重,与速度方向无关。
解答:水滴实质是水,水是一种流体,流体都具有表面张力。物理体系倾向于能量小的状态,液体会倾向于最小的表面积。在同体积几何体中的表面积最小的是球体。水下落时,根据经典力学,此时加速度等于重力(忽略其它因素)。这时水滴只受表面张力,这一个力的影响。自然得出下落时的水滴就呈球形了。
CG特效猜想:平时做水滴,我总想做成,锥形的,哪知道这样效果,跟实际不那么相符合的。是不是表面张力,在模拟时,要着重考虑。甚至不加重力。
二、水滴下落入水中时,具体是如何慢慢融进水中的
解答:水滴可以在水面上跳动而不会立刻融入进去,是因为在水滴和水面之间有着薄薄的一层空气膜分隔着它们。John Bush教授发现,当水滴落入水面时,这个过程并不像大家经常认为的,是水滴直接融入到水里那么简单,而是更加复杂的过程。高速摄像机的镜头下我们可以看到,在有空气膜存在的情况下,水滴在水面上就像小朋友在蹦蹦床上一样,弹上弹下;当能量消耗完之后,水滴就会静止在水面上,空气层的厚度慢慢变薄,直到水滴和水面直接接触,这时水滴会突然融入水面并产生新的一个小水滴,小水滴会向上弹起,然后再重复之前的过程。
如下图所示
水滴融入水面的时候,水滴的下端先和水面接触并且接触面逐渐变大;随着这个过程的继续,水滴里面大部分的水会被挤到下面的水里,水滴也慢慢变“瘦”,而水滴和液面相连的地方会逐渐变小直到成为一个点,从而把一部分原来水滴的水分割出来;当这个点断开之后,这部分水形成的小水滴就会在表面张力的作用下向上弹起来。
上面John Bush教授所做的实验里,水滴落下的位置离水面很近,只有几个毫米的样子,这相当于把水滴轻轻地放在水面上一样。如果水滴从更高一些的地方落下来,那它会以比较大的速度和水面相撞,大家看到的现象会略有不同,即如下图显示的结果。
下图给出的是电脑模拟的结果
&计算机模拟的液滴和水面表面张力相等情况下小液滴的产生过程。红色表示的是原来水滴内的水。
就这样,一个水滴融入水面之后,它的一部分会形成一个新的小水滴,而这个新的小水滴在融入水面的时候会再形成一个更小的水滴。这样的过程会连续发生几次次,直到水滴小到可以直接融入水面。
&CG特效猜想:想做一个完整的水滴下落效果,现在心中非常清晰了。球形下落,与水面相撞,起花,波纹,弹起,再下落…….
三、为什么我们会看到,落下后水面会再弹起一滴
有了上面知识点铺垫现在回答这个问题就容易多了。
解答:水有,当一滴进水里时首先表面张力会托住水滴,水滴有,&这两个力互相竞争,因此会在水面形成一个凹面,当这滴水破坏了水的表面张力时,这个凹面会反弹,就会弹起另一滴水。
&这图显示了水滴落下后,另一滴弹起的瞬间
CG特效猜想:这是不是很像融合分离的效果,这个可以完全用绑定的模型来完成啊,干吗要在RealFlow,Naiad这样的流体软件里走黑路呢。
四、水滴下落碰撞,为何会产生水花
这个问题其实非常好,因为大部分人可能会误解水花真正的成因
解答:在这个水滴和平面碰撞的过程里,水的表面张力使得水尽量平滑地铺开,而空气对运动的阻碍和摩擦使得水散开的边缘不稳定。这两种因素的竞争就决定了是否会激起浪花。进一步的研究表明,水滴和平面接触之后,两者正中间的地方会形成一个小气泡,水花飞溅的过程与水和平面间夹着的这层空气有很大的关系
如下图所示:
&上图是在一个大气压下,有空气参与,产生水花
这是在两个大气压下,此时不能产生气泡,也就没有空气参与进去,当然就没有水花了
CG特效猜想:空气真是个好东西,在现在很多流体软件中,都没有考虑这一因素。它们基本是基于,Grid,particle两种方式做流体的模拟。然后用上扰乱noise。如果有一款软件,在现有基础上加上&“空气”这些因素呢。这在制作水花时,会产生什么样影响呢。可以自己写个辅助器试试。也可能现在软件要有这一功能,但被我忽视了。(要知道,做水花,是大部分流体任务之一。小到小小水滴溅起的,大到海浪翻涌的浪花)
五、水面为什么会产生一圈圈波纹?
这个问题没有找到有力的资料,希望对此有研究的人,友情提供一下。
&波的定义:波或波动是扰动或物理信息在空间上传播的一种物理现象。扰动的形式是任意的。波的传播速度总是有限的。除了电磁波和引力波能够在真空中传播外,大部分波如机械波只能在介质中传播。&
水面波的定义:它既不是纵波,也不是横波。它是因重力以及表面张力的作用,在水表面上传播的波。
非正式解答:
水面好象是有一层弹性薄膜似的,一处上下振动,就会带动附近邻近的水面跟上去振动,&邻居'又带动着&邻居',这样依次带动的结果,就产生了有规则的一圈紧挨一圈的水波,一直传向远方.
水波中的每一点水分子,在不断地作上下起伏的振动.假若能把水面一刀刨开看看它的纵断面的话,那么你会发现这是一条有规律的波动曲线,这也证明了水波的确也是一种泼.
&在其波动过程,水的质点运动较为复杂。如果水表面上某一质点由于外力作用而下降,形成水窝。在重力和表面张力的作用下,周围的质点开始向下降处流动,填充水窝的凹部,并在其四周形成圆形凹槽。在这凹槽外沿上的水的质点,继续向低处汇流,使圆槽直径增大。在圆槽里面的水的质点,将向上“浮出”而形成凸峰。&当这部分质点再次下降时,凸峰将以圆圈状向外传播开去,形成了水面波。在下降时水的质点除了向下运动外,还向波源方向运动;而在上升时它们除向上运动外,还向波源的反方向运动(即背向波源方向)。随着水的质点在其平衡位置附近做周期性的运动,水面波逐渐向外传播。
CG特效猜想:波。经常需要制作涟漪的效果,根据波动方程,与surface怎样方便结合呢?纵的?横的?。大的波就是滔天骇浪啊,如果能解决,是不是,就不需要,绑定来实现呢。还是现在已经有了,我不知道?听说Softimage已经有这种做大波浪的解决方案了。Sad Princess里的就是这么做出来的。啊啊,到底有多少我不知道的呢。一切都要慢慢猜想,探索。
&关于水滴探索就到这里.这是我的一次尝试,以后对知识的总结还要用这样的方式,特别符合我大脑动作的方式.各个方向,但底层又是紧密相关的.
&-----------------------------------------------------------------------------------------------------------------------------------
参考资料:
1.&水面上的舞者——水花水花为什么
2.&&[流体力学趣事]表面张力是什么?
3.&水面上舞动的精灵(1)
4.&&表面张力是什么
5.& Fluids
6.&&&漂浮在水面上的水滴
7.&&中文维基——水滴
8.&&拳头大的水滴见过没有
9.&中文维基——表面张力
10.&&百度百科——水面波
&-----------------------------------------------------------------------------------------------------------------------------------
维基百科是世界上最好的学习网站,爱科学的同学一定要多逛逛
科学松鼠会,这是没的说的科普网站,强烈推荐,越早看到越好。还很有趣。
思维导图工具——Xmind
&&百科介绍
高清水滴图片下载网址
昵图网,也用,但要积分
搜索工具&:&(最优先使用的搜索工具)
&(如果不是国内对google的限制是不会用它的)
&(搜索图片真的不错)
笔记本:有道云笔记&非常值得推荐的软件
词典:有道词典&(词典功能非常方便,大部分词能查到,论文词汇很不错)
灵格斯词典(离线时用的最多,因为它专业词典很全)
翻译:(同样是google翻译,)
&&(bing翻译,跟google互补)
制作Gif,大的图用,PhotoshopCS5 (32bit)
普通的Gif图片用 QQ影音
截图工具:FastStone Capture (真是最好的截图软件)
播放器:QuickTime(最好的播放器,设计人员必备)
RSS阅读:&&&如果你不想在网上浪费时间,这种阅读方式一定要采纳
邮箱:国内网易的。工作邮箱用国际的比较好,我用的Gmail 另个Hotmial也非常不错。像QQ这样的即时通讯工具用的越少越好,它就是一个时间黑洞。邮箱才是真正交流的途径。
工作方法:番茄工作法(这本书一定要看),战隼的学习探索(这是一个博客,学习首选,里面有方方面面的学习方法,特别是阅读
上面所有只是我个人的习惯,一切靠自己去尝试,学习,喜欢,抛弃,稳定。
-------------------------------------本版块截止更新()-------------------------------------------------------------
(十四)绘制利萨茹图形
(十三)雨点打湿贴图
&(十二)Map贴图和Magnitude通道(1)&&
(十一)漂亮水花
(十)红红火焰
(九)梦幻水滴
&(八)海洋波浪
&(七)露珠项链
&(六)属性贴图
&(五)放松流体&&
(四)层叠糖浆
(三)模拟蜂蜜&
(二)简单的烟&
(一)肥皂泡泡&&
----------------------------------简单说明---------------------------------------------
写给谁:首先是我自己需要,然后觉得跟我差不多水平的人也能用到,故有这些。
其实呢,这些教程很有意思,他跟国内大部分都不一样。他主要讲的是基础理论,方法,思想。这些东西无论对什么级别水平的读者都是适用的。这里基础我指的是软件基础,比如“命令”那些。
这些所有教程(不贴切的用词)原作者大部分时候称为&workshop (研讨讲习意思)注重的是思想的交流,一起学习。不用tutorial (教程),这个单词偏重的是教,他讲,你学。因为语言的原因,我找不到贴切的词,才称这些为教程的,大家一定注意。相信你在读下面时,会注意到原作者这种思想的。
说在前面:因为是翻译的教程,所有源内容都是出自这个网站&页面。(国内IP,要翻墙)
我下面所做的工作就是把这里英文的内容,用中文表达出来,给需要的人看。
当然肯定不是他写什么,我就翻译什么,融入了我自己对RF的理解,尽可能把原文不容易理解的部分,用我认为可行的方式表达出来。甚至加了一些我在别的地方看到的资料内容。所以有人会发现,并不是完全跟英文写的一样。有的篇幅还远远多于原文。
如前面图,是对这个网站英文教程区的一个简单说明
1.菜单区:网站的菜单,我翻译的就是教程部分(橘红色标明)里内容。
2.导航区:点击跳转到相应页面。
3.内容简介区:这部分每一个教程都有,我也会每一篇都翻译。但大家可能注意到,有的教程简介跟正文前两段是重复的。图片最下面一段文字,每一个教程简介下面都有,意思一样(鼓励读者多交流展示自己作品)。所以只有教程(一)有,后面我不会放在教程上面。
4.下载区:本人PDF英文原版教程,就是在这下载的,你也可以在这直接下载看。注意下好后是个压缩包,有PDF文件,有的有脚本原文件.RTS。文件不大,都在2M左右。
5.视频区:这里有教程效果视频。大家可以直接点击播放,还可以在播放时直接另存为。要注意这是.mov格式&.你要安装quicktime插件才行(浏览器推荐用FireFox)
这篇文章:1.很好回答了特效人员未来发展定位问题。2.技术与艺术讨论是多么无聊问题。3.我的水平与见识是多么浅薄问题
上周animal logic校友来讲了一下动画片&守卫者传奇的制作技术。小结一下。使对电影感兴趣的读者对国外目前的动画和影视制作水平有一个大致的了解。
Animal Logic是一家澳大利亚的VFX公司。在业内可能是无人不知的公司。制作团队大概有500人。普通观众可能不了解这家公司,但应该都听说过它的作品。
国内观众可能熟悉的作品张艺谋的《英雄》和《十面埋伏》。
动画片《快乐的大脚》。
Zack的《斯巴达三百勇士》之后,animal logic就快成了Zack的御用团队了。
《守卫者传奇》和《美少女特工队》都是交给 animal logic 制作的。
守卫者传奇的投资规模是8千万美元。制作周期是3年,从另一个角度说。它的技术骨架是07至08年水平的,或者叫前avatar水平。制作人员一共是300人左右,其中的技术研发人员大概有40人。
这40人中有10个左右是属于系统支持,主要是数据库和服务器。
剩下30人才是真正的图形方面。理解制作技术也就是理解这30个人的工作。
&一:什么叫研发?
在一个VFX制作团队中,按技术水平大致分成4个层次。
这类人不了解技术,但是艺术功底非常好。
水平最高的做概念设计。
VFX公司中的多数艺术家是达不到这个水平的,大部分人主要工作是合成调色,建模,材质,关键帧动画。
有一定经验后作质量管理。
2.技术艺术家
这类人是通常我们国内所说的“软件高手”。技术艺术家的主要工作不是做作品,而是设计工作流。
以建模为例,技术艺术家会作出一个样板模型,然后制作一份文档,说明制作的步骤和方法。
美工照着一步一步的做,不要求技术有创新,弄好看了就行。
3.&技术指导
技术指导的主要工作就是沟通艺术家跟研发团队。
技术指导要求能将艺术上的问题转化成技术语言,也可以将技术功能翻译成艺术功能讲给美工听。
许多技术指导都是研发出身,有一定的开发能力。流水线和美工用到的小工具UI之类的东西,通常也不会动用研发团队。
4.研发团队
开发引擎级别的工具。如流体仿真,渲染器。
通常是没有任何艺术方面的背景。只关心数据跟算法。
今天许多商业软件如Photoshop,Marry虽初都是由VFX公司的研发团队开发。
顶级的研发人员大概在什么水平呢?
如果学过编程的可能会用过visual studio或是知道VC编译器,肯定知道有本书叫&C++ primer&。
那本书的作者从微软走后就在做disney做研发领导。当然多数的研发人员不在这个水平上。
但基本都有Siggraph的论文,可以自己写个Renderman,设计一个编程语言,或是写个流体仿真器应该不是问题的。
那么这30几个人究意能写多少程序呢?
这三十几个人实际上分布在流水线各个岗位上,在一个位置上可能只有3到4个人。
像群体动画这种东西,通常一个人就搞定了。一个项目下来,写六七十个是不奇怪。
更大一点的Studio中,如Dreamworks中,变形器就可能有个六七十种。老牌的studio中大大小小工具有个六七百。
&也许有的读者感兴趣这么多软件为什么不卖。
我的观点是保护技术可能还不是主要原因,主要原因是没市场。
这些工具都是一个星期内黑出来的,大多数的顾客买了也不会用,会用的都能自己写。
二:&工具流水线
2007年Zack 交项目之后,animal logic公司作的第一件事就是公司的操作系统换linux.对于像《守卫者传奇》这种规模的动画电影,自动化程度要求非常高。软件研发工作是巨大。原因在于linux上有一堆的脚本工具,高水平的开发人员的开发效率非常高。第二个原因是animal logic公司内部工具很杂。
layout跟previz用的是maya,
animator用的是XSI。
渲染是Renderman。
它还用自己的一套物理羽毛仿真工具。
集群工具及镜头工具。
3D合成工具。
&所以整个项目并不是在一个软件平台如maya之下完成的,而是以数据库为中心。所有的工具都把数据输出到数据库,然后由一大堆的脚本来控制数据的流动。
&基本上layout跟previs程跟建模和动画流程并行。
两者的数据都交给SFXl团队。
SFX加上集群动画跟物理仿真之后又放到数据库中。
由脚本从数据库中抽取数据然后推给renderman渲染。渲染的结果再放到合成流水线上。
当然这只是一个基本的结构,中间有许多的数据是要回流的。
&研发团队开发的工具有许多,有四个比较有效。
1.&镜头Remix
导演Zack非常喜欢快镜头跟慢镜头。对动画师来说有一个难题。如果要是按镜头速度来设计关键帧。
通常在物理上不真实。如果按常速设计关键帧,问题是在快进快慢的情况下键位不合理。
animal logic有一个自己的镜头mix系统。所有的动画数据者可以在自然时间跟镜头时间中自然转换。
实时动画,镜头回放,渲染时脚本会自动抽取动画数据。
&技术原理很简单,但是集成的很彻底。《美少女特工队》也用了。
对于主角身上的羽毛。不是建模时制作的,而是在渲染时生成的。是作为renderman插件实现的。
究竟有多少呢。可以这样说,鸟身上有多少根,就生成了多少根。
所有细羽都生成了。有多少多边形呢?
VFX里的标准是多边形的面积比屏幕上像素的面积还小。
&动画师只调节翅膀的骨架动画。羽毛的动画不是手工作的,全部是物理仿真实现的。全部羽毛的碰撞和动画都是计算机算的。
Cuda和并行优化被使用了。
&研发人员只是有能力,真正牛逼的是计算机!
最为人熟知的可能是《指环王》的Weta制作公司的massive,是一个模糊控制的行为引擎。
校友认为设计的最好的软件可能是MPC工作室私有的alice引擎。
&实际上几乎所有的公司都有自己的集群工具。而且更有意思的是几乎每一个项目都重写一次。
原因不在于集群技术有多复杂,而次每一部电影中集群动画的要求都不一样。不同鸟飞的方法不一样,镜头也不一样。
所以与其调来调去的把鸟的参数改成蝙蝠,不如就重写一个。
avatar之后,合成软件几乎被重写了。
Nuke的工程师介绍新版本的Nuke都不知道是不是合成软件了。
新版本的Nuke集成了大量的基于图像的建模功能。
给两张照片,Nuke不是对两张照片进行合成。
而是通过计算机视觉匹配两张照片中的像素的对应关系,通过位置偏差计算出每一个像素离焦平面的深度。
中间结果并不是图像,而是三维的点云。
再将点云上进行再分拆到两个视角。
&守卫者传奇制作时3D的合成软件还没大量上市。animal logic自己开发的深度合成系统。因为动画片是全CG的,所以技术上容易一些。所有的动画实际上还都是单镜头渲染,只是加了深度信息。合成器跟据深度信息自动分解两个视角的图像。
为了形成焦点移动的效果,所有的合成工具上加了调节深度的功能。
&技术小结:
在今天的计算机动画制作中,技术的重要性是不言而喻的。
在传统的观点是计算机只是艺术家的工具,这种观点己经过时了。
实际上只有极少的人参与到立项跟说服投资人时比艺术水准。
制作过程中拼的就是技术。
准确的,今天VFX中,技术决定的质量跟效果,人的工作只是一些微调,使它看上去更好看一些。
&二个趋势是传统的合成己经开始淡出VFX,或者说合成己经越来越重要的。
传统的合成就是photoshoph,就是把两张照片弄一起。
今天的合成实际上更多的是一2.5D空间的物理运算。
合成己经不是图像叠加和调色,还有深度,法线,光照度,色彩不再重要,都是算出来的。
实际上很多layout和光照的运算己经推迟到合成中完成了。
以前的合成的输入数据是图像,现在的数据是一堆物理参数。
要是没有算法,就什么都看不见。
&行业评论:
animal logic是一家非常优秀的公司,但在业界还不是顶级。一些公司的技术和规模是几倍于animal logic.
比如卡神的的avatar团队绝对是神级的。在VFX圈中,卡神一个电话,要你做什么你就要做什么,大牌的软件公司,卡神只当你是个研发分部。avatar制作使用的即使是商业软件也都是未上市的版本。都是应卡神要求赶工出来的定制版本,不稳定也没问题,把原代码都交了,卡神手下自然有人调稳定作优化重编译。
&对VFX工作室来说,其实做电影是不赚钱的。我们并不知道投资中有多少投到了VFX的制作,但通常也就是一半左右。
100分钟只有4千万。VFX工作室主要创收是广告。高端的广告通常30秒就有5百万。
VFX公司争抢大片的主要目的是积累技术。限制VFX公司做大的最主要的不是人员的技术水平,是时间。在电影3年的制作周期中,可以有一年到半年的技术开发时间。广告的六个月制作周期内是无法开发引擎级别工具的。
VFX公司主要靠做大片的机会来做技术升级然后再去广告商那里抢钱。
如果一年之内接不到大片,VFX公司的高水平研发人员就跑光了。animal logic是能够单挑一部大片,这种级别的工作室世界上是屈指可数的。比它牛的如ILM, DD和WETA都是靠玩三部曲打家底的。英国的VFX工业最近几年技术和规模己经翻了几倍,主要原因在于哈里波特有八部。参与制作的工作室在10年中技术升级了许多次。
观众们看美国大片就以为是美国人拍的。实际上今天的制作己经全球化了。
许多大片是美国人投资,美国人发行但未必是美国人制作的。
我们看的一些好莱坞大片实际上可能是法国人,英国人,德国人,印度人,新西兰拍的。
只是由美国的公司投资,制作完成后再由美国的公司全球发行罢了。
像一些电影,英国故事,英国编剧,英国导演,英国演员,英国拍摄,英国制作。
美国人只管投资跟发行,实际上就是花美国人的钱拍英国电影。
许多国家愿意参与到好莱坞体系中,用好莱坞的投资发展自己的电影制作工业。
让好莱坞做电影中高风险高回报的部分,自己老老实实的做电影,做手艺。
&中国的电影跟动画产业的主要问题还是自己不平不足。
不是好莱坞打压你,是人家看不上。
作为投资商跟发行人的好莱坞真正的对手是发行商跟院线。
对于导演和内容创作团队。
水平高的导演实际上是可以花美国人的钱拍片子的。
如才华和能力如彼德杰克逊,你就可以向美国人要2亿。制作水平不成,剧本还烂,只有外行爆发户投资,专业行家的美国人当然不会投资了。
中国的电影人觉得自己只是落后于好莱坞,实际上,我们落后于世界上的许多国家。
除了美国,还有英国,加拿大,新西兰,印度,法国,德国,意大利,澳大利亚,日本,新加坡,西班牙。
虽然我们可能看不到独立投资跟发行的片子,但是它们都己经在好莱坞领导的世界电影工业体系之中。
作为体系之外的我们,在很多方面的差距是结构式的。
------------------------------------
补充一点:
普通读者可能会限入电影是艺术还是技术的争论,实际上这是一空想出来的问题。
一部电影的艺术水平和风格实际上是由导演和主创团队决定的。
具体的说,电影的视觉风格是由摄影指导决定的。
&对于VFX制作团队而言,不管你的艺术水平多有品位,是不允许修改导演的艺术风格的。
好的制作团队就是导演要什么你就作什么,不管你喜欢这种风格还是不喜欢。
对制作团队的艺术水平要求是能理解导演的艺术语言。
哪天一导演来了说,我要卡拉瓦乔的风格。
所有的VFX制作人员必须要理解导演的色彩和光影要什么风格的。
另一个导演开说我要点印象派感觉的。
VFX团队就要作印象派感觉的。
一个导演说我要山寨感觉,
VFX制作水准再牛你就要作山寨感觉的。
&电影VFX制作的目的是充分展示导演的才华。
让牛B的导演牛B,让2B的导演2B。
再强的VFX工作室,也没有让2B导演牛B的技术。
&在好莱坞的工业体系中,艺术跟技术的分工和责任是想当明确的。
转载自:/new/cg_mike
&图1:陨石群组本文总结了在项目中遇到的:宇宙陨石群组与简单的人群集动画镜头。
本人花了近两周时间(朝思暮想,做梦也梦到那种状态)。任务是完成了,但有必要对做粒子群组时碰到的问题以及解决的方法做一个小小的总结。分享给有可能遇到相同问题的朋友。
如果你曾经提出或想过这些问题:怎样用Maya做群组动画,怎样做粒子替代。怎样用表达式控制粒子。粒子goal如何使用?群组动画怎么做?等等一些相关问题,本文都可能对你有所帮助。耐心的看下去吧。为了使行文清晰,就直接用两个案例来阐述我碰到的问题。
&&&&&本文的结构图案例一:陨石群组
如果你有一天接到一个做陨石群组的镜头:要求是,摄像机会在陨石群穿梭。陨石有各种大小,还会随机的有一些会转动。通常会得到这样两个想法:
1.直接制作模型,摆出需要的样子。然后再一个个做动画
2.先用粒子模拟位置,再用粒子替代来完成
简单说来粒子替代的方法就是为了对制作模型方法的简化。而这正是特效师需要做的工作。包括下面的人的群组动画。也是这个目的。
大概思路很清晰了,这也是通常做粒子替代的一般步骤
准备素材(如模型)
分布好粒子位置
把粒子用Instance功能换成陨石
调整Instance的&缩放(scale),旋转(rotation),替换的顺序(object index)等
根据要求细调,如杀死穿插镜头的粒子&,调整某些替代物大小
渲染测试,看是否正常
做好缓存。整理文件。提交给下一环节部门渲染
我在项目中有两个额外的小问题:
渲染要使用mentalRay代理。
动画部门已经用简模确定好了最终需要的陨石分布
1.1 MentalRay代理渲染
现在就来解决第一个问题。得先知道
什么是MentalRay代理?
摘录:Maya中文帮助中描述的这个功能。(在帮助中搜索“mentalRay 代理”关键字)
使用渲染代理来管理含复杂几何体的大型场景。如果场景中包含复杂的几何体,可以先将对象导出为 mental ray 集合文件,然后在场景中使用引用该文件的占位符对象对其进行替换。渲染时,导出的对象将加载到内存中,然后与场景的其余部分一起渲染。由于实际上没有将几何体传递到 mental ray,因而总体转换是瞬时的。因此显著减少了转换的时间和内存使用量,使 Maya mental ray 可以渲染大型场景。
特效在一个重要任务就是提高工作效率.群集之所有麻烦,就是因为“多”引发的各种问题:比如场景太大,占内存太多,渲染时间变慢。
而使用MentalRay代理就可以显著减少内存占用,能提高渲染速度。这次做陨石群组时,就是用的MentalRay代理。
如果你之前没听过代理渲染,也没事,简要来说,就是:先把高模导出成代理文件(mi),实际制作时,只要使用简模(就是上面说的“占位符”)就可以了,最终渲染结果还是你需要的高模效果。
使用代理简要步骤:
1.把最终需要渲染的高模,导出成文件mi(导出设置选择MentalRay)
2.选中简模(可以就是一个默认Cube),在其shape节点下MentalRay选项卡下有个Proxy,导入之前的mi文件。
3.使用mentalRay渲染就能得到高模的效果
a.这个简模要比高模稍微大一点。(不然会出错,可以直接用脚本生成的Bounding Box)
b.在渲染之前的任何操作(如移动,缩放)后,一定要对简模执行Freeze操作。不然渲染会出错
&&1.2 如何根据模型位置生成粒子?
问题这样产生的。动画部门使用简模放置好了导演需要的位置。我必须根据这些简模来确定最终粒子的位置。粒子除了要跟简模位置一样,还要具有简模的动画。&
一时让我无从下手,到底怎样让粒子动态跟现有模型一样呢?是让粒子吸附到模型上,还是让粒子位置直接根据简模位置来运动。让粒子吸附到模型上,类似于约束的思路,但到底怎么把每一个粒子精确的给不同的物体呢。
最终定下解决方案是:提取现在每个物体的位置。再赋予给粒子。
这个方向是很正确的,但到底怎样提取位置再赋予给粒子呢。这里有二种实现方式。
1.2.1最方便的方式一:
你要明白一点表达式知识,很容易实现。只要把物体的位置(translate)信息给每粒子的position就可以了。比如有一个物体Cube
它的空间位置就是
&&cube.translateX, cube.translateY, cube.translateZ&&
只要定义一个变量,然后直接把变量赋予给粒子的position属性就可以。
完整的可以这样:
//Rutime before dynamics
Vector $a_vel&=&&&cube.translateX, cube.translateY, cube.translateZ&&;
if (particleShape1.particleId&== 0){
&&&&&&&particleShape1.position =&$a_
请注意,表达式是写在Rutime before dynamics中的。这样ID为0的粒子位置和动态就完全跟Cube物体完全一样了。
如果有多个物体时,原理是一样的。建立一个数组,把物体坐标放进去。再用一个循环,把这些值分别赋予给不同ID粒子。
方式一是行的通的,效率一也能接受
下给出的脚本只是参考,不能直接用,有一个数据类型错误,等我找出来再修改。或者你看到了告诉我下。
string $obj[]&=&{&sphere1&,&sphere2&,&sphere3&,&sphere4&,&sphere5&};
int&$index[]&=&{1,2,3,4,5};
$aa&= 4.221;
for($objName in $obj&)
string&$nameX&=&$objName&+&&.translateX&;
string&$nameY&=&$objName&+&&.translateY&;
string&$nameZ&=&$objName&+&&.translateZ&;
$X=&`getAttr&($nameX)`;
$Y=&`getAttr&($nameY)`;
$Z=&`getAttr&($nameZ)`;
vector&$test&=&&&3.0, 7.7, 9.1&&;
$test =&&&$test.x&,&$aa,&$test.z&&;
print&($test&+&&\n&);
if&(id&==&$index)
par.position&=&$objPP[$index];
vector&$test&=&&&3.0, 7.7, 9.1&&;
$test =&&&$test.x, 5.5,&$test.z&&;
print ($test);
--------------会报Matrix element must be a scalar numeric type------------------
我写上面脚本目的是为了实现多个物体位置分别赋予给不同id粒子。但因为时间比较紧,自己编程基础又差,就没有花时间完善这个脚本。希望有好方法的你一定发邮件告诉我。
1.2.2繁琐的方式二:
你一点不懂表达式,但熟悉多个软件的话,用这个方式。我最终就是这么做的
如果你熟悉ThinkParticle的话,肯定知道它有一个根据物体创建粒子的功能。但一个问题是,项目流程是Maya怎么办,那就得想个办法把TP粒子转到Maya中。下面是我做的工作笔记。
Maya模型转换成粒子:
1.把maya 中陨石模型转换成 FBX文件
2.FBX导入到Max中
3.建立TP,把模型转变成粒子
(particle system)
(Generator Obj.toParticle)
(obj.to Particle全选, Object To Particle)
(Instance Shape勾选)
4.用Krakatoa把TP粒子导出成KK粒子
(save particle 选中,ThingingParticles)
(Path路径)
4.5 Krakatoa粒子导入&(建立kk,回归坐标原点)
5.用Standard ParticleFlow粒子导入kk粒子
(6键,emptyflow,krakatoa prt,拾取粒子&kkPrtUpdate,拾取粒子)
(viewPort ,必须100,影响输出粒子数)
6.使用RF导出成bin文件
(add,PF Sour 001-&Event 001)
7.maya直接拾取Rf粒子
看着的确挺繁琐的,但其实无论导入还是导出,速度都非常快,效率实际上比表达式还稍微高一点。(相对不懂编程的人来说)
再说一次流程:
Maya模型---&max---&tp生成粒子---&导出成kk粒子---&导入进来---&生成ST粒子---&导出成RF粒子---&再导回maya,生成需要粒子。
简单来说,就是ThinkParticle数据变成Maya可以识别数据。
这些操作,其实都是浅层次的。说到底这是一次数据流的传递,用到着这么复杂吗?
这是一个好问题。但因为本人知识还不够深,只能有所感知,不能表达更多,强烈推荐下面两篇文章。相信会让你收获更多。
重点看下这篇文章关于houdini部分
下面这篇讲到数据流的传递是多么方便
1.2.3低效率的方式三:
一个低效率的脚本,粒子数几十个时,就无法顺畅运行
可以根据选择的物体,把位置给粒子,粒子最大数跟你选择的物体有关系。
模型转换粒子脚本&(这是完整可用的脚本,但效率太低还是不能实际应用,拓展下写脚本思路)
int $num&= size(`ls -sl`);
if($num&&= 0)
&&&&&&&error(&please selected some object!&);
particleShape1.maxCount =&$
int&$i&= 0;
for(;&$i & particleShape1.&$i++){
&&&&&&&string $objName&=&&yunshi_&&+&$i;
&&&&&&&float $bbox[]&=&`exactWorldBoundingBox&$objName`;
&&&&&&&vector $one&=&&&$bbox[0],&$bbox[1],&$bbox[2]&&;
&&&&&&&vector $two&=&&&$bbox[3],&$bbox[4],&$bbox[5]&&;
&&&&&&&string $objAttr&=&$objName&+&&.translate&;
&&&&&&&float $tran[]&=&`getAttr&$objAttr`;
&&&&&&&vector $objPos&=&$one&-&$
&&&&&&&print $objP
&&&&&&&float $pos[]&=&{$objPos.x,&$objPos.y,&$objPos.z};
&&&&&&&string $shape&=&&particleShape1&;
&&&&&&&particle -e&-or&$i&-at position -vv&$tran[0]&$tran[1]&$tran[2]&$}
要使用它,得先创建一套粒子,在MaxCount里,然后选中替代物,在脚本编辑器中运行
这个脚本效率非常慢,在有600个物体时就完全跑不动
上面脚本最大问题就是效率太低了,只有几十个物体时机器完全就跑不动。因为这里是用的Attr调用属性。
下面这段话,说明了效率低的原因
图2:引自《Maya 动画师 MEL脚本编程全攻略》
这本书是Mel入门理论和实践经典,值得推荐。(这本书是有下册的,有想学习并且想翻译的请联系我)
把方式三放在这,就是为了说明一下效率对做项目来说是很重要的。在最开始测试时,一定要把这些因素考虑进去,不然实际制作,时间总是不够用。
1.3如何让maya粒子沿着给定的路径运动
方法1:使用Effects菜单下的Create Curve Flow功能
方法2:使用 Volume Curve场来控制
方法3:直接根据需要,利用数学公式写出对应表达式
方法4:动画下的 Attach to Motion Path
方法1:使用Effects菜单下的Create Curve Flow功能
&最简单的方法,但可控性比较差,特别是对粒子的速度,无法方便控制。速度主要是通过不同Locator间隔距离。(实际上,这个方法也是表达式,只是被Maya打包成一个菜单)
使用方法:
创建一条你需要的curve曲线,直接使用Create Curve Flow命令。
粒子范围,是根据 Folow_scalableCircles,控制圈来控制的。
如果要批量设置属性,这里有一个小脚本
批量给选中物体设置属性
string $selectedList[]&=&`ls&-sl`;&&&//批量选中需要更改属性的对像
string $currentO
for ($currentObject in $selectedList)
$name =&$currentObject+&.scaleX&;&//属性根据需要改,这里是X轴缩放。
setAttr $name 5000;}&
方法2:使用 Volume Curve场来控制
创建一条curve线
选中后,使用volume Curve命令
比较重要属性是:Section Radius 这是设定粒子所在的范围,Trap Inside也要设置一下,让粒子只在设定范围中运动。
Turbulence要谨慎设置,特别敏感,跟本身这个场强度大小也有关系。
这个场,来控制粒子沿着给定曲线运动效果比较好,可以控性强。
要注意这个用了一这个场后,粒子会变得越来越快。避免这种效果,我使用的方式是加一个Drag场。Magnitude = time*2;&强度要根据时间变得越来越大,到底什么参数需要根据不同需要了。之前看过一处教材是对粒子的Conserve属性进行key帧,但这个值实再太敏感了,就算变化0.1,粒子也会立马慢下来。&
&&&图3:使用这个场模拟的,小行星带的截图。&&
方法3:直接根据需要,利用数学公式写出对应表达式
这个很考验数学功底,理论上,可以写出任意需要的曲线,根据自己掌握的知识来选择吧。特别是规则曲线路径,用表达式会非常方便。有非常多的曲线已经有前人总结好了数学公式,你是可以直接来应用的。我举个例子:
螺旋线的方程:
(笛卡尔坐标系方程)
x = 4 * cos ( t *(5*360))&
y&= 4 * sin ( t *(5*360))&
(使用笛卡尔坐标系方程主要原因是,它的方程可以直接对应三维坐标中x,y,z三个轴向)
下面表达式就是我根据上面的公式直接应用的,你可以把复制下来,自己建立一个发射器试验一下。
//Runtime before dynamics
$x = 10*cos(time*(5*360));
$y = 10*sin(time*(5*360));
particleShape1.velocity =&&&$x,$y,$z&&/2;
运行上面表达式会看到粒子运动是一个螺旋形,参数可以自己修改。
可参考公式有很多,可以搜索关键字(proe曲线方程式),你可以下载一个文档。里面有很多漂亮的曲线。当然很对公式想要看到效果,不是直接对粒子速度进行操作就有的还得让保留下来。曲线还可以组合,可以得到很多有趣的效果。
方法4:动画下的 Attach to Motion Path (在一些时候也特别有用)
请注意这种方法只能把发射器绑定到曲线上有时还是很有用的,比如经典的一挥手全是小星星的魔法效果。
&&&图4:路径动画制作的效果
1.4陨石动态表达式:
1.objectIndex随机,控制替换成不同模型
2.自定义一个Vector属性,控制随机的大小叫scalePP
3.自定义一个Vector,控制随机旋转叫roPP
4.自增,在Runtime中,旋转自增
5.根据需要某一ID粒子消失
//Creation
seed(particleShape1.particleId);
particleShape1.Opp4 = int(rand(5.99));//随机取得小于6的整数
particleShape1.scalePP4 = rand(1.5);//随机大小
particleShape1.roPP4 =&&&rand(360),rand(360),rand(360)&&;//随机自转方向
//Runtime before dynamics
seed(particleShape1.particleId);
particleShape1.roPP4 +=rand(10)*1;//自动旋转
if (particleShape1.velocity&&1000)//判断速度大于1000,粒子生命为一个定值
particleShape1.lifespanPP = rand(50);
&&&&&&&particleShape1.lifespanPP = time*2;//粒子寿命根据时间增长,实际就是粒子永远不死
上面表达式,可以达到,陨石有自身随机旋转,和不同缩放,初始旋转角度。过快的速度还会被杀死。
宇宙陨石群当然还包括别的效果,像撞击破碎,迎面飞来的流星带烟拖尾等等
破碎效果我用RayFire插件来制作。还有一些有拖尾的,就是直接粒子发射一下了。更精一点就直接用FumeFx来模拟了。
推荐一部影片:《旅行到宇宙边缘》英文名:Journey.to.the.Edge.of.the.Universe.
可以搜索到蓝光高清的,非常值得一看,各种绚丽效果。还能学到宇宙知识。
&&&图5:《旅行到宇宙边缘》影片截图&
陨石群组总结:
1.分布好粒子动态
2.把粒子替换成石头(用多套石头)
3.用表达式控制一下Instancer效果
4.完成渲染。
(建议到相册中看原图,这图是对本文章结构一个整理)
这篇文章有三个目的:
1.分享最近关于做特效的一些思路总结;
2.分享一下水中泡泡有趣的事
3.分享一个巧妙的用RealFlow做Liquid Bubble的方法&(为了与Soap Bubble区分开)
一、制作效果时一点总结
做效果有两个途径:一个从上往下,一个从下往上&&这是两种思维方法。一直伴随着我做任何效果全过程。
从上往下:就是从外观入手,极尽模仿。最直观表现就是一笔一笔“画”出来。
从下往上:从产生原理入手。模拟真实的系统。自然得出效果
不能一定说哪个途径好或坏。只能说它们各有特点。
下面以做北极光为例来简述一下。
&从外观入手特点:极光流光溢彩,极富变化。这是我们一眼就看到的,可以用模型材质来模拟。做一个变化的模型然后调整材质,key上各种动画。模拟出效果。
从产生原理入手:极光是由于来自太阳高能粒子,撞击到大气层分子或原子能量激发,产生光芒形成极光。根据极光产生原理,我们可以模拟一个大气层,然后用高速粒子撞击这个层,根据撞击生成拖尾光芒。摄像机在这个层里,也能看到类似极光的东西。
从外观入手:1.可以称为“艺术方法”,极力模仿,“画”下来
&&&&&&&&&&&&&&&&&&&&& 2.每个镜头都重新来一次,不利于“复盘&&&&&&&&&&&&
从原理入手:1.需要投入大量时间进行实际研究。然后模拟出一个系统出来
&&&&&&&&&&& 2.得出的效果比较逼真,对于批量的效果效率很高,容易“复盘”。
再直观的例子就是。在Fumefx这样的插件没出来时,做火焰的效果用二维手法“画”出火来。有了插件后,制作者就相当于“复盘”
小结一下:根据情况来定,我喜欢先探索原理再制作,CG的模拟的东西很多就是学习自然。“画”的方式通常单镜头特别快速。也可以结合使用。所以技术细节都是建立在这两种思维模式之下的。以后会有文章详细探讨。
二、流体泡泡一些趣事
&先列一下混乱的名字:
Bubble ,Liquid Bubble(水中泡泡),foam(泡沫),水泡,泡泡,气泡,泡沫,肥皂泡,砸落水中泡,煮沸水时的泡,碳酸饮料的泡,啤酒泡。
为了不引起误会,今天我所要说的是Liquid Bubble
2.1水泡定义
维基定义是:A bubble&is a &of one substance in another, usually &in a . Due to the , bubbles may remain intact when they reach the surface of the immersive substance.(粗糙的翻译:水泡通常是流体中的气体小球。由于Marangoni 效因,水泡到水面时会破裂。)
注:(,)马伦哥尼效应是指在流体接口,因为而造成的现象。两种相接触时,表面张力强的液体会将表面张力弱的液体拉过来,因此会出现表面张力弱的液体向强的方面渗透,同一种溶液会因为高而增强表面张力,所以稀溶液也会向浓溶液中渗透。这种现象最早是由物理学家卡罗&马伦哥尼首先在论文中研究发表的,所以被命名。
2.2水泡本质
统一的解释:流体中不能相溶的气体球。
上面是本人擅自总结的,不能当真。水泡如何产生的,不同类型的水泡产生原因完全不一样。
海底或湖底冒上来的气泡。
可能由于水底有植物什么分解而产生的甲烷气体?可能由于植物呼吸作用产生的氧气?还是因为大鱼吐出的二氧化碳?反正就是一种无法溶于水中的气体。
烧开水时产生的水泡
容器避有空气,本身水就溶有空气加热后,空气跑出来。这是通常认识。还有一说是,因为热水会汽化产生水泡。
啤酒&碳酸饮料
不容置疑的是这两者都在生产时通过增大压力而溶入更多的二氧化碳。打开瓶盖时,压力降低,二氧化碳会释放出来开成气泡。
那酒杯底吐泡泡是怎么回事呢?
原来玻璃容易带正电,容易吸引空气中的纤维灰尘。当酒水倒入酒杯后,荡入杯底的纤维管成为了气泡的成核中心过饱和的二氧化碳通过液固气界面释放进纤维管中,一旦管内气泡鼓出,酒水又会重新填充纤维管,进行下一轮的二氧化碳释放和堆积。在不断地吸收-释放-膨胀-排出过程中,我们看到了如珍珠链一般美丽的气泡不断升腾……
一个人落到水里也会产生水泡
当然是人把空气带入水中啦,那些水泡就是带下来的空气。
等等等等这样的例子很多。
无非就说了一件事事,要想生成泡泡就得有气体跟液体。也就是两套流体。两套不相溶。而不相溶的原因跟密度与压力又有关系。好我们就顺着这个思路在三维中试试。
三,RealFlow中制作水中泡泡(Liquid Bubble)
3.1现实探索推入CG
我这里准备模拟的是池塘中翻涌起来的一股大泡再分成许多小的泡泡。
看一下我最终效果。
这种效果在实际应用于水底背景效果还是不错的。
这个方法说出来可以说是非常简单,任何有一点点RealFlow知识的人都能做出来。
做效果不是说你用的手法复杂就厉害,固然证明了你技术掌握的多,但实际生产效率就不知道好不好了。把复杂技术的简单应用是最优的。
这套方法巧妙在的是,完全符合自然界中气泡产生原因的。
经过上文对实际气泡一些说明,你肯定有了一些理性认识。
3.2气泡必要条件:
1.得是两套流体(类比空气和水)
推论出:2.一套流体密度大(水),一套流体密度小(空气)
3.压强不一样。这一点稍微有点不好理解。
在气泡上升时,空气内部压力肯定大于外部压力的
水呢,肯定外部压力大于内部压力。只有存在这样的压力差情况下气泡才能上升。
外形方法,RealFlow有mesh这一强大的功能,可以把动态粒子变成球形很像泡泡。
根据上面分析,非常幸运,我们所需要的属性,RealFlow都有相应的参数提供。这也是我们这个效果做起来快速的原因。
流体:Liquid
密度:Density
压力:Int Pressure/Ext Pressure &&&&&
3.3 RealFlow中制作Liquid Bubble步骤
水域:用一个填充粒子的cube来完成
空气:用一个球形发射器(Sphere)来完成
建立一个Cube模型.调整的高一点,像一个水箱,你就把它想像成是一个池塘。待会水泡会从这冒上去的。最好让模型,线框模式显示。
建立一个Fill_Object发射器&.这个用来填充粒子。Fill Object下选择上一步建立的Cube01,Fill Volume参数设置成Yes.就会看到Cube里填充了粒子。像水池一样。
调整Fill_Object发射器的Particles属性。确定粒子类型是Liquid。Density暂时保持不变。Int Pressure 调整成20.让水有很大的内压。这样“空气”那套粒子在里面交互时才会正常。
建立一个Sphere发射器。垂直位置移动到Cube最底下一段距离。
Sphere发射器同样时Liquid粒子类型。Density调整成6000 (可以根据场景再修改)。Ext Pressure调整成40 。Surface Tension调整成10,为了让表面形态稳定。
Sphere下的Speed打成0,Fill sphere打成Yes.&(这样做只发射一股,如果要连续不断的水泡,可以给Speed一些值)。现在模拟一下,会看到球样的粒子发射,落到下面,并没有往上。
Sphere发射器参数参考:
加一下Gravity。值打成-9.8(负9.8)。也可以把不改变值把方向改成反的。现在模拟一下,你会看到球样的粒子就发射往上了,像水中泡泡一样。但问题是它与Cube有碰撞。(为了稳定给场景加一个K_Volume场)
在全局链接里(GlobalLinks)删掉Cube,Gravity
打开Exclusive Links ,让Cube成为Fill_Object的子,Gravity成为Sphere的子。所有结点与链接关系。如下图。
j.当粒子动态模拟好后,下面就是做mesh了。这一步对外观很关键,但又非常简单。
建立一个ParticleMesh_RK,默认参数就行。只要给Shpere发射器粒子做mesh就可以了,Fill_Object那套可以隐藏,最后是不需要的。
下图是我做出来的mesh
K,把这个mesh导入三维渲染吧,下面是我渲染的效果(第一张图,动态图传错了,周一再改一下)
只要在第f步骤改变一下就能做出,持续的发射。气泡节奏可以给speed 做动画来控制。干脆不用Sphere发射器,用Circle发射器发射更好
&3.5总结:两套流体,
不同密度,不同内外压
四、效果拓展&总结
如果做到这里就结束了,那也太对不起我们的探索了。
根据这个思路可以再做出,锅里煮沸的水泡泡,岩浆的泡泡。如下图。
(这个锅里的效果,是简化过的,不是真正的两套流体,而是一套用Particle做好动态的小球再导入到Naiad与水碰撞。这样制作速度要快很多。上图是同事“绵羊”模拟的,感谢他提供的图片。)
下面岩浆效果,也可以用类似方法模拟出来。&
&补充一下:记得上面说过那个美人鱼落水的气泡怎么做呢,也很简单,先模拟根据人动态模拟一套粒子再导入Realflow或Naiad这样的软件,直接碰撞,效果就很好了,跟简化的锅沸腾一样制作。
看看,只要稍微研究一下泡泡产生原理就能做这么多特效。你说说多思考底层知识的作用有多大,这才叫以不变应万变。多学“元”知识。多研究自然,热爱自然。特效探索的路上充满乐趣。

我要回帖

更多关于 maya古建筑模型 的文章

 

随机推荐