从0到1搞懂柏林噪声:游戏中是如何“随手”画出大自然的?
合集 · 游戏开发技术合集 (17)
-
6分钟让你学会2D游戏水波特效
6:22
-
RVO2(即ORCA)动态避障算法---精简版
15:00
-
影子在游戏碰撞检测中的秘密
11:41
-
向量场群体寻路算法(Vector Field Pathfinding,DEMO开源)
2:45
-
《Boids算法》模拟鱼群鸟群(Demo开源)
2:08
-
游戏单位寻路算法:A*算法(A Star)
2:24
-
游戏空间划分技术之一四叉树(Quadtree)
2:01
-
游戏中的碰撞检测算法:从SAT到GJK
5:13
-
游戏空间划分技术之-KD树
2:33
-
从零到一搞懂柏林噪声:数学、代码与自然的平衡
7:21
-
从if-else地狱到逻辑之美:游戏AI行为树(Behavior Tree)
4:33
-
游戏AI行为树(Behavior Tree):代码实战
2:37
-
游戏中的碰撞检测算法:扫描与裁剪(SAP-Sweep And Prune)
3:08
-
三消游戏:消除判定机制与算法流程
2:12
-
贝塞尔曲线(Bézier Curve):用最简单的线性插值,勾勒出虚拟世界的灵魂
3:49
-
为什么游戏里的液体能完美融合?轻松看懂Metaball
2:58
-
游戏地图是怎么"长"出来的?波函数坍缩算法
4:19
Description
“随机是世界的底色,而柏林噪声是世界的律动。” 为什么《泰拉瑞亚》的地形起伏如此丝滑?为什么《我的世界》的洞穴蜿蜒曲折却从不显得混乱?这背后都指向了一个改变游戏开发史的算法——柏林噪声(Perlin Noise)。 很多教程会告诉你怎么调用库函数,但本期视频我们将深入“熔炉”内部,从数学底层逻辑出发,带你彻底看透噪声生成的每一个细节: ✅ 知识点看点: 1D噪声入门:从随机梯度到插值分配,理解噪声的“呼吸感”。 深度数学推导:为什么线性插值会有“折痕”?导数(Derivative)如何决定衔接的平滑度? 平滑函数进化史:从3次方到终极5次方插值(Quintic Interpolation),二阶导数为0意味着什么? 分形叠加(Fractal):利用导数的线性性质,证明多个噪声叠加后的平滑性,创造丰富地形细节。 2D与3D进阶:点积运算、三线性插值,以及如何生成类似《我的世界》的3D体素地形与洞穴系统。
Comments
请问我要先学习哪些数学知识才能掌握柏林噪声[笑哭]
♥ 42 ↩ 18
现实世界不是完全平滑的,地形可能会有断崖。网页人机检测中(比如拖动滑块),有些比较严格的,如果是用算法模拟,不管多少次平滑,加减速,随机抖动,都过不了ai检测。
♥ 17 ↩ 2
嗯。说的对!。。柏林噪音。本质为:混乱的随机世界,引用了乱序中属性相同无限相连的机制。
♥ 15 ↩ 1
质量非常优异的视频,up主做的相当用心
♥ 11 ↩ 1
这是我的世界柏林噪声算法[doge]
♥ 9 ↩ 1
视频深度有深有浅,做得很不错。不过我对数学完全不理解,所以看到40秒后直接跳跃到了5分钟开始。能否这样总结视频:先把复杂的自然界拆解为纯粹的地形起伏,从如何生成泰拉瑞亚这样的2D平面的地形起伏开始研究,可以观察到,声波的起伏很像地形的起伏,通过数学上的各种加工和处理使得声波更接近于自然的地形起伏,再对这个波进行采样,就变成了一个个方块组成的地表,后续经过改进,可以让平面的地表变成立体的地表,并在地表之下挖出洞穴之类的结构。之后再使用其他算法生成植被、生物、矿石就可以构建出一个minecraft[哦呼]
♥ 6 ↩ 2
柏林噪声可以生成地形,但如果加入群系,以及群系之间的过度Voronoi的效果很好,但是很消耗性能。
♥ 5
问:我们可以验证这两个三次和五次函数的导数或是二阶导数刚好为0,但是我们是怎么发现他们的? 答:别问,问就是微分方程(此处放恐怖音乐)
♥ 4 ↩ 1
一不留神就看完了,我将严肃逐帧学习[tv_思考]
♥ 4 ↩ 1
靠,从1分钟的时候就没看懂,是我硬件不行还是前置mod没安装
♥ 3 ↩ 1
md,刚学完计算方法就给我看这个是吧
♥ 3
好懂,我学会了!柏林噪声大概就是随机生成斜率加预处理t的线性插值是吗[星幕回响_甩葱]
♥ 2
支持一下,加油
♥ 2 ↩ 1
这个讲的透彻
♥ 2 ↩ 1
支持一下up[给心心]
♥ 2 ↩ 1
怎么样把二维噪声映射到三维的山峦上呀?这是什么网站?
♥ 1 ↩ 1
[哦呼]游戏领域是编程区数学最好的大众领域了吧[少女乐团派对_期待]感觉自从开始学习游戏制作就开始变成数学大蛇了[FGO_尴尬]
♥ 1
要晕倒了
♥ 1
死去的高数在攻击我
♥ 1
那如果想更真实的模仿现实世界的地形该怎么搞?
♥ 1 ↩ 5