虚幻4渲染编程(环境模拟篇)【第二卷:体积云天空模拟(2)---3D体纹理低云】...

我的专栏目录:

小IVan:专题概述及目录​zhuanlan.zhihu.com图标

在第一卷,先搭建了层云的模拟方法,光的衰减,云的影子,光线散射这些效果还没有往上做,先把整个天空系统搭建完成之后,再统一加这些比较好。

第一卷层云模拟链接:

小IVan:虚幻4渲染编程(环境模拟篇)【第一卷:体积云天空模拟(1)---层云】

现在来模拟下面这张参考图中的2,3部分的中低云的效果。

v2-84a72365f74bbd22c22654fb8a24c7a4_b.jpg

这种云使用程序化噪波的方式生成已经不太适用了,因为它的变化非常丰富,体积感很强而且这部分云在整个空中起到了遮挡,层次感的作用,所以某种程度上还需要我们可以控制它,最好艺术家设计师能使用软件或者什么调整它,所以3D体纹理成为了很好的选择,我们需要使用到houdini生产我们的素材。

先搭建个能work的环境。

我们拿一个甜甜圈做个快速测试。下面这个快速测试的原理可以去看我之前的博客,或者去看epic技术美术Ryan的ShaderBits博客(链接见参考文档部分)

小IVan:Begin ray marching in unreal engine 4【第五卷:3D体纹理云】

下面是在Houdini中的效果。

v2-b14c5d2d4430db36ee85d12c9ab3ae1c_b.jpg

Houdini的设置如下

v2-cd8dee278de76a235cde0a549a814e01_b.jpg

我们制作好的体纹理效果如下:

v2-5a81535aacaa430a32145c9cb8d117a3_b.jpg

制作好体纹理后,我们需要制作一个inverse normal的正方体盒子

v2-1982634df219c0b8f1dd0cd6d7b90b19_b.jpg
v2-232b98e171469f4e83359ee11a56ab06_b.jpg

然后我们做一个RayMarching的材质

v2-b2e9db3f22b2f4e079ae87b50e44cf1c_b.jpg

代码如下:

float numFrames = XYFrames * XYFrames;
float accumdist = 0;

float stepsize = 1 / maxsteps;

for(int i = 0; i < maxsteps; i++)
{
    float cursample = 1 - PseudoVolumeTexture(Tex, TexSampler, saturate(Curpos), XYFrames, numFrames).r;
    accumdist += cursample * stepsize;
    Curpos += CameraVec * stepsize;
}

return accumdist;

效果如下:

v2-61e9caee24f9fc1d31e7b96fc0f73d0e_b.jpghttps://www.zhihu.com/video/1046097033055866880

后面建云的流程也是这样,只不过形状更复杂罢了。现在我们有了一条可以work的管线之后,接下来当然就是去做天空中的“低云”咯。


使用houdini制作一块云(我这里搭建得比较简单)

v2-1fdcdec0bdd71d0efd6061f6c0bc897e_b.jpg
v2-6834fe98c5829a2a0752e18248b968f6_b.jpg

我选择模型生成的方式制作,这样方便控制。

v2-1c86cd42a460fa0c2ef3620bb9808c87_b.jpg

在引擎里的效果如下(还未计算光照,只对浓度进行了积分)

v2-0d4d377c2341ac5803ad8539d74996ce_b.jpghttps://www.zhihu.com/video/1046400779128258560

目前有几个问题需要解决。第一就是云朵精度损失严重,很多细节都丢失了,这些细节如果想保留下来,就需要增大切片图的尺寸,而现在的切片图的尺寸已经很大了。

v2-b7b4a566df05fd609f091d2fe1b810d3_b.jpg

第二个问题就是我们使用ray marching来制作云的初衷是为了弥补模型云的缺陷,但是现在看来,Volume Texture也是事先烘焙的,无法使其变化。第三个问题和第一个问题有一定联系性,我们现在的诉求是做一片云海,然而现在一朵云都已经这样了,如果在尽量想为以后留优化空间的情况下,已经没有办法通过增加资源的精度来解决上述问题了。在下一节再完成对上述问题的解决。

Enjoy it!


Next:

小IVan:虚幻4渲染编程(环境模拟篇)【第三卷:体积云天空模拟(3)---高层云】​zhuanlan.zhihu.com图标

参考文章

【1】 Epic TA Ryan Shader Bits

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cpongo11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值