我想在p5.js中繪製一個Perlin噪聲圖像。我遵循Daniel Shiffman的教程,他舉例說明如何設置2D Perlin噪音here(爲了方便,我已將其加載到this JSFiddle sketch中)。如何在p5.js中將未失真的二維Perlin噪聲視爲圖像?
現在我不需要整個畫布充滿了Perlin噪音,但我只需要一個Perlin噪音的(更小的)圖像,我可以像畫布中的圖像文件一樣使用。因此,在設置功能中,我使用了createImage()
,然後使用完全相同的算法將Perlin噪聲加載到圖像中。但是,當我現在顯示這個時,噪音看起來完全失真。
這裏是我的代碼:
// noise code originally by
// Daniel Shiffman
// http://codingtra.in
// http://patreon.com/codingtrain
// Code for: https://youtu.be/ikwNrFvnL3g
var inc = 0.01;
var noiseImg;
function setup() {
createCanvas(640, 360);
pixelDensity(1);
background("red");
var yoff = 0;
noiseImg = createImage(200, 200);
noiseImg.loadPixels();
for (var y = 0; y < height; y++) {
var xoff = 0;
for (var x = 0; x < width; x++) {
var index = (x + y * width) * 4;
var r = noise(xoff, yoff) * 255;
noiseImg.pixels[index + 0] = r;
noiseImg.pixels[index + 1] = r;
noiseImg.pixels[index + 2] = r;
noiseImg.pixels[index + 3] = 255;
xoff += inc;
}
yoff += inc;
}
noiseImg.updatePixels();
}
function draw() {
image(noiseImg, 0, 0);
}
有誰知道,爲什麼會被扭曲,雖然噪聲算法沒有改變,我能做些什麼呢?
謝謝!
您的'width'和'height'變量永遠不會被初始化。設置它們使其工作。 – DarthJDG
@DarthJDG'width'和'height'變量由P5.js庫設置。 –