OPyPdmm模拟真实窗帘垂体鼠标交互重力碰撞动画效果代码

代码语言:html

所属分类:动画

代码描述:OPyPdmm模拟真实窗帘垂体鼠标交互重力碰撞动画效果代码

代码标签: OPyPdmm 模拟 真实 窗帘 垂体 鼠标 交互 重力 碰撞 动画

下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开

<!DOCTYPE html>
<html lang="en" >

<head>
  <meta charset="UTF-8">
  

  
  
  
<style>
@import url("https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap");
body {
  background: #EEE;
  margin: 0;
  display: flex;
  min-height: 100vh;
  align-items: center;
  justify-content: center;
  overflow: hidden;
}
canvas {
  max-height: 100vh;
  max-width: 100vw;
  height: auto;
  width: auto;
  /*   border: 1px solid silver; */
}

#container {
  box-shadow: 0 0 20px rgba(0,0,0,.05);
  border: 1px solid rgba(0,0,0,.1);
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  touch-action: none;
  }
h1 {
  font-family: Rubik;
  font-size: 100px;
  font-weight: 800;
  line-height: 1em;
  position: absolute;
  color: #fff;
}
</style>



  
  
</head>

<body translate="no">
  <div id="container"></div>
  
      <script type="module">
import { Pane } from "//repo.bfw.wiki/bfwrepo/js/tweakpane.4.0.3.js";
import {
lerp,
getPointsForGridId,
getEdgeIdsForGridId,
getPointID,
hash,
smoothstep } from
"//repo.bfw.wiki/bfwrepo/js/OPyPdmm.js";

console.clear();

const CONFIG = {
  width: 400,
  height: 400,
  gridW: 100,
  gridH: 40,
  gravity: .2,
  damping: .99,
  iterationsPerFrame: 10,
  compressFactor: .2,
  stretchFactor: 1.1,
  pointRadius: 0,
  lineWidth: 3,
  mouseSize: 4000,
  mouseStrength: 4,
  contain: false,
  randomSolve: false,
  preset: '' };

// --- PANE ---
const pane = new Pane();
const f1 = pane.addFolder({
  title: "Config",
  expanded: false });

const f2 = pane.addFolder({
  title: "Simulation",
  expanded: false });

f1.addBinding(CONFIG, "width");
f1.addBinding(CONFIG, "height");
f1.addBinding(CONFIG, "gridW", {
  step: 1,
  min: 2,
  max: 200 });

f1.addBinding(CONFIG, "gridH", {
  step: 1,
  min: 2,
  max: 100 });

f2.addBinding(CONFIG, "gravity", {
  step: .05,
  min: 0,
  max: 2 });

f2.addBinding(CONFIG, "damping", {
  step: .001,
  min: .5,
  max: 1.02 });

f2.addBinding(CONFIG, "iterationsPerFrame", {
  step: 1,
  min: 1,
  max: 20 });

f2.addBinding(CONFIG, "stretchFactor", {
  step: .01,
  min: 1.0,
  max: 2.0,
  label: "Max Stretch" });

f2.addBinding(CONFIG, "compressFactor", {
  step: .01,
  min: 0.1,
  max: 1.0,
  l.........完整代码请登录后点击上方下载按钮下载查看

网友评论0