编辑“︁
Perlin噪声
”︁(章节)
跳转到导航
跳转到搜索
警告:
您没有登录。如果您进行任何编辑,您的IP地址会公开展示。如果您
登录
或
创建账号
,您的编辑会以您的用户名署名,此外还有其他益处。
反垃圾检查。
不要
加入这个!
=== 经典Perlin噪声 === Perlin在上述文章中提出了一种产生符合要求的一维噪声[[函数]]的简单方法,这是后续工作的基础: # 在一维坐标轴上,选择等距的无穷个点,将值空间划分为等长的线段(为方便起见,选择坐标值为整数的点),为每个点随机指定一个值{{來源請求}}; # 对于坐标值为整数的点,将该点对应的值作为噪声图像上该点的值;对于坐标值不为整数的点,将相邻两点的值进行[[插值]]运算,获得该点的数值(灰度)。 插值使用的函数是一个在0处为1,在1处为0,在0.5处为0.5的连续单调减函数。例如,设 <math>c_0, c_1</math> 为左右两整数点的数值,<math>t</math> 为该点距离左边点的距离,使用 <math>(1-t)</math> 作为插值函数,则该点的值为 <math>c_1(1-t) + c_0t</math>。 <math>(1-t)</math> 是线性插值,得到的结果人工痕迹严重,且在整数点上不连续。Perlin建议使用 <math>3t^2 - 2t^3</math> 作为插值函数 <ref name=PERLIN85/>,后来又建议使用 <math>6t^5-15t^4+10t^3</math> 作为插值函数<ref name=PERLIN02>{{cite book en|author=Ken Perlin|title=Improving noise|booktitle=SIGGRAPH '02: Proceedings of the 29th annual conference on Computer graphics and interactive techniques|year=2002|isbn=1-58113-521-1|pages=681--682|publisher=ACM}}</ref>;事实上,只要是在区间[0,1]内连续的函数<math>f</math>,有<math>f(0)=1</math>,<math>f(1)=0</math>且<math>f'(0)=f'(1)=0</math>的函数皆可做为插值函数。实际应用如下:设<math>f</math>为插值函数,插值结果为<math>c_0f(1-t) + c_1f(t)</math>。 对于二维的情况,可以将上述算法进行推广,即: # 为所有坐标为 <math>(x, y)</math> 且 <math>x, y</math> 都是整数的点指定一个值,同时指定一个[[梯度]],这些点将空间分成方格; # 对于坐标轴为整数的点,即上述方格的顶点,将为它指定的值作为该点的值;对于某个方格内部的点 <math>(x, y)</math>,用所在方格四个顶点的值和[[梯度]]进行插值。 例如,对于点 <math>(x, y)</math>,令 <math>i = \lfloor x \rfloor, j = \lfloor y \rfloor</math> 它所在方格的四个顶点分别为: <math>(i, j)</math>、<math>(i+1, j)</math>、<math>(i+1, j+1)</math>、<math>(i, j+1)</math>。令 <math>u=x-i, v = y-j</math>,这四个顶点对点 <math>(x, y)</math> 的贡献可以用它们的[[梯度]](<math>g_{00}, g_{10}, g_{11}, g_{01}</math>)和 <math>(x, y)</math> 点与这四个顶点的方向(<math>(u, v)</math>、<math>(u-1, v)</math>、<math>(u-1, v-1)</math>、<math>(u, v-1)</math>)进行点积获得。但是在二维的情况下,插值更为复杂。首先需要对 <math>(i, j)</math> 和 <math>(i+1, j)</math> 两点在 <math>x</math> 方向插值,得到点 <math>(x, j)</math> 的值;之后对 <math>(i, j+1)</math> 和 <math>(i+1, j+1)</math> 两点在x方向插值,得到点 <math>(x, j+1)</math> 的值;最后对 <math>(x, j)</math> 和 <math>(x, j+1)</math> 在 y 方向插值,得到 <math>(x, y)</math> 的值。 在三维的情况下,需要进行七次插值。可以证明,插值次数随着维数的增长指数增长。 经典Perlin噪声基本满足Perlin提出的噪声条件。但是由于 <math>3t^2 - 2t^3</math> 导数中含有线性分量,在计算相邻点差时会体现出人工效果,不够自然。经典Perlin噪声在进行下文的分形和运算后效果不够自然<ref name=PERLIN02/>。
摘要:
请注意,所有对Local Chinese Wikipedia的贡献均可能会被其他贡献者编辑、修改或删除。如果您不希望您的文字作品被随意编辑,请不要在此提交。
您同时也向我们承诺,您提交的内容为您自己所创作,或是复制自公共领域或类似自由来源(详情请见
Project:著作权
)。
未经许可,请勿提交受著作权保护的作品!
取消
编辑帮助
(在新窗口中打开)
导航菜单
个人工具
未登录
讨论
贡献
创建账号
登录
命名空间
页面
讨论
大陆简体
不转换
简体
繁體
大陆简体
香港繁體
澳門繁體
大马简体
新加坡简体
臺灣正體
查看
阅读
编辑
查看历史
更多
搜索
导航
首页
最近更改
随机页面
MediaWiki帮助
工具
链入页面
相关更改
特殊页面
页面信息