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