three实现三维空间液态彩色液体融合交互动画效果代码

代码语言:html

所属分类:三维

代码描述:three实现三维空间液态彩色液体融合交互动画效果代码

代码标签: three 三维 空间 液态 彩色 液体 融合 交互 动画

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

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8">
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.84.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/postprocessing.2.3.1.js"></script>
    </head>
    <body>

        <!-- partial -->
        <script >
            const {
  WebGLRenderer, Scene, PerspectiveCamera,
  MeshBasicMaterial, Mesh, Color, TextureLoader, Clock,
  Vector3, PlaneBufferGeometry, ShaderMaterial } =
THREE;

const {
  EffectComposer, RenderPass, BloomPass, Pass } =
POSTPROCESSING;

const getRandomFloat = (min, max) => Math.random() * (max - min) + min;

const clock = new Clock();

const COLORS = [
'#336699',
'#7AAABB',
'#86BBD8',
'#9EE493'];


/* ---- METABALL CUSTOM PASS ---- */
const metaballShader = {
  uniforms: {
    tDiffuse: { value: null } },

  vertexShader: [
  "varying vec2 vUv;",
  "void main() {",
  "vUv = uv;",
  "gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );",
  "}"].
  join("\n"),
  fragmentShader: [
  "uniform sampler2D tDiffuse;",
  "varying vec2 vUv;",
  "void main() {",
  "vec4 currentScreen = texture2D(tDiffuse, vUv);",
  "gl_FragColor = vec4(currentScreen.xyz * 1.5, currentScreen.w) * max(sign(currentScreen.w - 0.8), 0.0);",
  "}"].
  join("\n") };


class MetaballPass extends Pass {
  constructor() {
    super();
    this.name = 'MetaballPass';
    this.needsSwap = true;
    this.material = new ShaderMaterial(metaballShader);
    this.quad.material = this.material;
  }
  render(renderer, readBuffer, writeBuffer) {
    this.material.uniforms.tDiffuse.value = readBuffer.texture;
    renderer.render(this.scene, this.camera, this.renderToScreen ? null : writeBuffer);
  }}


/* ---- CORE ---- */
let windowWidth = window.innerWidth;
let windowHeight = window.innerHeight;
class Webgl {
  constructor(w, h) {
    this.meshCount = 0;
    this.meshListeners = [];
    this.renderer = new WebGLRenderer({ antialias: true, alpha.........完整代码请登录后点击上方下载按钮下载查看

网友评论0