火、烟、水与魔法
带来一段模拟,得到一个游戏特效:Pixor 把 Blender、EmberGen 和 Houdini 写出的 .vdb 文件变成循环播放的像素画火、烟和水,使用与你的精灵相同的调色板。没有模拟工具?Pixor 也有自带的特效。
上面的每一帧都出自 Pixor:模拟在 Blender 中烘焙,原样在 Pixor 中打开,每帧一个 .vdb 文件。三个模拟都在免费素材库中,附带 .vdb 文件和 Blender 场景。
来自你的工具的模拟:OpenVDB
Pixor 能读取 Blender(Mantaflow)、EmberGen 和 Houdini 写出的 .vdb 文件:烟、火、爆炸和液体。它会找出密度、火焰和热量,以及用来抑制闪烁的速度。液体表面被画成实心,边缘锐利。
- 每帧一个文件:打开序列的第一个文件
fire_0001.vdb,Pixor 会播放其余的帧。 - 每 N 帧取一帧:以每秒 48 帧写出的模拟变成精灵的 12 帧。
- 首尾相接的循环:最后几帧与开头交叉淡化,让营火或火把循环燃烧,没有跳变。
- 精灵尺寸下依然稳定:256³ 的模拟在加载时被缩减到大约每像素一个体素,所以 32 px 的烟柱不会闪动,长序列只花读取时间,不占内存。
和其他一切一样绘制
体积与你的模型进入同一画面。火焰可以在手的前面,角色可以站在烟里。光照色带、调色板和清理像对待任何表面一样对待它。它柔和的边缘用固定在体积上的图案抖动,从不混色,所以每个像素都在调色板内,移动时也不会蠕动。火的高温部分不论光照如何都以热色燃烧,自发光图层则只把发光的部分交给你的引擎,用来做泛光。
手中的火,爆炸的烟
体积可以由骨骼携带,让火把的火焰在每个片段中都跟着手走,并像真火一样保持竖直。也可以由效果携带,让爆炸自带烟雾、法术自带火焰。把火放在行走循环旁边,火的帧就是行走的帧。
没有模拟工具?用 Pixor 自带的特效
内置体积喷气、火焰、云和薄雾由带种子的噪声生成,相同设置总是得到相同的体素。另有十三种粒子效果:爆炸、受击火花、斩击、魔法爆发、治疗、传送门、烟团、尘土、火焰循环、雨、雪、萤火虫和落叶。每种都由 3D 粒子经过你的外观和调色板绘制。可以把它放在骨骼上、对准片段的命中帧,或单独渲染。
pxr effect magic-burst --size 64 -o spell.png 水、波浪与天气
液体模拟被读作表面。对于池塘、湖泊或海岸,世界的水节点会生成一片水面,带有循环的波浪、沿岸的泡沫和水中倒映的场景。雨、雪、飘移的云影和草丛中的风也会以整步循环,让最后一帧接回第一帧。参见世界。
素材库中的免费特效
免费素材库中的 elements 是可以直接渲染或用来学习的特效:火、水、熔岩、闪电和魔法,每个都附带精灵表。模拟类特效还附带 .vdb 文件、Pixor 项目和进行模拟的 Blender 场景。CC0。
在命令行中
# a simulation, 24 frames, one file in two, the last four faded into the first
pxr render - --volume fire_0001.vdb:1.5::24,2,4 -o fire.png
# a torch's flame in the hand, through every clip
pxr render hero.glb --volume flame:0.25:0,0.05,0@hand.r -o hero.png 关于体积的一切都在手册里:体积:烟、火与液体。