uid vfx
We are continuing our series of blog posts from last year, this time featuring a technical, behind-the-scenes glimpse of how the visual effects in the Adam demo were created.
我们将从去年开始继续撰写一系列博客文章,这次以技术性的幕后一瞥为背景,介绍了 亚当演示 中 的视觉效果是如何 产生的。
关于我 (About me)
My name is Zdravko Pavlov and I’m a visual effects artist with 11 years experience in motion graphics and compositing for CG productions, VFX art for games, and 3D modeling, lighting and rendering. My responsibilities in the production of the Adam demo included the creation of particle effects and the dynamic simulations.
我叫Zdravko Pavlov,我是一名视觉效果艺术家,在CG作品的动态图形和合成,游戏的VFX艺术以及3D建模,照明和渲染方面拥有11年的经验。 我在Adam演示制作中的职责包括创建粒子效果和动态模拟。
粒子效果 (Particle Effects)
发烟 (Fumes)
I used PhoenixFD to set up a fluid simulation. The rendered sequence was used as a flipbook texture in Unity’s Shuriken particle system.
我使用PhoenixFD设置了流体模拟。 渲染的序列在Unity的Shuriken粒子系统中用作活动簿纹理。
The particles controlled the density of a fog volume that was affected and properly lit by all area light sources in the scene. The area lights code was implemented by our GFX programmer Robert Cupisz, and is now available on GitHub.
粒子控制着雾量的密度,该雾量受场景中所有区域光源的影响并正确照明。 区域灯代码由我们的GFX程序员Robert Cupisz实现,现已 在GitHub上提供 。
水坑 (Puddles)
I also used PhoenixFD for the liquid simulation of the ripples in the puddles.
我还使用PhoenixFD对水坑中的波纹进行了液体模拟。
The rendered sequence was once again combined into a flipbook normal map texture. The particles were spawned under the robot’s feet and rendered in an offscreen buffer. The result was used to modify the surface normals of the puddles.
渲染的序列再次合并为活页簿法线贴图纹理。 粒子在机器人的脚下产生,并在屏幕外的缓冲区中渲染。 结果用于修改水坑的表面法线。
烟尘 (Dust and smoke)
I used Unity’s native Shuriken particle system for the sparks and plumes of dust when the bullets hit the concrete in the shooting sequence, as well for some of the secondary effects like tiny dust specs flowing through the air and columns of smoke rising from the vents of the city wall.
当子弹在射击序列中击中混凝土时,我使用Unity的本机“手里剑”粒子系统来产生火花和尘埃羽,以及一些次要效果,例如微小的灰尘散布在空气中以及从烟囱的通风Kong冒出的烟雾城墙。
动态模拟 (Dynamic simulations)
In Adam we had motion captured performances for all of our characters. Still, we needed to add a layer of secondary animation for all the clothes and different accessories that weren’t present physically on the mocap set. Instead of animating those by hand, we set up a number of dynamic simulations to help us with the process.
From the very beginning we knew that we were going to have some closeups and slow moving shots. The simulations needed to match the quality of the demo in terms of precision and visual fidelity, so we looked into some high end offline simulation solvers. The calculated results were baked and played back as animations.
在亚当,我们为所有角色拍摄了动作表演。 尽管如此,我们仍需要为Mocap套件上没有的所有衣服和不同的配件添加一个辅助动画层。 除了设置动画效果之外,我们还建立了许多动态仿真来帮助我们完成该过程。
从一开始,我们就知道我们将会有一些特写镜头和慢动作镜头。 这些仿真需要在精度和视觉保真度上与演示的质量相匹配,因此我们研究了一些高端离线仿真求解器。 将计算的结果烘焙并作为动画播放。
袖子 (The sleeve)
The “sleeve shot”, as we were calling it throughout the production, was actually the very first shot I started working on. I looked into some different cloth solvers, and also skinned particles approaches.
正如我们在整个制作过程中所说的那样,“袖套镜头”实际上是我开始研究的第一张照片。 我研究了一些不同的布片求解器,并且还研究了蒙皮粒子接近方法。
Eventually I ended up using 3DS Max’s built-in cloth modifier for the final simulation. I set some basic tests and showed it to the director.
最终,我最终使用了3DS Max的内置布料修改器进行最终仿真。 我设置了一些基本测试并将其展示给导演。
After some iterations, I took Adam’s actual animation and geometry and started working on the final version of the simulation.
经过一番迭代之后,我获得了亚当的实际动画和几何图形,并开始进行模拟的最终版本。
The results were baked and brought into the engine via the alembic importer developed by Unity Japan, which is freely available on GitHub.
将结果烘焙并 通过Unity Japan开发 的 Alembic进口商 导入引擎,该 进口商 可在GitHub上免费获得。
面具 (The mask)
For the damaged mask, I built a simple Thinking Particles setup.
对于损坏的面罩,我建立了一个简单的“思考粒子”设置。
The procedural nature of TP and its integrated Volume Breaker helped me iterate faster and explore different options. I handed over the approved version to our 3D modeler Plamen (Paco) Tamnev who used it as a base for the final model.
TP的程序性质及其集成的Volume Breaker帮助我更快地迭代并探索了不同的选择。 我将批准的版本交给了我们的3D建模师Plamen(Paco)Tamnev,后者将其用作最终模型的基础。
Both the torn sleeve and the broken mask of the main character were not only important for the story, but they also serve as tools that help Adam stand out from the crowd later on.
主角的袖子破损和面具破损不仅对故事很重要,而且还充当了帮助亚当在以后脱颖而出的工具。
CaronteFX (CaronteFX)
Caronte is a multiphysics simulation engine developed by Next Limit, and had been Real Flow’s rigid and soft body dynamic solver for quite some time now. CaronteFX brings the same high quality physics solution to Unity through a seamless engine integration, which made most of our FX shots possible within the tight production timeframe.
It was still an early alpha version when we first picked it up. It didn’t have ropes and cloth integrated yet, but we started working in close collaboration with the CaronteFX team and they’ve put a tremendous effort into providing us with all the tools and options that we needed throughout the production. Currently all of these are available with CaronteFX on the Asset Store.
Caronte是 Next Limit 开发的多物理场仿真引擎 ,并且已经成为Real Flow的刚体和软体动力学求解器,已有相当长的一段时间了。 CaronteFX通过无缝引擎集成为Unity带来了相同的高质量物理解决方案,这使我们的大多数FX拍摄都可以在紧张的生产时间内完成。
当我们初次使用它时,它仍然是早期的Alpha版本。 它尚未集成绳索和布料,但我们开始与CaronteFX团队紧密合作,他们付出了巨大的努力为我们提供了整个生产过程中所需的所有工具和选项。 当前,所有这些都可以通过 Asset Store上的CaronteFX获得 。
电缆 (The cables)
Early in the production, we weren’t sure about the cables that keep Adam attached to the machine. We were worried about potentially twitchy cables behaviour, geometry intersections and so on.
在生产初期,我们不确定将Adam固定在机器上的电缆。 我们担心电缆特性可能会发生扭曲,几何形状相交等。
Fortunately CaronteFX has quite precise ropes solver that calculates collisions based on the triangles of the geometry, thus taking the actual rope (cable) thickness into account.
幸运的是,CaronteFX具有非常精确的绳索求解器,可以根据几何形状的三角形计算碰撞,从而将实际的绳索(电缆)厚度考虑在内。
Baking a complex simulation like this one produces quite a lot of cached data. We used the automatic skinning option that was added in CaronteFX. A hierarchy of bones is generated and the result can be exported as FBX file.
烘焙像这样的复杂模拟会产生很多缓存的数据。 我们使用了CaronteFX中添加的自动蒙皮选项。 生成骨骼的层次结构,并将结果导出为FBX文件。
射击 (The shooting )
There are quite a few things going on in this action sequence. Bullet impacts lifting plumes of dust and sparks off the ground. Concrete fragments flying everywhere. A robot’s leg and arm shredded to pieces.
此操作序列中发生了很多事情。 子弹会撞击扬起的尘埃并从地面火花。 混凝土碎片四处飞扬。 机器人的腿和手臂被切成碎片。
I started working on this shot quite early. I used Thinking Particles for some of the early versions. TP is incredibly flexible and robust and I was able to quickly try out different scenarios. Later, when we adopted CaronteFX in our pipeline, I recreated this effect in it, so I could use its Unity integration and the convenience of the automatic skinning.
我很早就开始拍摄这张照片。 我在某些早期版本中使用了“思考粒子”。 TP非常灵活和强大,我能够快速尝试各种情况。 后来,当我们在管道中采用CaronteFX时,我在其中重新创建了这种效果,因此可以使用其Unity集成和自动蒙皮的便利性。
CaronteFX has a very flexible fragmenting system. As a VFX artist, I was able to fracture assets into pieces, without leaving the Unity Editor. The new assets are saved along with a new material for the newly generated geometry faces.
CaronteFX具有非常灵活的分段系统。 作为VFX艺术家,我无需离开Unity编辑器就可以将资产分解成碎片。 新资源与新生成的几何面的新材料一起保存。
塞巴斯蒂安和卢 (Sebastian and Lu)
These two characters were particularly difficult to build. Not only the sheer number of different types of dynamic objects (soft, rigid bodies and clothes), but, especially in Sebastian’s case, the layers of complex geometry layered over one another.
这两个字符特别难以构建。 不仅数量众多的不同类型的动态对象(柔软的,刚体和衣服),而且,尤其是在塞巴斯蒂安的情况下,复杂几何结构的各层相互层叠。
I split Sebastian’s geometry in three separate groups. The mantle, the cape and the shards that are hanging on the leather straps in one group. The skirt with the tablet and the knife in a second group. And the hood and the earrings in a third one. After that I began to reposition the elements to avoid initial intersection and started modeling lowpoly proxies to ease up the calculations.
我将塞巴斯蒂安的几何分为三个独立的组。 一组悬挂在皮带上的地幔,斗篷和碎片。 平板电脑和刀在第二组的裙子。 头巾和耳环在第三个。 之后,我开始重新定位元素以避免初始交集,并开始对低多边形代理进行建模以简化计算。
We have published the Sebastian character on the Asset Store and included a Caronte player in the package, so you can see how the simulation was set up.
我们已经在资产商店中发布了Sebastian角色,并且在包装中包括了Caronte播放器,因此您可以看到模拟的设置方式。
Lu went through the same process, but there were fewer objects that needed to be simulated so setting it up was a bit easier and straightforward.
Lu经历了相同的过程,但是需要模拟的对象较少,因此设置起来有点容易和直接。
There was some back and forth going on between me and our production designer Georgi Simeonov, until we got the right thick and heavy leather feel for Lu’s skirt.
In the end we used soft body for the skirt instead of a single layer of cloth. The soft body keeps the volume better, and doesn’t wave as much as a cloth would, so it gave us the look and behaviour that we were after.
在我和我们的生产设计师 Georgi Simeonov 之间来回走动 ,直到我们得到适合Lu的裙子的厚重皮革感觉。
最后,我们用柔软的裙子代替了一层布。 柔软的主体使体积更好,不会像布一样起伏,因此赋予了我们所追求的外观和行为。
Lu is available on the Asset Store as well, in the package with the characters Adam and Guard. I have remade their simulations to use the native Unity cloth simulation physics, to make it easier for you to peruse the characters, and also play around with Unity’s cloth.
Lu在Asset Store 中也 可用 ,包装中带有字符Adam和Guard。 我已经重新制作了他们的模拟,以使用本机的Unity布料模拟物理学,以使您更轻松地阅读角色,还可以使用Unity的布料进行游戏。
Have fun!
玩得开心!
翻译自: https://blogs.unity3d.com/2017/01/04/adam-vfx-in-the-real-time-short-film/
uid vfx