three实现三维宇宙星辰粒子运动旋转动画效果代码
代码语言:html
所属分类:粒子
代码描述:three实现三维宇宙星辰粒子运动旋转动画效果代码,鼠标可进行控制。
代码标签: three 三维 宇宙 星辰 粒子 运动 旋转 动画
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body{ overflow: hidden; margin: 0; } </style> </head> <body > <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.133.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/OrbitControls.133.js"></script> <script> console.clear(); let scene = new THREE.Scene(); scene.background = new THREE.Color(0x160016); let camera = new THREE.PerspectiveCamera(60, innerWidth / innerHeight, 1, 1000); camera.position.set(0, 4, 21); let renderer = new THREE.WebGLRenderer(); renderer.setSize(innerWidth, innerHeight); document.body.appendChild(renderer.domElement); window.addEventListener("resize", event => { camera.aspect = innerWidth / innerHeight; camera.updateProjectionMatrix(); renderer.setSize(innerWidth, innerHeight); }) let controls = new THREE.OrbitControls(camera, renderer.domElement); controls.enableDamping = true; controls.enablePan = false; let gu = { time: {value: 0} } let sizes = []; let shift = []; let pushShift = () => { shift.push( Math.random() * Math.PI, Math.random() * Math.PI * 2, (Math.random() * 0.9 + 0.1) * Math.PI * 0.1, Math.random() * 0.9 + 0.1 ); } let pts = new Array(10000).fill().map(p => { sizes.push(Math.random() * 1.5 + 0.5); pushShift(); return new THREE.Vector3().randomDirection().multiplyScalar(Math.random() * 0.5 + 9.5); }) for(let i = 0; i < 50000; i++){ let r = 10, R = 40; let rand = Math.pow(Math.random(), 1.5); let radius = Math.sqrt(R * R * rand + (1 - rand) * r * r); pts.push(new THREE.Vector3().setFromCylindricalCoords(radius, Math.random() * 2 * Math.PI, (Math.random() - 0.5) * 2 )); sizes.push(Math.random() * 1.5 + 0.5); pushShift(); } let g = new THREE.BufferGeometry().setFromPoints(pts); g.setAttribute("sizes", new THREE.Float32Bu.........完整代码请登录后点击上方下载按钮下载查看
网友评论0