three实现三维铁水滴落下叶片涟漪动画效果代码

代码语言:html

所属分类:三维

代码描述:three实现三维铁水滴落下叶片涟漪动画效果代码

代码标签: three 三维 水滴 落下 叶片 涟漪 动画

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

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

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

  
  
<style>
@import url("https://fonts.googleapis.com/css2?family=Asap&display=swap");
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}
*::before,
*::after {
  box-sizing: border-box;
}
html,
body {
  overscroll-behavior-x: none;
  overscroll-behavior-y: none;
  scroll-behavior: smooth;
}
body {
  font-family: "Asap", sans-serif;
  position: relative;
  width: 100%;
  max-width: 100vw;
  height: auto;
  min-height: 100vh;
  text-align: center;
  overflow-x: hidden;
  background: black;
  color: white;

  display: grid;
  place-items: center;
}
canvas {
  -moz-user-select: none;
  -webkit-user-select: none;
  -ms-user-select: none;
  user-select: none;
  position: fixed;
  width: 100%;
  max-width: 100vw;
  height: auto;
  min-height: 100vh;
  top: 0;
  left: 0;
  z-index: 0;
}
</style>

  
  
</head>

<body >
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/es-module-shims.1.6.3.js"></script>
<script type="importmap">
  {
    "imports": {      
      "three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/164/three.module.js",
      "three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
    }
  }
</script>

<p>Loading...</p>
  <script src='//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/libs/ammo.wasm.js'></script>
      <script  type="module">

"use strict";
console.clear();
import * as THREE from "three";
import { OrbitControls as e } from "three/addons/controls/OrbitControls.js";
import { ParametricGeometry as t } from "three/addons/geometries/ParametricGeometry.js";
import * as BufferGeometryUtils from "three/addons/utils/BufferGeometryUtils.js";
import { RGBELoader as n } from "three/addons/loaders/RGBELoader.js";
const o = 25;
async function a() {
  if ("Ammo" in window == !1)
  return void console.error("AmmoPhysics: Couldn't find Ammo.js");
  const e = await Ammo(),
  t = new e.btDefaultCollisionConfiguration(),
  n = new e.btCollisionDispatcher(t),
  a = new e.btDbvtBroadphase(),
  i = new e.btSequentialImpulseConstraintSolver(),
  r = new e.btDiscreteDynamicsWorld(n, a, i, t);
  r.setGravity(new e.btVector3(0, -9.8, 0));
  const c = new e.btTransform();
  let l = new e.btVector3(0, 0, 0),
  d = new e.btQuaternion(0, 0, 0, 0);
  const u = [],
  m = new WeakMap();
  function h(t, n = 0, o = null) {
    const a = function (t, n) {
      t.parameters;
      let o = null;
      if ("convexhull" === n) {
        let n = t.attributes.position.array,
        a = new e.btVector3(0, 0, 0);
        o = new Ammo.btConvexHullShape();
        for (let e = 0, t = n.length; e < t; e += 3) {
          a.setValue(n[e], n[e + 1], n[e + 2]);
          const s = e >= t - 3;
          o.addPoint(a, s);
        }
      } else if ("terrain" === n) return null;
      return o.setMargin(0.05), o;
    }(t.geometry, o);
    null !== a && (
    t.isInstancedMesh ?
    function (t, n, o) {
      const a = t.instanceMatrix.array,
      s = [];
      for (let i = 0; i < t.count; i++) {
        const t = 16 * i,
        c = new e.btTransform();
        c.setFromOpenGLMatrix(a.slice(t, t + 16));
        const l = new e.btDefaultMotionState(c),
        d = new e.btVector3(0, 0, 0);
        o.calculateLocalInertia(n, d);
        const u = new e.btRigidBodyConstructionInfo(n, l, o, d),
        m = new e.btRigidBody(u);
        r.addRigidBody(m), s.push(m);
      }
      n > 0 && (u.push(t), m.set(t,.........完整代码请登录后点击上方下载按钮下载查看

网友评论0