BabylonJS - effects
by kolar
HTML
<script src="https://dl.dropboxusercontent.com/u/12395133/babylon.1.11.js"></script>
<div id="rootDiv">
<button id="btn">Run</button>
<canvas id="canvas"></canvas>
</div>
CSS
html, body, div, canvas {
width: 100%;
height: 100%;
padding: 0;
margin: 0;
overflow: hidden;
}
#btn {
position:fixed;
color:#555;
font-size:11px;
font-family:courier;
width:100px;
height:30px;
}
JavaScript
var canvas = document.getElementById("canvas");
var engine = new BABYLON.Engine(canvas, false);
var scene = new BABYLON.Scene(engine);
var camera = new BABYLON.ArcRotateCamera("Camera", 1, 0.8, 10, new BABYLON.Vector3(0, 0, 0), scene);
camera.setPosition(new BABYLON.Vector3(0, 5, -5));
var light0 = new BABYLON.HemisphericLight("Omni", new BABYLON.Vector3(0, 0, 10), scene);
scene.activeCamera.attachControl(canvas);
engine.runRenderLoop(function () {
scene.render();
});
var imgSrc = "https://dl.dropboxusercontent.com/u/12395133/babylon/cloud_dot.png";
var randomNumber = function(min, max) {
if (min == max) {
return (min);
}
var random = Math.random();
return ((random * (max - min)) + min);
};
function randomSpherePoint(x0,y0,z0,radius){
var u = Math.random();
var v = Math.random();
var theta = 2 * Math.PI * u;
var phi = Math.acos(2 * v - 1);
var x = x0 + (radius * Math.sin(phi) * Math.cos(theta));
var y = y0 + (radius * Math.sin(phi) * Math.sin(theta));
var z = z0 + (radius * Math.cos(phi));
return [x,y,z];
}
BABYLON.ParticleSystem.prototype._update = function(newParticles) {
this._alive = this.particles.length > 0;
for (var index = 0; index < this.particles.length; index++) {
var particle = this.particles[index];
particle.age += this._scaledUpdateSpeed;
if (particle.age >= particle.lifeTime) {
this._stockParticles.push(this.particles.splice(index, 1)[0]);
index--;
continue;
} else {
particle.colorStep.scaleToRef(this._scaledUpdateSpeed, this._scaledColorStep);
particle.color.addInPlace(this._scaledColorStep);
if (particle.color.a < 0)
particle.color.a = 0;
particle.direction.scaleToRef(this._scaledUpdateSpeed, this._scaledDirection);
particle.position.addInPlace(this._scaledDirection);
particle.angle += particle.angularSpeed *...