metaball公式_基于Metaball及LSystem的3D洞穴生成

该博客探讨了如何使用L-系统生成洞穴结构,包括各种路径和倾斜操作。同时介绍了MetaBall的概念,通过场函数D(r)=1/R^2创建融合效果,并讨论了其在图形生成中的应用。文章还涉及了如何通过调整参数来优化洞穴形态和路径,以及连接死路以形成更复杂的结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

a0178ee2ba9ce77633b5d2d5174a6be9.png

洞穴结构生成

天然的洞穴形态有如下形式

2e37b797ee41b52966d336910c46b564.png

通道切面有如下形式

13fc7f6123928646f6fe61576aabddf9.png

首先使用LSystem进行结构生成

由于LSystem是一个树状结构,会产生很多死路,所以这里最后会把一定比例的死路互相连通

d2d2a195c01b6a96e826c70d9390a76f.png

符号

F前进

R顺时针偏航

L逆时针偏航

U向上倾斜

D向下倾斜

O增大角度

A减小角度

B增加每步的前进距离

S减少每步的前进距离

Z分支的尽头

0停止连接其他分支

[]起始/结束分支

使用的宏:

C 曲线路径

H 上坡结构

Q 产生一个房间

T 类似于H符号,但分成两条分支

I 直线路径

由以下公式进行生成:

fa33e150337d433c4a92600b1d01ecd7.png

c492f19633a857b5505c1ddd1eb739d6.png

这里生成的其实可以看作一堆管道

MetaBall

考虑最简单的场函数D(r)=1/R^2,假设有两个这样的场互相影响,我们画出其中的等势面,会出现两个球交融的效果,每个球都是一个metaBall

c980f7b11f7eec9f450f786ec9a736b4.png

一般会限制场的影响范围,将其写为

2c947b7c9c3753c0baa9d5b62e5da0e9.png

a为缩放比例,b为控制点生效的最大距离。

可以进一步简化为

adf19f6becead6aaf27fc096c4d5d01b.png

当ab都为1时,即为

4caf96c940d749aab178e5ecfe44b2d4.png

此外,有一种更平滑的计算方式

bc05273c9cd091088246922bbe0b3c41.png

产生一系列metaball去影响顶点

a65b99056fe37e4d934c75f8bad9dc6e.png

5902df6cc67ec92b9feaa49eb86dd1a4.png

ref:https://blog.youkuaiyun.com/noahzuo/article/details/78596407

http://julian.togelius.com/Mark2015Procedural.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值