请选择 进入手机版 | 继续访问电脑版

查看: 4987|回复: 3

[原创] Unity实时渲染短片《Adam》揭秘:特效制作

[复制链接]

1061

主题

1747

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
22725
QQ
发表于 2017-1-9 10:07:44 | 显示全部楼层 |阅读模式
Unity实时渲染短片《Adam》揭秘的系列文章中,我们已经为大家分享了《Adam》的产品设计资源创作动画制作,本文将重点介绍Adam Demo中视觉特效背后所涉及的技术。

关于作者

本文作者是Zdravko Pavlov,一名拥有11年经验的视觉特效美术,专注于CG动画合成、游戏特效艺术、3D建模以及灯光与渲染。Zdravko Pavlov负责Adam Demo的美术制作,包括粒子效果及动态模拟。

0.png


粒子效果

气体

我使用PhoenixFD设置液态模拟。渲染序列以纹理图表(flipbook texture)的形式在Unity的Shuriken粒子系统中使用。

01.gif
3D Studio Max中的PhoenixFD模拟预览


粒子控制体积雾的密度,场景中所有区域光也都会影响该雾状体。区域光代码由GFX程序员Robert Cupisz实现,现在可在GitHub找到相关内容

02.gif
体积雾密度由粒子控制


水坑

我还用PhoenixFD来做水坑涟漪的液态模拟。

3.gif
3DS Max视口中模拟液态表面及渲染纹理的预览
4.gif
Shuriken粒子系统在Adam脚下触发的效果


渲染序列被再次合并入法线贴图纹理的图表。粒子在机器人的脚下生成,并渲染到一个离屏缓存中。产生的结果用来修改水坑的表面法线。

尘土和烟

射击序列中子弹击中混凝土时产生的火星和尘烟,以及其他一些次级效果(例如,空气中流动的微尘颗粒以及城墙排气口上烟柱),我都是用Unity中原生的Shuriken粒子系统来制作。

05.gif
部分环境效果示例


动态模拟

Adam中所有的角色都使用了运动捕捉技术。但是,我们仍然要为所有在运动捕捉集合中,无法物理呈现的布料及不同配饰添加另一层次级动画。对此,我们不是手工完成,而是采用一系列动态模拟来实现。

我们事先就预设好需要一些特写及慢动作镜头。模拟效果需要在精度及视觉真实度上与Demo的质量匹配,因此我们使用了一些高端离线模拟解算器。计算结果将烘焙并回放为动画。

袖子
“袖子镜头”,我们在整个生产过程中都这么称呼它。实际上,这是我第一个开始着手的镜头。我尝试了几个不同的布料解算器,以及一些蒙皮粒子方法。
6.png


最后选择3DS Max的内置布料修改器用于最终模拟。之后,我设置好一些简单测试并向导演演示。

7.gif
一些最初的布料模拟测试(3DS Max视口预览)


经过一些迭代后,我开始用Adam的动画、几何体制作最终版本进行模拟。

8.png
布料模拟(3DS Max视口)


布料模拟的结果被烘焙后,我使用Alembic Importer ,将其导入到引擎。这个工具由Unity Japan开发,可在GitHub上免费下载。

9.gif
Unity中展示以alembic流导入的不同版本的模拟


面具

我为损坏的面具构建了一个简单的Thinking Particles设置。

10.png
面具碎片的Thinking Particles设置


Thinking Particles的程序性及其集成的Volume Breaker能助我进行更快迭代,探索不同的可能性。我将完成的版本交给我们的3D建模师Plamen(Paco) Tamnev,他以此为基础制作最终模型。

11.gif
不同的Thinking Particles模拟变体


主角扯破的袖子与破碎的面具不仅对剧情本身很重要,同时也能使Adam在后续群体情景中便于被区分出来。

CARONTEFX

Caronte是由Next Limit开发的多重物理模拟引擎,Real Flow将其作为刚体及软体动态解算器已有一些时日。通过与引擎无缝整合,CaronteFX为Unity提供了极高质量的物理解决方案,并帮助我们在紧张的生产时间中制作出尽可能多的特效镜头。

在我们第一次使用时,它还处于Alpha版本,尚未集成绳子与布料的物理模拟,但我们与CaronteFX团队进行了紧密合作。他们在整个制作过程中竭尽全力为我们提供所需的工具及功能选项。目前这些都已包含在Asset Store上的CaronteFX中。

电缆

制作阶段早期,我们对于连接Adam与机器的电缆有些犹豫。因为,我们有些担心电缆的物理表现、几何体交错等等无法达到令人满意的程度。

幸运的是CaronteFX的绳索解算器非常精确,它可以基于几何体三角形进行碰撞计算,因此会将绳索(电缆)的厚度计算在内。

012.gif
Unity 5中的CaronteFX播放器


烘焙一个这样的复杂模拟会产生大量的缓存数据。我们使用了CaronteFX中添加的自动蒙皮选项。它会生成一个骨骼层级,并且可将结果导出为FBX文件。

013.gif
Unity 5中蒙皮动画回放


射击

14.png

在这个动作序列中发生了很多事情。子弹的冲击会在地面产生尘土团与火花,伴以混凝土块四散飞溅。一个机器人的腿和手臂被撕成碎片。

15.gif
早期Thinking Particles原型


这个镜头也是我比较早开始制作的,在一些早期版本中使用了Thinking Particles。Thinking Particles特别的灵活和健壮,让我能快速的尝试不同的场景。随后,当我们在流程中采用CaronteFX时,我在其中重建了这个效果,以便于使用它便利的Unity集成和自动蒙皮功能。

016.gif
Unity中射击序列的早期原型


CaronteFX拥有一个非常灵活的分段系统。我作为一名视觉特效美术,可以在Unity编辑器内就可以将Asset拆分成不同部分。新生成几何体面的材质会和新Asset保存在一起。

17.gif
CaronteFX制作的地面子弹冲击预览


Sebastian 和Lu

这两个角色的制作尤其麻烦。不仅是因为有多种不同类型的动态物体(软性、刚性物体和布料),但是,特别是Sebastian,复杂几何体相互层叠。

18.png
基础动画模型(左侧)以及设置好用于模拟的对象(右侧)


我将Sebastian的几何体分为三个组。斗篷、披风和悬挂在皮带上小碎片为一组。裙子、平板和刀在第二组。头巾与耳饰是第三组。然后我开始重新调整元素位置,避免交错,并开始制作低模代理以减少计算量。

19.png
刀的代理碰撞体对象以及一些关节辅助器的示例


020.gif
Unity 5中Sebastian的模拟


我们已将Sebastian角色发布到Asset Store,其中包括了一个Caronte播放器,以便您能了解模拟的设置方式。

Lu的处理也是相同的过程,但需要模拟的对象没那么多,因此设置起来要更简单和直接。

21.png
3DS Max视口中待模拟的Lu模型截图
022.gif
023.gif
CaronteFX播放器预览烘焙前的模拟


我和我们的制作设计师Georgi Simeonov在Lu的裙子上花了不少功夫,才找到厚重皮革的感觉。

我们最后使用了软性物体来制作裙子,而非单层布料。软性物体能让外形保持的更好,也不会像布料那样波动太大,很符合我们所预期的那种外观和物理表现。

Lu也能在Asset Store下载,其中还包含Adam与Guard角色。我已使用Unity的原生布料模拟,重制了他们的模拟,方便您更轻松对这些角色和Unity的布料系统进行深入研究。

相关阅读:

Adam资源包及可执行文件发布
Unity实时渲染短片《Adam》揭秘:动画制作
Unity实时渲染短片《Adam》揭秘-资源创作
Unity实时渲染短片《Adam》揭秘-产品设计
Unity实时渲染短片《Adam》图形技术介绍

11

主题

130

帖子

1535

贡献

中级UU族—2级

Rank: 5Rank: 5

积分
1535
发表于 2017-1-10 01:37:30 | 显示全部楼层
说是Realtime,其实里面还是有很多动画,不过已经很厉害了

0

主题

2

帖子

25

贡献

初级UU族—1级

Rank: 1

积分
25
发表于 2017-1-12 01:10:00 | 显示全部楼层
烘焙,播放烘焙好的。不同的环境实时预览组合好的烘焙数据。原来CG是这样的,涨知识

18

主题

74

帖子

975

贡献

中级UU族—1级

Rank: 4

积分
975
发表于 2017-1-12 05:32:41 | 显示全部楼层
烘焙好了,就不好玩了,就无法VR化了,比如VR里面你想弄一杯水,比如碗里一点点水,你想往你旁边的小狗身上泼,那由于特效不行,那么无法做互动动画了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表