登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

豆芽兵的生存探索

因,记录。留下历史,看到未来...

 
 
 
 
 

日志

 
 

融化通用模型(2/3)  

2013-12-01 17:27:49|  分类: RealFlow探索 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |


融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索

 (上图是我使用金属人头案例,使用不同材质渲染的结果。)

  融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索

本文简介:

本文阐述的是对融化效果通用模型。这是为了脱离软件对融化本身效果的思考。这么做的目的很简单,就是真正掌握融化效果,不受平台的束缚。甚至可以把这个效果所用的知识点迁移到另一个看似完全不相关的效果上。

比如融化理解了,你可以很轻松在技术层面实现一个冻结效果。

一、融化(melt)效果简介

1.什么是融化:

先用自己语言组织一下什么是融化。然后再往后看。


好,看一下最常见到的冰块融化效果。

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


(图片来自维基百科)

根据图片,我们可以看到这样的现像:

1.冰块在逐渐变小

2.冰块慢慢变成水

3.水在变多,是由冰块转换而来的。


用自己话描述一下:一块很大的冰块慢慢变小,变成水流到杯子里,水在一点点上升。最后冰块消失,全部变成了水。

不要觉得上面这些描述很傻。做一个视觉效果前,最好有一个充分仔细的观察过程。

而如何客观的描述现像,对自己的理解,和后期的制作有很大影响。让我们像孩子一样,使用最真实眼光来看待自然。


融化维基百科定义:

熔化是指物质由固态转变为液态的一个过程(又称熔解,其中的熔化又写作融化、融解)。固态物质中的内能增加(通常借由加热)至一特定的温度(称之为熔点),在该温度下(或对于非纯物质,在某温度区段内),会转变为液态。


融化效果,是一种物体状态变化的效果,从固体到液体的变化。物体状态变化的效果总是非常吸引人。自然界中,有固液气三态的变化(准确来说还有等离子态) 。

物质在不同状态时,物理性质是很不一样的。比如冰和水的差异。本质其实是因为分子之间的距离不一样。

我们要探讨的融化,是属于物体从固态到液态的变化效果。(其实如果做从固态到气态,气态到液态,都是非常吸引人让人着迷的效果主题。)

制作物体状态变化的效果无论用什么方法,总要考虑解决这样几个问题。

  融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索
1.如何保持原始状态

2.如何转换过渡

3.变化后状态控制

上面几个问题,在特定好融化效果。可以这样描述一下:

1.原始状态 (固态)

2.如何过渡(固液转换)

3.变化后状态(液态)


在CG中,用来表示固态物体,使用的是模型mesh。

液态,或叫流体,几乎都是使用粒子系统进行描述的。但大部分情况下,我们需要把粒子转换成mesh。

因为粒子只表示一定尺度的流体,流体应该是无限多的粒子集合。所以最终我们需要把粒子转换成模型mesh.


融化效果可以简单描述成:mesh到粒子再到mesh的一个过程。

(模型,是可以变形的,如角色动画。但这种变形是不涉及点的增减。)

对上面内容大概做一个了解,有助于制作CG效果。


固态:我们可以直接使用模型。也可以使用粒子的集合。

液态:我们可以直接使用流体。也就是流体系统,由粒子描述。

二、融化模型

根据上面的观察,和制作经验,总结一个融化模型出来。这个模型就是像数学公式一样的东西。你也可以把它看成是一个制作思路。


初始状态=>融化条件=>分离出部分

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


融化效果制作所要处理的问题就出来了。


如何保持初始状态?

怎样设置转换条件?

分离部分怎样处理?


这三大部分,现在把它跟realflow结点起来。下图只列出了一些方法。特别是融化条件,其实有很多,你尽可以发挥自己想像。并且这些方法不是局限于realflow中,你可以在不同软件选择类似的条件来达到目的。

下图,你可以从左边选择任何一种方式,都可以走到最后。实现融化效果。条件不光可以是一个,还可以同时应用几个。比如同时使用温度方法和Normal方法,表示只有同时满足一定温度,并且粒子法线值符合条件才会变成融化部分。


融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索

对这个融化模型的另一种表达方式。

你可以根据下面的流程。只要把融化对像换成你的模型。别的都这样来做。就能有条理的做出融化效果。

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


融化模型,相当于一张地图。你如果要全部理解,需要自己把每一部分都熟悉一下。

这个模型也不是固定的,只是我做了很多试验后自我的一个总结。你可以先根据这个学习。这样更有方向性。


对模型的进一步解释:

这个模型实际是针对不同物质状态改变的改变。不只限于融化效果。


先看一下对于融化效果的解释:

1.首先你需要有一个自己要要融化的几何体模型。

这可以是一个角色,一个建筑,甚至只是一个小球。

2.对这个模型填充粒子

填充只有两个要求:

可以保持原始状态

可以转换

3.使用一定的条件,分离容器1中的粒子。

条件可以是多种多样的,比如位置条件,速度条件,法线,相邻粒子数,只要是你能想到的,都可以尝试一下。

4.符合条件的粒子转移到容器2中。

容器而其实就是另一种状态的物质,只要能与容器1有一定交互就达到了融化的目的。

通常你可能需要加上重力,或者其它的力,达到你的需求。

5.最后需要mesh粒子

这一部是把整个融化分离过程合起来的一步。这一步完成,你就会得到一个融化变形的物体。

但在理解每一个部分之前,先来了解一些基本概念。这些基本概念是为了帮助深入到技术细节中。

其中包括物理的,CG的。不过限于我的知识水平,只能做一个自我理解的介绍,更深度的解释需要参阅更多的资料。

我通常是寻找维基百科词条,再根据它的参考文献。如果要跟软件更贴切一点,就参考不同帮助文档。比如Maya的,realfow 的,Houdini的。因为这些大型软件都有基本概念的解释,这是跨平台的知识解释。

下面每一个词,都是一个很大的方向,我所切入的是很小的一方面。几乎都是为了融化这个主题进行考虑面理解的。

这些概念是真正让你自由的知识点。

三、一些基本概念

下面这些名词,几乎都来自于realflow,你可以以这些关键字,在帮助文档找到更全面解释。

下面这些解释仅仅是我个人理解,可能有误导。警惕!

3.1 Emitter(发射器)

可以生成物质的一种工具。与遵循物质守恒的现实世界一样,在CG世界,也不会无源无故产生一个东西。发射器就是在CG世界生成一些物质的源头。比如粒子发射器,流体发射器。在Realflow中 标准粒子(SPH)粒子的发射器兼具有,产生粒子和做为粒子容器两种功能。而HYFLIP流体的发射器,只产生粒子,流体容器是使用的Domain结点。使用realflow基本粒子做融化效果时,一定要明白标准发射器这种双重属性。

3.2 Particle(粒子系统)

粒子由发射器生成,粒子整体用来代表流体。每个粒子可以看做三维空间中,一个确定的带有特定属性信息的点。这些特定信息,如velocity(速度),position(位置),或mass(质量)。虽然你可能使用脚本访问到每个单独粒子,但不能把它看做一个单独的物体。尽管粒子有物理尺度也可能受其它物体影响。流体的最终形态是整个粒子的集合动态。

用来描述流体的基本元素,不可分割。粒子是存储在发射器中的。发射器属性才是整个流体的属性。一定要把粒子与流体区别开来。这是一个1加1不等于2的概念。流体是整体,而所有粒子总合并不能叫做流体。

  融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


(上图是不同发射器的流体交互)

3.3 Filter(过滤器)

这首先是一个思路。然后才是一个技术手段,一个辅助器,一个工具。

这个思路,就是如文字表达的:过滤。过滤通常伴随着分离。比如你有很多小球,外观一样,但材质不同,一些是木头的一些是铁的。那很简单,我们使用磁铁就能把分离开来。这个磁铁就能看做一种分离器,过滤器。


 

在realflow中 这个辅助器提供了一种非常方便的方法,在不同发射器间交换粒子。"Filter"daemon需要两个发射器:一个源发射器和一个目标发射器。你可以选择任何发射器做为目标射器。甚至你可以添加更多的粒子到目标发射器,其它物理参数像"Density(密度)"或"Int Pressure(内压)"可以是不一样的。建议使用"Container"发射器。

这个辅助器Daemon,作用相当于一个"分离器"。它可以根据一定条件,把源发射中符合粒子的条件转移到目标射器中。

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


这个辅助器提供了多种条件。比如,position(位移),速度(velocity),temperature(温度),noarmal(法线)等等。


但要注意:在realflow中,真正的分离,不是上图演示的从A到B一个实际的过程。


如果你要转移粒子实际情况是这样的:

源发射器:

a.根据一定条件,标记一些粒子

b.存储标记粒子的属性

c.删除源发射中的标记粒子



2.目标发射:

a.生成同样数量粒子

b.这些粒子属性来自源发射中的被删除的粒子属性


 

然后你看到的情况,就感觉是从A转移到了B


 

上面这个实际转移粒子的过程,也是自己在realflow定义自己过滤器的一个过程

3.4 Mesh(包裹模型)

什么是mesh?

在realflow中mesh是一个三维的包裹粒子最外层的东西。Polygon(几何体)mesh可以在不同软件间处理。可以应用材质,贴图,基本使用UV坐标,与运动模糊的粒子合并,渲染出令人信服的流体。 

3.5 Type(流体粒子类型)

在realflow中SPH粒子你可以选择不同流体的类型。不同流体类型是预设好的不同物质的流体。

"Gas(气态)"流体类型创建像空气一样的物质。气态粒子趋向有很强的膨胀,和很高的速度。RealFlow气态粒子没有基本网格,因此动态与其它流体类型完成不同。

"Liquid" Realflow的标准设置,提供了很多参数,用来模拟液态或高粘度流体。这种类型粒子之间交互,特别适合制作中小规模的模拟。

"Dumb(惰性)" 粒子之间没有交互不受其它发射器影响。

"Elastics(弹性)"弹性粒子也称为spring-mass system(弹簧-质点系统
),动态很像柔体。可以用来模拟果冻状,和会收缩的物质。 "Script" 可以使用Python scripting or C++. 写一种符合自己要求的粒子类型。


3.6 Force(力)

物理学中,力是任何导致自由物体历经速度、方向或外型的变化的影响。力会导致物体改变速度。粒子可以被看做一个很小的物体,类似于质点概念。在realflow中粒子是有质量的。可以由Daemon或其它物体施加外力。不同的辅助器本质上就是定义的不同力。比如Gravity,就是定义一个在Y轴负方向的力。如果Attractor,就是一个往中心吸引的力。改变力,是制作不同流体常规任务。


3.7 Viscosity(粘度)

每个流体都有一定的粘度。水的粘度比较小,粘度很高的物质比如蜂蜜,蜡,柏油。流体的黏度是由于相邻层间以不同的速度运动时产生的摩擦造成的。

在realflow中,粘度概念是被定义在发射器的。要注意对单个粒子来说粘度的概念是没有任何意义。必须是"有限元(一定体积内)"流体才有流体概念。这点非常重要。


因此,流体中的粒子,可能会有position,velocity,mass,这些属性通道。但不会有粘度。

这一点就产生了一个问题,如果我要控制每粒子的粘度该怎么实现呢。在Naiad和Houdini中流体都是有直接的viscosity通道的。


只有一句话可以实现:粘度实际就是粒子内部的摩擦力。

更直接一点:粘度就是一种力。

后面我会展示一个在realflow中实现不同粒子粘度的方法,本质就是改变力。

3.8 Normal(粒子法线)

法线就是垂直于三维平面的法向量。在realflow中粒子法线概念是,对粒子来说就是垂直于流体表面的法向量。法线长度越大,说明粒子越在流体表面。

而我们做融化效果最关键就是找出一个合适条件确认表面的粒子。法线无疑是不错的一个方案。

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


你要知道的是:粒子法线值越大,说明粒子越处于流体表面。

这个值可以key帧,值越小融化的粒子越多,你根据自己感觉来调整key帧。注意如果resolution值确定下来后就不要改动了,因为这对normal值影响很大。

注意:realflow中 Normal值,与resolution息息相关。所以当你改变resolution后,Normal值需要重新测试。后面章节会教你写一个简单的脚本来自动获取适当的Normal值。

3.9 Temperature(温度)

对于物质状态的变化,温度才是真正根本的原因。这也是最容易理解的一个物理量。一个物体受热,然后产生受热部分变成流体化掉,合情合理。Realflow的标准liquid流体类型,温度这个通道平常几乎用不到。但研究融合时,这个通道将会变得特别有用。

但得要知道,软件中的温度通道,仅仅是名称叫"温度"。在现实世界如果不停升温,物体会受热融化。在realflow流体中,就算你把这个温度值调到太阳核心的温度,对流体也没有什么影响。


 

这之前的关系就需要我们自己来定义,现在软件还没那么智能,只要简单的加热流体,就能实现融化的效果。

温度与流体关系很复杂。但我们需要简单的知道一些东西。

通常温度升高,流体粘度会下降。温度升高压力会降低。

如果我们要自己定义温度通道,最终还是需要跟实际的流体关键属性联系在一起。

CG流体关键属性有这些。力,内外压,粘度,质量。速度。

我们看到的外观主要是速度呈现。速度又同力影响。像内外压,粘度这些最终也是由力来表现。质量基本上不做更改。

所以实现温度的通道,最终我们还是要回到,实现一个合适的力上来。很奇怪是不是,当时我为了寻找,粘度这样个通道时,绞尽脑汁才想到这上面来。那种九曲回肠再到如此明了的感觉,我很难忘记。

力,才是控制流体的真正力量。

温度是表示物体冷热程度的物理量,微观上来讲是物体分子热运动的剧烈程度。温度只能通过物体随温度变化的某些特性来间接测量,而用来量度物体温度数值的标尺叫温标。它规定了温度的读数起点(零点)和测量温度的基本单位。温度没有高极点,只有理论低极点"绝对零度"。"绝对零度"是无法通过有限步骤达到的。目前国际上用得较多的温标有摄氏温标(°C)、华氏温标(°F) 、热力学温标(K)和国际实用温标。绝对零度为(-273.15°C).

融化通用模型(2/3) - 豆芽兵 - 豆芽兵的生存探索


四、小结

上面这些基本概念,全部是为后一篇文章

Realflow融化不同方法对比服务的。实际操作时是受到这些概念的指导的。上面只做为一个了解,如果你需要理解这些基本概念,只能通过自己的方式,比如多做练习,对比不同资料,自己思考。


本融化系列其余两篇:

1.序章:五分钟设置一个金属人头融化(1/3)

3.realflow融化方法技术总结(3/3)

  评论这张
 
阅读(2824)| 评论(4)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018