Value Noise(一)

20 篇文章 1 订阅
16 篇文章 4 订阅

  Value noise(值噪声)原本应该放在噪声系列开篇来讲,因为Value噪声起到一个承上启下的作用(承白噪声,启Perlin噪声),同时因为学习难度低,可以为Perlin噪声学习铺路。但之前我们已经学习了Perlin噪声了,现在反过来学习Value噪声感觉有些本末倒置,但没有Value噪声,本系统又显得不够完整,所以我们还是将他写出来,同时我们将更加深入的理解噪声,学习一些高级的知识点。

一、再议噪声

  ”To the physicist, unpredictable changes of any quantity V varying in time t are known as noise.” (The Science of Fractal Images, Richard F. Voss).

  在CG中,我们可以用图像来增加物体外观的视觉复杂性,这称为纹理映射。但我们需要知道,用纹理映射将消耗较多的内存来存储纹理,同时更重要的是创造出来的世界是空心的(以后我们会学习创造实心的物体)。如果不用纹理,用纯色渲染的对象看起来又太干净了,我们需要一些东西来调节视觉特性打破这种干净的外观(颜色、光泽)。在编程中,每当需要创建随机数时,我们通常使用随机数生成器,然而采用RNG(随机数发生器)来达到影响对象外观往往不足够。自然界中我们可以观察到的随机图案通常是光滑,真实物体表面上的两个点在彼此相当接近的时候通常看起来几乎一样,但是相距很远的同一物体表面上的两个点看起来很不一样。换言之,局部变化是渐进的,而全域变化可能是大的,而RNG却没有这个属性,这是因为每次我们调用它们时,它们都返回不相关(独立)的数字,这不适合在空间上接近两个点的视觉外观上做一个细微的改变。如下图所示:

这里写图片描述

  我们在岩石图上可以清晰的观察到刚才我们说的,在自然界中,万物都是讨厌突变的,圆润平滑才是大自然呈现给我们的景象。而随机数发生器生成的图像会让我们感到压抑和不安。
这里写图片描述

  这是我们生成的白噪声图像,这不是我们想要的,我们需要平滑的噪声来模拟大自然。事实上,现在在真实世界中的很多景观呈现模式(Patterns)都可以通过程序纹理重新生成,噪音可以在这些模式需要表现出某种随机性的任何地方使用,它可以通过改变密度来模拟云层,也可以使用一个平面来模拟水波。噪声的发展给计算机图形学的研究带来了全新的领域,噪音可以被看作是一个基本的积木,从中可以产生许多有趣的程序纹理,在程序纹理的世界中,可以生成许多类型的纹理,这些纹理并不总是像自然模式一样,有些模式可以是规则的、不规则的或随机的(非确定性的)。除了常规的模式(只服从几何规则和完美数学模型),所有其他的模式可以引入噪声增加随机性来更真实的模拟自然物体,现在很多人开始使用程序纹理来模拟复杂的材料、物品,如地形、云彩或动画的水面。噪声不仅限于改变对象的视觉外观,还可以用于程序建模,以代替物体的表面(用于生成地形)或控制体积密度(云建模),这也将是我们下一步将要学习的体渲染,体渲染出来的对象是有血有肉、丰盈饱满的,而不仅仅是只有一层皮。

  噪声具有紧凑的优点,与纹理映射相比,它使用的内存不多,实现噪声函数不是很复杂(噪声函数只需要很少的数据存储),因此,我们可以利用程序纹理创建大量的纹理(无限大的纹理或者或者是高质量的纹理)。当然,程序纹理通常比纹理映射慢,噪声函数需要执行相当多的数学运算(即使它们很简单,也有相当多的操作),而纹理映射只需要访问加载在内存中的纹理(图像文件)的像素。

二、噪声特点

  在图形学中,理想噪声所应该具备伪随机、有限带通、抗锯齿、无缝、统计不变性等所有属性,当然,并不是每一个噪声函数的实现都匹配它们。

  噪声是伪随机的,这是他的主要属性。它看起来是随机的,但是却是确定性的,给定相同的输入,它总是返回相同的值,即效果是可重现的,如果给一个CG渲染几次图像,我们希望保持图像的一致性/可预测性,或者,如果将这种噪声模式应用到平面上,则希望该模式从帧到帧保持不变。

  对噪声来讲,不管输入值的维度是多少,噪声函数总是返回一个浮点数。我们按照输入的维数给出他们的命名:1D、2D、3D、4D噪声函数是以一维、二维、三维和四维点作为输入参数的函数。在数学术语中,我们说,噪声函数是从R(n)到R的映射(其中n是传递给噪声函数的值的维数),它以n作为输入的n维点,并返回一个浮点数。

  噪声主要是一个函数,你也可以把它看作一个信号(如果你绘制函数,你得到一个曲线,这就是你的信号)。在信号处理中,可以提取信号并将其从空域转换到频域,通过变换,从中可以看到信号的组成频率(数字图像处理的方法主要分成两大部分:空域分析法和频域分析法。空域分析法就是对图像矩阵进行处理;频域分析法是通过图像变换将图像从空域变换到频域,从另外一个角度来分析图像的特征并进行处理)。噪声函数可以是由多个频率组成的(低频占大范围的变化,高频占小的变化),其中的一个频率占主导地位,这一频率定义了视觉的外观和特性。

  理想噪声应该具备统计不变性,不管我们怎么旋转它的域,它都有同样的统计特性(旋转统计不变性),不管我们如何平移它的域,它都有同样的统计特性(平移统计不变性)。

  理想情况下,我们可能需要平铺的纹理,这样就可以得到一个无限大的区域而看不见接缝,任何纹理只有是无缝的才能平铺。理想情况下,噪声函数应该被设计成这样的周期性模式。

  噪声使用平滑的函数来模糊在晶格点产生的随机值。在数学中,连续性和可微性是函数的重要特性,从几何上形象的说,连续函数在坐标系上的图像是一条连续不间断的曲线,对一元函数,连续性和可微性是等价的,它是函数增量与自变量增量之间关系的另一种表达,函数的微分是函数增量的线性主要部分,可微和可导是等价的。一元函数的可导性是比连续性更强的性质,可导必连续,而连续未必可导。下图则是很好例子:

这里写图片描述

   在上图中,左图的导数即是曲线在该点(红点)的切线,中图则是明显不连续,右图则是连续但不可导。对于我们来讲,我们要想得到最后的值连续光滑,则需要选择一个连续且可导的缓释函数。

三、Value噪声

  根据前文,我们希望我们的噪声平滑而不尖锐,要得到平滑的过渡最简单的方式就是模糊,或者说在不同值之间进行插值。在不同点之间进行插值,我们首先会想到的就是晶格,在二维中,晶格就是这样的方格:

这里写图片描述

  我们想要在晶格中进行插值计算,我们首先需要定义在各晶格点上的值,如下图所示:

这里写图片描述

  然后,根据输入点的值,我们进行二次线性插值得到最后的噪声值,如下图所示:

这里写图片描述

  这就是Value噪声原理。

参考文献

1、Generating Noise for applications。Generating Noise for applications
2、Value Noise and Procedural Patterns。Value Noise and Procedural Patterns

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

_DavidWang_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值