threejs打造3d粒子穿梭效果
代码语言:html
所属分类:粒子
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title> three.js Points anti-gravity is applied ver3</title> <style> * { margin: 0; padding: 0; } html { height: 100%; } body { height: 100%; overflow: hidden; } canvas { position: absolute; } </style> </head> <body translate="no"> <div id="canvas"></div> <script type="text/javascript" src="http://repo.bfw.wiki/bfwrepo/js/three.72.js"></script> <script> (function e(t, n, r) { function s(o, u) { if (!n[o]) { if (!t[o]) { var a = typeof require == "function" && require; if (!u && a) return a(o, !0); if (i) return i(o, !0); var f = new Error("Cannot find module '" + o + "'"); throw f.code = "MODULE_NOT_FOUND", f; }var l = n[o] = { exports: {} }; t[o][0].call(l.exports, function (e) { var n = t[o][1][e]; return s(n ? n: e); }, l, l.exports, e, t, n, r); }return n[o].exports; }var i = typeof require == "function" && require; for (var o = 0; o < r.length; o++) s(r[o]); return s; })({ 1: [function (require, module, exports) { var exports = { getRandomInt: function (min, max) { return Math.floor(Math.random() * (max - min)) + min; }, getDegree: function (radian) { return radian / Math.PI * 180; }, getRadian: function (degrees) { return degrees * Math.PI / 180; }, getSpherical: function (rad1, rad2, r) { var x = Math.cos(rad1) * Math.cos(rad2) * r; var z = Math.cos(rad1) * Math.sin(rad2) * r; var y = Math.sin(rad1) * r; return [x, y, z]; } }; module.exports = exports; }, {}], 2: [function (require, module, exports) { var Util = require('./util'); var exports = function () { var Camera = function () { this.rad1 = Util.getRadian(90); this.rad2 = Util.getRadian(0); this.range = 1000; this.obj; }; Camera.prototype = { init: function (width, height) { this.obj = new THREE.PerspectiveCamera(35, width / height, 1, 10000); this.obj.up.set(0, 1, 0); this.setPosition(); this.lookAtCenter(); }, reset: function () { this.setPosition(); this.lookAtCenter(); }, resize: function (width, height) { this.obj.aspect = width / height; this.obj.updateProjectionMatrix(); }, setPosition: function () { var points = Util.getSpherical(this.rad1, this.rad2, this.range); this.obj.position.set(points[0], points[1], points[2]); }, lookAtCenter: function () { this.obj.lookAt({ x: 0, y: 0, z: 0 }); } }; return Camera; }; module.exports = exports(); }, { "./util": 8 }], 3: [function (require, module, exports) { module.exports = function (object, eventType, callback) { var timer; object.addEventListener(eventType, function (event) { clearTimeout(timer); timer = setTimeout(function () { callback(event); }, 500); }, false); }; }, {}], 4: [function (require, module, exports) { var exports = { friction: function (acceleration, mu, normal, mass) { var force = acceleration.clone(); if (!normal) normal = 1; if (!mass) mass = 1; force.multiplyScalar(-1); force.normalize(); force.multiplyScalar(mu); return force; }, drag: function (acceleration, value) { var force = acceleration.clone(); force.multiplyScalar(-1); force.normalize(); force.multiplyScalar(acceleration.length() * value); return force; }, hook: function (velocity, anchor, rest_length, k) { var force = velocity.clone().sub(anchor); var distance = force.length() - rest_length; force.normalize(); force.multiplyScalar(-1 * k * distance); return force; } }; module.exports = exports; }, {}], 5: [function (require, module, exports) { var Util = require('./util'); var exports = function () { var HemiLight = function () { this.rad1 = Util.getRadian(60); this.rad2 = Util.getRadian(30); this.range = 1000; this.hex1 = 0xffffff; this.hex2 = 0x3.........完整代码请登录后点击上方下载按钮下载查看
网友评论0