虚幻4渲染编程(RayMarch第四卷:MetaBallInUnrealEngine4】
GameDeveloper
MYBLOGDIRECTORY:
INTRODUCTION:
目前raymarching大概有几种机制。第一个是SphereHit这样可以快速找到表面,这样raymarching该算法适用于绘制不透明物体,因为我们只需要知道它的表面。代码如下:
这种方环的次数可能很少,几次循环后可能会满足break然后条件弹出。
第二种是绘制透明物体,如烟雾和透明胶体。这需要积分光纤上的浓度。所以需要使用segmenthit的方式。这种方式可能就需要在一条光线上执行积分操作了,代码例子如下:
然后第三种是光追的方式,这里就不多说了先跳过去。
MAINCONTENT:
【1】2DMetaBall
Metaball关键在于距离场组合函数,iq给出一个叫声Polynomialsmoothminimum代码如下:
但是这个理论的原理是什么呢?以下是推导:
首先要对Metaball数学描述了这一现象:平滑插入两个距离场,使其在一个范围内的部分集成在一起,只平滑处理该范围内的距离场,并保持该范围以外的距离场的原始值。在完成数学表达后,可以列出函数,显然此时是一个分段函数
距离场,距离场。
都是基于距离的函数
平滑函数的距离场
平滑插值范围
因此,可以得到分段函数
...(1)
可以是很多种方法,不过这里使用线性插值
...(2)
线性插值的权重值在0到0之间1
因为是混合范围,缩放到0到1范围
...(3)
对求关于的导数
...(4)
故...(5)
当时,为了使分段函数连续,
故...(6)
当时,分段函数
故...(7)
同样,当时的分段函数
故...(8)
函数图形如下:
为了连续分段函数,分段函数分段的左右导数应等于(5)=(8)(6)=(7)
因此,首先要改变(5),加
故(4)变为
此式中...(9)
(5)变为
此式子中...(10)
(6)变为
此式中...(11)
改变(6),添加
因此(11)公式变为
此时(10)为
所以此时(9)为
函数图像如下:
翻译成HLSL代码即
这两行代码包含了巨大的数学原理,再次拜倒iq大佬脚下。
【2】3DMetaBall
我们开始正式生产meatball吧。raymarching我在第二篇文章中做了一个非常简单的例子:
其实这是我们的。meatball了。meatball与此示例的区别在于距离场的结构:
我们只需要让两个球的连接光滑。
第一个sphere函数是距离场元素公式,是我们最基本的距离场模型。第二个是blob5函数是处理球与球之间距离场的平滑度。第三个函数是构建我们距离场的函数。
以下是我的完整代码:
SUMMARYANDOUTLOOK:
再梳理一下Raymarching的框架。
Enjoyit!
NEXT:
Reference:
最近,许多用户正在寻找关于运城第四中学毕业证书的答案,并找到了44171930张运城第四中学毕业证书原创设计图片。今天,我将总结一些答案给你解释! 97%的新读者认为(运城第四中学文凭:虚幻4渲染编程(RayMarch第四卷:MetaBall In UnrealEngine4】)值得一读!
毕业证样本网创作《运城四中毕业证:虚幻4渲染编程第四卷:MetaBall》发布不易,请尊重! 转转请注明出处:https://www.czyyhgd.com/220272.html