three+webgl实现跟随音乐振动的三维模型动画效果代码
代码语言:html
所属分类:三维
代码描述:three+webgl实现跟随音乐振动的三维模型动画效果代码
代码标签: three webgl 跟随 音乐 振动 三维 模型 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>three.js + GSAP</title> <style> body { margin: 0; overflow: hidden; user-select: none;} canvas { display: block; } </style> </head> <body> <script type="module"> import * as THREE from 'https://cdn.skypack.dev/three@0.136.0/build/three.module.js'; import { OrbitControls } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/controls/OrbitControls.js'; import { OBJLoader } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/loaders/OBJLoader.js'; import { EffectComposer } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/EffectComposer.js'; import { RenderPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/RenderPass.js'; import { UnrealBloomPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/UnrealBloomPass.js'; import { GlitchPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/GlitchPass.js'; import { ShaderPass } from 'https://cdn.skypack.dev/three@0.136.0/examples/jsm/postprocessing/ShaderPass.js'; import { gsap } from 'https://cdn.skypack.dev/gsap@3.9.1'; const scene = new THREE.Scene(); scene.fog = new THREE.Fog(0x000000, 10, 100); const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000); const renderer = new THREE.WebGLRenderer({ antialias: true }); renderer.setSize(window.innerWidth, window.innerHeight); document.body.appendChild(renderer.domElement); camera.position.set(0, 70, 0); gsap.to(camera.position, { x: Math.random() * 7 + 1, y: 0, z: 100, duration: 3, ease: 'circ.inOut(.8)' }); let isAnimating = false; function animateCamera() { const time = Math.random() * 1200 - 600; if (isAnimating) { gsap.to(camera.position, { x: () => Math.random() * 120 - 10, y: () => Math.random() * 130 - 10, z: () => Math.random() * 120 - 30, duration: () => (Math.random() * 300 - time) / 1000, // Convertir en secondes delay: () => (Math.random() * 300 - time) / 1000, // Convertir en secondes ease: "power2.inOut", onComplete: animateCamera // Boucle }); } } animateCamera(); const controls = new OrbitControls(camera, renderer.domElement); controls.enableDamping = true; const gridGeometry = new THREE.PlaneGeometry(100, 100, 100, 100); const gridMaterial = new THREE.MeshStandardMaterial({ color: 0x00ff00, wireframe: true, transparent:true, opacity:0.2.........完整代码请登录后点击上方下载按钮下载查看
网友评论0