【问题标题】:adding perlin noise to THREE.js r121将 perlin 噪声添加到 THREE.js r121
【发布时间】:2020-10-21 20:53:40
【问题描述】:

我一直在努力寻找一个很好的教程来将 perlin 噪声添加到新版本的 THREE.js 中。我找到了很多教程和示例,但是当我将 r121 添加到组合中时,它们似乎都崩溃了。

我使用来自 jeromeetienne.github.io 的脚本尝试了 Codepen 的一个很好的示例

我也试过这个家伙的教程和文件http://www.stephanbaker.com/post/perlinterrain/

我尝试了其他几个,但没有运气。我确信这是由于使用了三个版本。我能找到的大部分内容都使用旧版本的 THREE.js。我已经分叉了其他人拥有的东西,它适用于他们正在使用的旧版本,但不适用于新版本。

 //land
 let landGeo = new THREE.PlaneGeometry(500,500, 50, 50);
  let landMat = new THREE.MeshStandardMaterial({
color:'green'
})
land = new THREE.Mesh(landGeo, landMat);
  scene.add(land);
noise.seed(Math.random());
for(let i=1;i<100;i++) {
  for(let j=1;j<100;j++) {
   var value = noise.simplex2(i / 100, j / 100);
    // ... or noise.simplex3 and noise.perlin3:
//    var value = noise.simplex3(i / 100, j / 100, clock);

    landGeo[i][j].r = Math.abs(value) * 256; 
  }
}

那么有谁知道如何使某些版本的柏林噪声工作?我正在尝试创建地形。

https://codepen.io/jfirestorm44/pen/mdEEwqb?editors=0010

谢谢

【问题讨论】:

    标签: three.js perlin-noise


    【解决方案1】:

    您是否检查了浏览器控制台错误?这应该是您检查的第一件事。
    我看到错误Cannot read property '1' of undefined
    这告诉我landGeo[i][j].r = Math.abs(value) * 256;这行有问题
    顶点位于一维数组中,并且是矢量对象。我很确定应该是:
    landGeo.vertices[i+j].z = Math.abs(value) * 256;.

    另外,我不确定您是否使用正确的参数调用噪声函数,但我可能是错的,您可能希望它是这样的。
    var value = noise.simplex2(i / 100, j / 100);

    另外,你的 for 循环从 1 开始,for(let i=1;i&lt;100;i++) {,我很确定你想从 0 开始。for(let i=0;i&lt;100;i++) {

    始终可以选择在 3d example 这样的着色器中进行置换,仅在 2d 中进行

    【讨论】:

    • 你好。我确实尝试将其更改为landGeo.vertices...,但错误是相同的,只是更改为该名称。这与我不断遇到的错误相同。我已将循环从 0 更改为 1,因为在我尝试的一种方法中,我收到了关于 [0] 未定义的错误。我已经将几个教程中的直接复制和粘贴到我的验证、变量和其他信息匹配但我在加载 r121 时一直收到该错误。
    • 请注意,“顶点位于一维数组中”,landGeo[i][j] 变为 landGeo.vertices[i+j]。您必须更改它和从 0 开始的循环以避免错误。我在您的 codepen 中更改了这些并渲染了场景。
    • 很好,它处理了错误,现在它呈现了。可能是我应该知道的基本 js 语法。现在我只需要在我的飞机上发出一些噪音。我会玩一会儿,看看我能得到什么。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 2014-02-15
    • 2020-06-06
    • 2011-09-20
    • 2021-06-30
    • 2013-07-23
    • 2020-06-22
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多