three炫酷三维文字粒子分解化沙化动画效果代码

代码语言:html

所属分类:粒子

代码描述:three炫酷三维文字粒子分解化沙化动画效果代码,结合了TextGeometry、TextGeometry、pnltri、droid_sans_bold、TweenMax、bas共同实现。

代码标签: three 三维 文字 粒子 分解化 沙化 动画

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

<!DOCTYPE html>
<html lang="en" class="THREE Text Animation">

<head>

 
<meta charset="UTF-8">
 

 
<meta name="viewport" content="width=device-width, initial-scale=1">
 
 
 
<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  >
 
<script>
        THREE
.ShapeUtils.triangulateShape = (function () {
               
var pnlTriangulator = new PNLTRI.Triangulator();
               
return function triangulateShape(contour, holes) {
                   
return pnlTriangulator.triangulate_polygon([contour].concat(holes));
               
};
           
})();
</script>

<div id="three-container"></div>

<div id="instructions">
       
</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/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 type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/bas.min.js"></script>
     
<script  >
window.onload = init;

function init() {
  var root = new THREERoot({
    createCameraControls: !true,
    antialias: window.devicePixelRatio === 1,
    fov: 60 });


  root.renderer.setClearColor(0x000000);
  root.renderer.setPixelRatio(window.devicePixelRatio || 1);
  root.camera.position.set(0, 0, 600);

  var textAnimation = createTextAnimation();
  root.scene.add(textAnimation);

  var light = new THREE.DirectionalLight();
  light.position.set(0, 0, 1);
  root.scene.add(light);

  var tl = new TimelineMax({
    repeat: -1,
    repeatDelay: 0.5,
    yoyo: true });

  tl.fromTo(textAnimation, 4,
  { animationProgress: 0.0 },
  { animationProgress: 0.6, ease: Power1.easeInOut },
  0);

  tl.fromTo(textAnimation.rotation, 4, { y: 0 }, { y: Math.PI * 2, ease: Power1.easeInOut }, 0);

  createTweenScrubber(tl);
}

function createTextAnimation() {
  var geometry = generateTextGeometry('BFW.WIKI', {
    size: 40,
    height: 12,
    font: 'droid sans',
    weight: 'bold',
    style: 'normal',
    curveSegments: 24,
    bevelSize: 2,
    bevelThickness: 2,
    bevelEnabled: true,
    anchor: { x: 0.5, y: 0.5, z: 0.0 } });


  THREE.BAS.Utils.tessellateRepeat(geometry, 1.0, 2);

  THREE.BAS.Utils.separateFaces(geometry);

  return new TextAnimation(geometry);
}

function generateTextGeometry(text, params) {
  var geometry = new THREE.TextGeometry(text, params);

  geometry.computeBoundingBox();

  var size = geometry.boundingBox.size();
  var anchorX = size.x * -params.anchor.x;
  var anchorY = size.y * -params.anchor.y;
  var anchorZ = size.z * -params.anchor.z;
  var matrix = new THREE.Matrix4().makeTranslation(anchorX, anchorY, anchorZ);

  geometry.applyMatrix(matrix);

  return geometry;
}

////////////////////
// CLASSES
////////////////////

function TextAnimation(textGeometry) {
  var bufferGeometry = new THREE.BAS.ModelBufferGeometry(textGeometry);

  var aAnimation = bufferGeometry.createAttribute(.........完整代码请登录后点击上方下载按钮下载查看

网友评论0