three+underscore实现canvas涂鸦马赛克动画效果代码

代码语言:html

所属分类:动画

代码描述:three+underscore实现canvas涂鸦马赛克动画效果代码

代码标签: three underscore canvas 涂鸦 马赛克 动画

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

<!DOCTYPE html>
<html lang="en">
<head>
   
<meta charset="UTF-8">


</head>
<body>

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

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/three.72.js"></script>

<script type="text/javascript" src="//repo.bfw.wiki/bfwrepo/js/underscore.js"></script>
   
<script>
        // set the scene size
var TAU = Math.PI * 2,
                WIDTH = window.innerWidth,
                HEIGHT = window.innerHeight,
                //center = new THREE.Vector3(WIDTH * 0.5, HEIGHT * 0.5, 0),
                center = new THREE.Vector3(0, 0, 0),
                particleDestination = new THREE.Vector3(0, 0, 200);

// set some camera attributes
var VIEW_ANGLE = 100,
                ASPECT = WIDTH / HEIGHT,
                NEAR = 0.01,
                FAR = 4000;


var spawnRate = 50;

// get the DOM element to attach to
// - assume we've got jQuery to hand
var container = document.querySelector("#container");

// create a WebGL renderer, camera
// and a scene
var renderer = new THREE.WebGLRenderer({preserveDrawingBuffer: true});
renderer.autoClear = true;
var camera =
                new THREE.PerspectiveCamera(
                                VIEW_ANGLE,
                                ASPECT,
                                NEAR,
                                FAR);

var scene = new THREE.Scene();

// add the camera to the scene
scene.add(camera);

// the camera starts at 0,0,0
// so pull it back
camera.position.x = 0;
camera.position.y = 0;
camera.position.z = 500;
camera.lookAt(new THREE.Vector3(0, 0, 0));
camera.rotation.z = Math.PI

// start the renderer
renderer.setSize(WIDTH, HEIGHT);

// attach the render-supplied DOM element
container.appendChild(renderer.domElement);

// create the sphere's material
var standardMaterial = new THREE.MeshLambertMaterial({
        color: 0xffffff,
        transparent: true,
  //blending: THREE.AdditiveBlending,
        opacity: 0.15,
});

var standardGeometry = new THREE.CylinderGeometry(
                (WIDTH + HEIGHT) * 0.045, // upper radius
                (WIDTH + HEIGHT) * 0.045, // lower radius
                0.01, // height
                4 // segments
);
standardGeometry.applyMatrix( new THREE.Matrix4().makeRotationX( Math.PI / 2 ) );

// create a point light
var pointLight = new THREE.PointLight(0xFFFFFF);

// set its position
pointLight.position.x = 0;
pointLight.position.y = 0;
pointLight.position.z = 500;

// add to the scene
scene.add(pointLight);

// ------------------------------------
// Grouping

var numGroups = 32;
var groups = _.map(new Array(numGroups), function(){return [];});
var groupAngle = TAU / numGroups;
var highlightedGroups = [];

function highlightGroup(groupId, solo){
        var group = groups[groupId];
        if (!group) return groupId;
        var index = highlightedGroups.indexOf(group);
        if (index !== -1) return groupId;
       
        if (solo){
                var otherGroupIds = _.range(numGroups);
                otherGroupIds.splice(groupId, 1);
                do {
                        unhig.........完整代码请登录后点击上方下载按钮下载查看

网友评论0