three实现文字粒子化吸入动画效果代码
代码语言:html
所属分类:动画
代码描述:three实现文字粒子化吸入动画效果代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en" > <head> <meta charset="UTF-8"> <style> body { margin: 0; overflow: hidden; } #instructions { position: absolute; color: #666; bottom: 0; padding-bottom: 6px; font-family: sans-serif; width: 100%; text-align: center; pointer-events: none; } </style> </head> <body> <div id="three-container"></div> <div id="instructions"> click and drag to control the animation </div> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.75.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bas.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TextGeometry.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/FontUtils.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/pnltri.min.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/droid_sans_bold.typeface.js"></script> <script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/TweenMax.min.js"></script> <script> THREE.ShapeUtils.triangulateShape = (function () { var pnlTriangulator = new PNLTRI.Triangulator(); return function triangulateShape(contour, holes) { return pnlTriangulator.triangulate_polygon([contour].concat(holes)); }; })(); </script> <script > window.onload = init; function init() { var root = new THREERoot({ createCameraControls: false, fov: 10 }); root.renderer.setClearColor(0xffffff); root.renderer.setPixelRatio(window.devicePixelRatio || 1); root.camera.position.set(0, 0, 1400); var textAnimation = createTextAnimation(); root.scene.add(textAnimation); var tween = TweenMax.fromTo(textAnimation, 4, { animationProgress: 0 }, { animationProgress: 1, ease: Power1.easeInOut, repeat: -1, yoyo: true }); createTweenScrubber(tween); } function createTweenScrubber(tween, seekSpeed) { seekSpeed = seekSpeed || 0.001; function stop() { TweenMax.to(tween, 2, { timeScale: 0 }); } function resume() { TweenMax.to(tween, 2, { timeScale: 1 }); } function seek(dx) { var progress = tween.progress(); var p = THREE.Math.clamp(progress + dx * seekSpeed, 0, 1); tween.progress(p); } var _cx = 0; // desktop var mouseDown = false; document.body.style.cursor = 'pointer'; window.addEventListener('mousedown', function (e) { mouseDown = true; document.body.style.cursor = 'ew-resize'; _cx = e.clientX; stop(); }); window.addEventListener('mouseup', function (e) { mouseDown = false; document.body.style.cursor = 'pointer'; resume(); }); window.addEventListener('mousemove', function (e) { if (mouseDown === true) { var cx = e.clientX; var dx = cx - _cx; _cx = cx; seek(dx); } }); // mobile window.addEventListener('touchstart', function (e) { _cx = e.touches[0].clientX; stop(); e.preventDefault(); }); window.addEventListener('touchend', function (e) { resume(); e.preventDefault(); }); window.addEventListener('touchmove', function (e) { var cx = e.touches[0].clientX; var dx = cx - _cx; _cx = cx; seek(dx); e.preventDefault(); }); } function createTextAnimation() { var geometry = generateTextGeometry('CODE.BFW.WIKI', { size: 14, height: 0, font: 'droid sans', weight: 'bold', style: 'normal', bevelSize: 0.75, bevelThickness: 0.50, bevelEnabled: true, anchor: { x: 0.5, y: 0.5, z: 0.5 } }); THREE.BAS.Utils.separateFaces(geometry); return new TextAnimation(geometry); } function generateTextGeometry(text, params) { var geometry = new THREE.TextGeometry(text, params); geometry.computeBoundingBox(); geometry.userData = {}; geometry.userData.size = { width: geometry.boundingBox.max.x - geometry.boundingBox.min.x, height: geometry.boundingBox.max.y - geometry.boundingBox.min.y, depth: geometry.boundingBox.max.z - geometry.boundingBox.min.z }; var anchorX = geometry.userData.size.width * -params.anchor.x; var anchorY = geometry.userData.size.height * -params.anchor.y; var anchorZ = geometry.userData.size.depth * -params.anchor.z; var matrix = new THREE.Matrix4().makeTranslation(anchorX, anchorY, anchorZ); geometry.applyMatrix(matrix); return geometry; } //////////////////// // CLASSES //////////////////// function TextAnimation(textGeometry) { var buffe.........完整代码请登录后点击上方下载按钮下载查看
网友评论0