【发布时间】:2020-05-02 19:33:38
【问题描述】:
目标
插图和其他图形作品中常见的效果是两种颜色之间的渐变,带有颗粒/噪点,因此可以获得非常特殊的效果。 (尤其是示例 3。)
我的研究已经展示了许多解决方案如何在 Illustrator 等软件中实现这种效果,但我想用 p5js 或 vanilla js 画布重新创建它。
我的尝试
我已经尝试创建渐变并使用其顶部的像素阵列设置具有特定颜色的随机噪声。 这只是部分地导致了预期的效果:
function draw() {
setGradient(0, 0, width, height, color(0, 0, 0), color(255, 255 ,255));
setNoise();
}
function setNoise() {
loadPixels();
for (let x = 0; x < width; x++ ) {
for (let y = 0; y < height; y++ ) {
if (random(1) > 0.9) {
const index = (x + y * width) * 4;
pixels[index] = 255;
pixels[index + 1] = 255;
pixels[index + 2] = 255;
pixels[index + 3] = 255;
}
}
}
updatePixels();
}
function setGradient(x, y, w, h, c1, c2) {
noFill();
for (let i = y; i <= y + h; i++) {
let inter = map(i, y, y + h, 0, 1);
let c = lerpColor(c1, c2, inter);
stroke(c);
line(x, i, x + w, i);
}
}
你怎么看?这是正确的方法还是有更好/更简单的解决方案?
【问题讨论】:
标签: javascript canvas gradient p5.js