将柏林噪声添加到 THREE.js r121
adding perlin noise to THREE.js r121
我一直在努力寻找一个很好的教程来为更新版本的 THREE.js 添加 perlin 噪声。我找到了许多教程和示例,但当我将 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;
}
}
那么有人知道如何让某些版本的 perlin noise 工作吗?我正在尝试创建地形。
https://codepen.io/jfirestorm44/pen/mdEEwqb?editors=0010
谢谢
您检查浏览器控制台错误了吗?它应该是您检查的第一件事。
我看到错误 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<100;i++) {
,我很确定您希望从 0 开始。for(let i=0;i<100;i++) {
总是可以选择像这样在着色器中进行置换 3d example, only in 2d
我一直在努力寻找一个很好的教程来为更新版本的 THREE.js 添加 perlin 噪声。我找到了许多教程和示例,但当我将 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;
}
}
那么有人知道如何让某些版本的 perlin noise 工作吗?我正在尝试创建地形。
https://codepen.io/jfirestorm44/pen/mdEEwqb?editors=0010
谢谢
您检查浏览器控制台错误了吗?它应该是您检查的第一件事。
我看到错误 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<100;i++) {
,我很确定您希望从 0 开始。for(let i=0;i<100;i++) {
总是可以选择像这样在着色器中进行置换 3d example, only in 2d