three+gsap三维几何体随机组合空间旋转动画效果代码

代码语言:html

所属分类:三维

代码描述:three+gsap三维几何体随机组合空间旋转动画效果代码,鼠标双击可实现更换颜色和几何体。

代码标签: three gsap 三维 几何体 随机 组合 空间 旋转 动画

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

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


    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <style>
      body, html {
        margin: 0;
        overflow: hidden;
        font-family: Arial, sans-serif;
        background-color: #000;
        user-select: none;
      }
    </style>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/dat.gui-min.js"></script>
<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/gsap.3.10.4.js"></script>
</head>

  <body>
      
          <script type="importmap">
  {
    "imports": {      
      "three": "//repo.bfw.wiki/bfwrepo/js/module/three/build/136/three.module.js",
		     
      "three/addons/": "//repo.bfw.wiki/bfwrepo/js/module/three/examples/164/jsm/"
    }
  }
</script>
    <script type="module">
      import * as THREE from 'three';
      import { OrbitControls } from 'three/addons/controls/OrbitControls.js';
      import { UnrealBloomPass } from 'three/addons/postprocessing/UnrealBloomPass.js';
      import { EffectComposer } from 'three/addons/postprocessing/EffectComposer.js';
      import { RenderPass } from 'three/addons/postprocessing/RenderPass.js';
      import { ShaderPass } from 'three/addons/postprocessing/ShaderPass.js';
      import { BokehPass } from 'three/addons/postprocessing/BokehPass.js';
      import { Reflector } from 'three/addons/objects/Reflector.js';

    

      let scene, camera, renderer, controls, composer, bloomPass, shaderPass, group, spotLight, foregroundShader, bokehPass;
      let objects = [];

      init();

      function init() {

        scene = new THREE.Scene();
        scene.background = new THREE.Color(0xfed7c3); 

        camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 1, 500);
        camera.position.set(0, 3, 5);

        renderer = new THREE.WebGLRenderer({ antialias: true });
        renderer.setSize(window.innerWidth, window.innerHeight);
        renderer.setPixelRatio(window.devicePixelRatio * 1.5);
        renderer.shadowMap.type = THREE.PCFSoftShadowMap;
        renderer.shadowMap.enabled = true;
        document.body.appendChild(renderer.domElement);
        /*
        const planeReflector = new THREE.PlaneGeometry(10, 10);
        const planeReflectorBack = new THREE.PlaneGeometry(10, 10);
        const frontReflector = new Reflector(planeReflector, {
          clipBias: 0.003,
          textureWidth: window.innerWidth * window.devicePixelRatio,
          textureHeight: window.innerHeight * window.devicePixelRatio,
          color: 0x889999,
          recursion:.21
        });
        frontReflector.position.y = 1;
        frontReflector.rotateX(-Math.PI / 2);
        scene.add(frontReflector);

        const backReflector = new Reflector(planeReflectorBack, {
          clipBias: 0.003,
          textureWidth: window.innerWidth * window.devicePixelRatio,
          textureHeight: window.innerHeight * window.devicePixelRatio,
          color: 0x889999
        });
        backReflector.position.y = 1;
        backReflector.rotateX(Math.PI / 2);
        //scene.add(backReflector);
        */

        foregroundShader = {
          uniforms: {
            tDiffuse: { value: null },
            u_time: { value: 0.0 },
            u_resolution: { value: new THREE.Vector2(window.innerWidth, window.innerHeight) },
            blendMode: { value: 1.0 } 
          },
          vertexShader: `
            varying vec2 vUv;
            void main() {
              vUv = uv;
              gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1.0);
            }
          `,
          fragmentShader: `
            precision mediump float;
            uniform sampler2D tDiffuse;
            uniform float u_time;
            uniform vec2 u_resolution;
            uniform float blendMode; 
            varying vec2 vUv;

            float random(vec2 st) {
              return fract(sin(do.........完整代码请登录后点击上方下载按钮下载查看

网友评论0