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