npm 包 pf-value-noise 使用教程

阅读时长 9 分钟读完

背景

在前端开发中,经常需要使用到数字噪声来模拟某些效果,比如火焰、云朵、山脉等等。pf-value-noise 是一个 npm 包,可以生成 PerlinNoise 和 SimplexNoise,用于模拟这些效果。

安装

使用 npm 安装 pf-value-noise:

使用

简单使用

下面是一个简单的示例,创建一个 SimplexNoise 并使用它生成数值噪声,然后将结果在控制台输出:

这里使用了 SimplexNoise,当然也可以使用 PerlinNoise,只需要将 new PF.SImplexNoise() 换成 new PF.PerlinNoise() 即可。

配置选项

在创建噪声对象时,我们可以传递一些配置选项,来控制数值噪声的生成效果。下面是一个示例,使用配置选项创建一个 SimplexNoise,然后使用它生成数值噪声:

-- -------------------- ---- -------
----- -- - --------------------------
----- ----- - --- -----------------
  ------- ------------
  -------- --
  ---------- --
  ---------- ----
  ------------ -----
---

----- ----- - --------------- ------
-------------------

这里我们指定了以下配置选项:

  • random: 随机数生成器函数。如果不指定,则使用默认的 Math.random。
  • octaves: 噪声采样次数。默认为 1。
  • frequency: 噪声频率。默认为 1。
  • amplitude: 噪声振幅。默认为 1。
  • persistence: 噪声持续程度。默认为 0.5。

以上所有选项都是可选的,如果不传递这些选项,会使用默认值。

生成不同维度的噪声

pf-value-noise 支持生成不同维度的噪声,包括二维和三维噪声。下面是一个二维噪声的示例,使用 SimplexNoise 生成二维噪声,并将结果绘制到 canvas 上:

-- -------------------- ---- -------
----- ------ - ---------------------------------
----- --- - ------------------------
----------------------------------

------------ - ----
------------- - ----

----- ----- - --- ------------------
----- ---- - --- ------------------ - ---------------

--- - - --
--- ---- - - -- - - -------------- ---- -
  --- ---- - - -- - - ------------- ---- -
    ------- - ------------- - --- - - ----
    ----
  -
-

----- --------- - --------------------------------- ---------------
--- ---- - - -- - - ------------ ---- -
  ---------------- - -- - ---------------- - - - -- - ---------------- - - - -- - ---------------------------- - -----
  ---------------- - - - -- - ----
-
--------------------------- -- ---

噪声的应用

使用 pf-value-noise 可以方便地生成各种数字噪声,在前端开发中应用非常广泛,这里只列举一些简单的应用。

火焰效果

火焰效果可以使用 PerlinNoise 来模拟,下面是一个简单的代码示例:

-- -------------------- ---- -------
----- ------ - ---------------------------------
----- --- - ------------------------
----------------------------------

------------ - ----
------------- - ----

----- ----- - --- ----------------
  -------- --
  ---------- ----
---

-------- ------ -
  ----- --------- - --------------------------------- ---------------
  --- - - --
  --- ---- - - -- - - -------------- ---- -
    --- ---- - - -- - - ------------- ---- -
      ----- ----- - ------------- - ------------ - -- - - ------------- - -- - --- - ----
      ----- ----- - ----- --- - ----- - ---- --- - ----- - ----- - ---- -----
      ---------------- - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ---------
      ----
    -
  -
  --------------------------- -- ---
  ----------------------------
-

-------

云朵效果

云朵效果也可以使用 PerlinNoise 来模拟,下面是一个简单的代码示例:

-- -------------------- ---- -------
----- ------ - ---------------------------------
----- --- - ------------------------
----------------------------------

------------ - ----
------------- - ----

----- ----- - --- ----------------
  -------- --
  ---------- -----
  ---------- ----
  ------------ -----
---

-------- ------ -
  ----- --------- - --------------------------------- ---------------
  --- - - --
  --- ---- - - -- - - -------------- ---- -
    --- ---- - - -- - - ------------- ---- -
      ----- ----- - ------------- - ------------- - - ---------------
      ----- ----- - ---- - ----- - ---- --- - ----- - ---- -----
      ---------------- - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ----
      ----
    -
  -
  --------------------------- -- ---
  ----------------------------
-

-------

地形效果

地形效果可以使用 SimplexNoise 来模拟,下面是一个简单的代码示例:

-- -------------------- ---- -------
----- ------ - ---------------------------------
----- --- - ------------------------
----------------------------------

------------ - ----
------------- - ----

----- ----- - --- -----------------
  -------- --
  ---------- ------
  ---------- ----
  ------------ -----
---

-------- ------ -
  ----- --------- - --------------------------------- ---------------
  --- - - --
  --- ---- - - -- - - -------------- ---- -
    --- ---- - - -- - - ------------- ---- -
      ----- ----- - ---------------------- - ------------ - -- - - ------------- - ----
      ----- ----- - ------ - ---- ----- - ---- ----- - -----
      ---------------- - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ---------
      ---------------- - - - -- - ----
      ----
    -
  -
  --------------------------- -- ---
  ----------------------------
-

-------

以上代码示例只是简单的效果演示,实际应用中需要根据具体场景进行调整。

总结

pf-value-noise 是一个简单易用的 npm 包,可以方便地生成数字噪声,用于模拟各种效果。它支持多种配置选项,可以生成不同维度、不同参数的数值噪声。通过使用 pf-value-noise,我们可以轻松地实现各种复杂效果,从而提高前端开发效率。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600671a730d092702382267b

纠错
反馈