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