技术美术教程,生成连续的2D、3D细胞噪声 |
您所在的位置:网站首页 › 简单的像素图怎么做 › 技术美术教程,生成连续的2D、3D细胞噪声 |
传送门闲聊 最早学习细胞噪声是为了做体积云,之前写柏林噪声积累了经验,写新噪声应该能轻松不少吧? 我离准点下班又近了一步 然而,事实是 核心算法计算过程细胞噪声是怎么计算的呢,先看一张图,下图是256x256的细胞噪声 我们将其拆分为16个格子 为了方便讲解,把图片外的格子也画出来 在每个格子内放入一个随机点 所有像素点的计算方法都是一致的,这里拿P点举例 先找到P点所在的格子 先算出P点至周围9个点的距离 float GetDistance(float3 pnt0, float3 pnt1) { return distance(pnt0, pnt1); } float distances[9]; distances[0] = GetDistance(P, A); distances[1] = GetDistance(P, B); distances[2] = GetDistance(P, C); distances[3] = GetDistance(P, D); distances[4] = GetDistance(P, E); distances[5] = GetDistance(P, F); distances[6] = GetDistance(P, G); distances[7] = GetDistance(P, H); distances[8] = GetDistance(P, I);找出离P点最近的距离 float closestDistance = 999999; float secondClosestDistance = 999999; float thirdClosestDistance = 999999; for(int iii = 0; iii 连续性接下来我们再讨论下噪声的连续性,以P1和P2为例 P1、P2的噪声值由到各自周围9个点的距离决定,只要保证9个距离是一致的,两点的噪声值就相等,即左右连续 3D噪声是同样的原理,只不过多了一个维度,计算量要大些 分形噪声(FBM)这是一张频率为4的细胞噪声 图A频率为8的细胞噪声 图B频率为16的细胞噪声 图C分形噪声 = 图A + 图B * 0.5 + 图C * 0.25,即多张噪声图叠加,每次频率翻倍,强度减半,叠加得到的图是这样 细胞噪声的原理讲完了,有没有觉得很简单呢?感兴趣的同学可以挑战下! 工具分享工作中经常会有使用噪声的需求,虽然网上有很多噪声工具,但这些工具和项目需求总有些不匹配,就索性自己写了一个,这里分享给大家,有需要的同学可以免费下载使用 主要功能生成2D、3D细胞噪声,支持四方、六方连续,以单通道保存(R8) 自定义FBM 演化动画 ComputeShader计算,运行性能良好 下载地址Github:https://github.com/MagicStones23/Unity-Shader-Tutorial-Seamless-2D-3D-Worley-Noise 百度网盘:https://pan.baidu.com/s/1wyeZGxh_GJTIUuI0-LjWcA?pwd=1111 提取码:1111 工具教程Unity版本是2021.3 点击Generate生成噪声,点击SaveToDisk将噪声保存到本地 主要参数说明SaveToDiskPath:保存路径 Resolution:分辨率 Frequency:频率 Is3D:生成3D噪声 IsTilable:生成连续的噪声,需要保证频率>=4,分辨率/频率=整数,例如 256 / 4,256 / 8 FbmIteration:分形噪声迭代次数 RemapTo01:将噪声值重新映射到[0,1] Invert:将噪声值反相 ReturnType:风格 Evolution:演化动画,需要配合脚本使用 提示:3D噪声的内存占用和运算量都比较大,生成3D噪声时,分辨率最好不要超过256(除非你的显卡很棒) 示例默认2D噪声 ReturnType = IrregularRock 开启反相 关闭/开启连续 不连续四方连续开启重映射,开启反相,FbmIteration = 2 演化,演化功能需要配合脚本使用 public class WorleyNoise_Test_Evolution : MonoBehaviour { public float evolutionSpeed; public WorleyNoise worleyNoise; private void FixedUpdate() { float time = Time.realtimeSinceStartup; if (time % 3关闭/开启连续 不连续六方连续开启重映射,开启反相,FbmIteration = 2 主页 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |