three+simplex-noise实现飞机在山林飞行动画效果代码
代码语言:html
所属分类:动画
代码描述:three+simplex-noise实现飞机在山林飞行动画效果代码
代码标签: three simplex-noise 飞机 山林 飞行 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <style> html, body { margin: 0; padding: 0; } body { background: radial-gradient(120vw 50vh, #4c0c30 30%, #c90997); } .scene { height: 100vh; display: flex; align-items: flex-end; } .scene > div { width: 100%; } canvas { vertical-align: bottom; } </style> </head> <body> <!-- partial:index.partial.html --> <div class="scene"> <div data-module="world"> </div> </div> <!-- partial --> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.108.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/simplex-noise.min.js"></script> <script > const simplex = new SimplexNoise(Math.random()); const MAP_SIZE = 100; const SPEED_DEFAULT = 0.01; const PI = Math.PI; const TAU = PI / 2; const BUMPER_X_SPACING = 2; const BUMPER_Z_SPACING = 2; class Generator { constructor() { this.cellSize = 1; const width = MAP_SIZE; const height = MAP_SIZE; this.cols = Math.ceil(width / this.cellSize); this.rows = Math.ceil(height / this.cellSize); this.phase = 0; this.phaseX = 0; this.phaseY = 0; this.speed = 0.05; this.scale = 0.01; } setOptions(options = {}) { Object.keys(options).forEach(option => { if (this[option]) { this[option] = options[option]; } }); } update(angle = 0, speedModifier = 0) { const speed = SPEED_DEFAULT + speedModifier; const numLoops = this.rows * this.cols; let x = 0; let y = 0; const values = []; for (let i = 0; i < numLoops; i++) { const noiseX = x * this.scale; const noiseY = y * this.scale; const noiseValue = simplex.noise2D(noiseX - this.phaseX, noiseY - this.phaseY); x += this.cellSize; .........完整代码请登录后点击上方下载按钮下载查看
网友评论0