p5实现canvas渐变布料随风飘动波纹波动动画效果代码
代码语言:html
所属分类:动画
代码描述:p5实现canvas渐变布料随风飘动波纹波动动画效果代码
代码标签: p5 canvas 布料 渐变 飘动 波纹 波动
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> body{ margin: 0; overflow: clip; background: #1B2021; } main{ display: flex; height: 100vh; } canvas{ margin: auto; } </style> </head> <body> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/p5.1.4.0.js"></script> <script> const REDS = [ "#e45064", "#e45064", "#e65d6c", "#ec6a5f", "#e13750", "#c03671", "#643d7a", "#284671", "#284671", "#284671" ]; const YELLOWS = ["#ef9f50", "#f2c061", "#f3bf61"]; const LIGHT_BLUES = ["#b7cbef", "#e2eaf4", "#e2eaf4"]; const DARK_BLUES = ["#3271ac", "#4282b6", "#7abcec"]; const backgroundColor = "#ffffff"; const width = window.innerWidth; const height = window.innerHeight; const totalFrames = 1000; let frameCount = 0; let recording = false; function setup() { canvas = createCanvas(width, height, WEBGL); noiseSeed(20); } let delta = 0; let delta1 = 0; let delta2 = 0; let delta3 = 0; function draw() { frameCount += 1; let frameDelta = (2 * Math.PI * (frameCount % totalFrames)) / totalFrames; let bg = color(backgroundColor); background(bg); drawDarkBlues(DARK_BLUES, -width, -height * 0.7, PI / 150, 4); drawDarkBlues(DARK_BLUES, -width, -400, PI / 20, 2); drawLightBlues(LIGHT_BLUES); drawYellows(YELLOWS); drawReds(REDS); } function drawDarkBlues(colors, _x, _y, _r, _s) { push(); rotate(_r); translate(_x, _y); scale(_s, _s); noStroke(); let size = 100; let x = -(size / 2); let y = 0; beginShape(TRIANGLE_STRIP); for (let i = 0; i < colors.length - 1; i++) { let j = 0; while (j < width * 2 + size / 2) { let waveSize = 15; let y0 = y + sin(delta3 + j + x) * waveSize; delta3 += 0.00003; let y2 = y + size * 1.2 + sin(delta3 + j + x) * waveSize; if (j % 2 == 0) { fill(colors[i]); vertex(x, y0); //left 1 fill(colors[i + 1]); vertex(x + size / 2, y2); //tip 3 } x += size / 2; j += size / 2; } x = -(size / 2); y += size; } endShape(CLOSE); pop(); } function drawLightBlues(colors) { push(); rotate(PI / 20); translate(-width / 2, -200); scale(2, 2); noStroke(); .........完整代码请登录后点击上方下载按钮下载查看
网友评论0