当前位置: 首页 > news >正文

福州seo按天付费网站建设推广优化

福州seo按天付费,网站建设推广优化,wordpress 独立应用页面,wordpress poedit最近发现项目里很多shader都需要噪声图,(shadergraph中有自己的噪声图生成)当遇到需要噪声图时去寻找很麻烦,所以从网上查阅资料编写了一个Unity扩展的噪声图生成。 Perlin噪声 Perlin噪声是一种渐变噪声算法,由Ken …

最近发现项目里很多shader都需要噪声图,(shadergraph中有自己的噪声图生成)当遇到需要噪声图时去寻找很麻烦,所以从网上查阅资料编写了一个Unity扩展的噪声图生成。

Perlin噪声

Perlin噪声是一种渐变噪声算法,由Ken Perlin于1983年发明,用于在计算机图形学中生成具有连续和平滑变化的随机纹理。它常用于模拟自然形状,例如山脉、云层、水波等,也可以用于增加纹理的细节和真实感。

Perlin噪声的生成过程如下:
将空间分割成一系列规则的网格单元(通常是正方形或立方体)。

在每个网格单元的顶点位置上随机生成一个梯度向量(通常是二维或三维的)。

对于每个空间点,计算它在网格单元内的位置,并根据梯度向量和位置计算其与网格顶点之间的插值。插值可以使用不同的方法,如线性插值、立方插值等。

将不同网格单元的插值值加权相加,得到最终的Perlin噪声值。
Unity中有可用的数学库

Mathf.PerlinNoise(xCoord, yCoord)

他使用一个二维的随机向量代替了原来的随机值,让各个点之间产生一定的梯度变换,使生成的噪声图几乎感觉不到明显的块状感。
在这里插入图片描述

直接调用即可

Simple噪声

简单噪声(Simple Noise),也称为Value Noise,是一种较为简单的噪声算法。它与Perlin噪声相比较简单,不涉及梯度向量的计算,而是在离散的网格点上生成随机值,然后使用插值算法来获得介于这些随机值之间的噪声值。

简单噪声的生成过程如下:

将空间分割成一系列规则的网格单元(通常是正方形或立方体)。

在每个网格单元的顶点位置上随机生成一个随机值(通常在0到1之间)。

对于每个空间点,计算它在网格单元内的位置,并根据顶点的随机值进行插值。插值可以使用不同的方法,如线性插值、立方插值等。

得到该点的噪声值,作为简单噪声纹理的一部分。

简单噪声相比Perlin噪声计算较快,因为它不需要复杂的梯度计算。然而,简单噪声在生成的纹理中可能会显示出较明显的棱角和分割线,这是因为插值的方式相对简单,造成噪声的变化不够平滑。

   //线性差值 1接近Y 0接近Xfloat mix(float x, float y, float level){return x * (1 - level) + y * level;}float value_noise(Vector2 coord){Vector2 i = floor(coord);Vector2 f = fract(coord);// 4 corners of a rectangle surrounding our pointfloat tl = rand(i);float tr = rand(i + new Vector2(1.0f, 0.0f));float bl = rand(i + new Vector2(0.0f, 1.0f));float br = rand(i + new Vector2(1.0f, 1.0f));Vector2 cubic = f * f * (new Vector2(3.0f, 3.0f) - 2.0f * f);float topmix = mix(tl, tr, cubic.x);float botmix = mix(bl, br, cubic.x);float wholemix = mix(topmix, botmix, cubic.y);return wholemix;}

“状块感”
在这里插入图片描述

Cellular Noise(细胞噪声)

是一种模拟细胞结构的噪声生成算法。它在计算机图形学和游戏开发中被广泛应用于生成具有细小颗粒、斑点、孔洞和均匀分布的纹理。细胞噪声的原理是将空间划分为许多规则或不规则的细胞,并在每个细胞中随机生成一个点,然后计算其他点到最近点的距离。这些距离被用来生成噪声图。

细胞噪声的生成过程如下:

将空间分割为一系列规则或不规则的细胞。

在每个细胞中随机生成一个点,称为“特征点”(Feature Point)。

对于每个空间点,计算它到最近的特征点的距离。通常使用欧氏距离或曼哈顿距离等来计算距离。

可以根据距离来生成噪声值,例如使用距离的倒数或距离的逆平方等函数来计算噪声值。

细胞噪声常用于模拟斑点状纹理、分布均匀的粒子、皮肤纹理、地形等效果。它可以生成有机感和自然感的纹理,因为它基于类似于细胞的结构,而不是简单的随机值。细胞噪声在游戏开发和计算机图形学中是非常有用的工具,可以用于增强视觉效果和增加纹理的复杂性。

float cellular_noise(Vector2 coord){Vector2 i = floor(coord);Vector2 f = fract(coord);float min_dist = 99999.0f;// going through the current tile and the tiles surrounding itfor (float x = -1.0f; x <= 1.0; x++){for (float y = -1.0f; y <= 1.0; y++){// generate a random point in each tile,// but also account for whether it's a farther, neighbouring tileVector2 node = rand2(i + new Vector2(x, y)) + new Vector2(x, y);// check for distance to the point in that tile// decide whether it's the minimumfloat dist = Mathf.Sqrt((f - node).x * (f - node).x + (f - node).y * (f - node).y);min_dist = Mathf.Min(min_dist, dist);}}return min_dist;}

细胞
在这里插入图片描述

随机用的伪随机生成,后续贴出全部代码

FBM

分形布朗运动噪声,是一种基于分形技术的噪声生成算法。它通过多次叠加不同频率和幅度的噪声图层来生成复杂的纹理效果。FBM噪声常用于生成具有细节层次的纹理,如云朵、火焰、波浪等效果。

FBM噪声的生成过程如下:

将空间分割为一系列规则或不规则的网格单元(通常是正方形或立方体)。

在每个网格单元的顶点位置上随机生成一个噪声值(通常在0到1之间)。

对于每个空间点,计算它在网格单元内的位置,并根据顶点的噪声值进行插值。插值可以使用不同的方法,如线性插值、立方插值等。

将不同网格单元的插值值加权相加,并乘以一个缩放因子,得到最终的FBM噪声值。

FBM噪声的特点是可以通过调整不同图层的频率和幅度来控制纹理的细节和粗糙程度。通过增加图层的数量和缩放因子,可以使纹理呈现出更加复杂和自然的效果。FBM噪声可以模拟自然界中的许多复杂的现象,使得生成的纹理具有更加真实和细致的外观。

loat fbm(Vector2 coord){int OCTAVES = 4;float normalize_factor = 0.0f;float value = 0.0f;float scale = 0.5f;for (int i = 0; i < OCTAVES; i++){value += Mathf.PerlinNoise(coord.x, coord.y) * scale;normalize_factor += scale;coord *= 2.0f;scale *= 0.5f;}return value / normalize_factor;}

FBM噪声通过多次叠加不同频率的Perlin噪声图层来生成,因此可以生成更加复杂和多样化的纹理,具有更丰富的细节层次。
多次Perlin
在这里插入图片描述
用到的一些数学库

  Vector2 mod(Vector2 coord, float a){return new Vector2(coord.x % a, coord.y % a);}float fract(float x){return x - Mathf.Floor(x);}Vector2 fract(Vector2 x){return new Vector2(x.x - Mathf.Floor(x.x), x.y - Mathf.Floor(x.y));}Vector2 floor(Vector2 x){return new Vector2(Mathf.Floor(x.x), Mathf.Floor(x.y));}float rand(Vector2 coord){// prevents randomness decreasing from coordinates too largecoord = mod(coord, 10000.0f);// returns "random" float between 0 and 1return fract(Mathf.Sin(Vector2.Dot(coord, new Vector2(12.9898f, 78.233f))) * 43758.5453f);}//线性差值 1接近Y 0接近Xfloat mix(float x, float y, float level){return x * (1 - level) + y * level;}Vector2 rand2(Vector2 coord){// prevents randomness decreasing from coordinates too largecoord = mod(coord, 10000.0f);// returns "random" vec2 with x and y between 0 and 1return fract((new Vector2(Mathf.Sin(Vector2.Dot(coord, new Vector2(127.1f, 311.7f))), Mathf.Sin(Vector2.Dot(coord, new Vector2(269.5f, 183.3f))))) * 43758.5453f);}

取模运算,取小数部分,取整数部分,伪随机代码
自己来实现一个随机函数,并且这个随机函数是 ”可控的“ ,相同的输入要得到相同的输出。

 void SaveTexture(Texture2D texture){byte[] bytes = texture.EncodeToPNG();//读取图像为PNGvar dirPath = Application.dataPath + "/" + AssetsName + "/";//当前文件夹路径Debug.Log("生成路径:" + dirPath);//生成路径位置if (!Directory.Exists(dirPath)){Directory.CreateDirectory(dirPath);//没有路径则生成}for (int i = 0; i < 1000; i++){if (!File.Exists(dirPath + "Image" + "(" + i + ")" + ".png")){File.WriteAllBytes(dirPath + "Image" + "(" + i + ")" + ".png", bytes);//写入文件里面break;}}}Texture2D GenerateTexture(){Texture2D texture = new Texture2D(width, height);//新建贴图for (int x = 0; x < width; x++){for (int y = 0; y < height; y++){Color color = CalculateColor(x, y);//计算颜色,遍历像素texture.SetPixel(x, y, color);//设置像素颜色}}texture.Apply();//应用贴图修改return texture;}

图像文件保存

一些参考材料

Unity实现噪声图(Perlin Noise)的制作
使用Unity生成各类型噪声图的分享
FBM分形布朗运动
噪声函数的基本生成方式
后续我会上传.cs文件
点击此次下载

http://www.hrbkazy.com/news/24869.html

相关文章:

  • 做网站的一般步骤seo快速排名关键词
  • wordpress adminajax.php搜索引擎优化的基本方法
  • 自己做网站系统必应搜索引擎首页
  • 做网站需要学会哪些北京网站优化排名
  • 企业网站优化设计应该把什么放在首位seo网站优化培训价格
  • 重庆电商网站友缘在线官网
  • wordpress安装完成访问不了seo标签怎么优化
  • 深圳定制建设网站微博营销成功案例8个
  • 有经验的南昌网站制作外贸网络营销推广
  • 实验室网站建设的意义网络营销的五大优势
  • 北京建网站公司推广标题怎么写
  • 老河口建设局网站杭州seo网站
  • 静态网页制作总结王通seo赚钱培训
  • 济南网站建设哪家公司好网站优化公司收费
  • 模板网站怎么做网站seo置顶 乐云践新专家
  • 广西两学一做网站武汉seo首页优化技巧
  • b站直接进入链接2023百度推广公司哪家比较靠谱
  • 专门做装修的网站有哪些交换链接的例子
  • 美观网站建设物美价廉java培训机构十强
  • 上海网站优化哪家好seo视频
  • seo网站开发零基础能做网络推广吗
  • wordpress两个站合并百度推广网页版
  • 寻找做项目的网站宁波如何做抖音seo搜索优化
  • 宁波做网站的大公司有哪些百度推广开户电话
  • 免费建立国外网站国外最好的免费建站
  • 建网站 免费中国培训网官网
  • 我国十大b2c网站网站后台管理系统
  • 企业网站如何做自然搜索域名注册需要哪些条件
  • 市建设局网站的综合业务管理平台自动提取关键词的软件
  • 帮境外赌场做网站是否有风险查询网138网站域名