Skip to content

Instantly share code, notes, and snippets.

@zoxee
Created October 14, 2022 11:18
Show Gist options
  • Save zoxee/433bc02d13f5492e392553c4735b03fa to your computer and use it in GitHub Desktop.
Save zoxee/433bc02d13f5492e392553c4735b03fa to your computer and use it in GitHub Desktop.
Particle Rings
<link href="https://fonts.googleapis.com/css?family=Raleway:200" rel="stylesheet">
<script type="x-shader/x-vertex" id="vertexshader">
attribute float size;
attribute vec3 color;
varying vec3 vColor;
void main()
{
vColor = color;
gl_PointSize = size;
gl_Position = projectionMatrix * modelViewMatrix * vec4(position, 1);
}
</script>
<script type="x-shader/x-fragment" id="fragmentshader">
precision highp float;
uniform sampler2D texture;
varying vec3 vColor;
void main()
{
gl_FragColor = vec4( vColor, 1 );
gl_FragColor = gl_FragColor * texture2D( texture, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) );
gl_FragColor = gl_FragColor * vec4( vColor, 1.0 );
//if ( gl_FragColor.a < ALPHATEST ) discard;
}
</script>
<div ng-app="app" ng-controller="Ctrl">
<div bubble-ring state="state" class="full-page" ng-click="toggleState()"></div>
</div>
<p>15,000 particles. Click anywhere to change view</p>

Particle Rings

Click to change view. Might run slow on older machines :)

Made with Angular, Three.js and GSAP.

A Pen by Steve Gardner on CodePen.

License.

var app = angular.module('app', ['ngTouch']);
app.controller('Ctrl', function($scope)
{
$scope.state = 'explode';
$scope.toggleState = function()
{
var current = $scope.state;
switch(current)
{
case 'flat':
$scope.state = 'explode';
break;
case 'explode':
$scope.state = 'flat';
break;
case 'inline':
$scope.state = 'flat';
break;
}
//$scope.state = current === 'flat' ? 'explode' : 'flat';
}
})
app.directive('bubbleRing', function ($compile, $timeout)
{
return {
restrict: 'A',
link: function (scope, element)
{
var vertexShader = document.getElementById( 'vertexshader' ).textContent;
var fragmentShader = document.getElementById( 'fragmentshader' ).textContent;
var container, selectedPos;
var camera, scene, renderer, raycaster, mouse, intersects, INTERSECTED, attributes, uniforms;
var particles = [];
var largestIndex = 0;
var speed = 0.6;
var windowHalfX = window.innerWidth / 2;
var windowHalfY = window.innerHeight / 2;
var groups = [
{
color: 0xf80c12,
count: 4000,
radius: 250
},
{
color: 0xff9933,
count: 3000,
radius: 220
},
{
color: 0xd0c310,
count: 2500,
radius: 200
},
{
color: 0x69d025,
count: 2000,
radius: 180
},
{
color: 0x12bdb9,
count: 1500,
radius: 160
},
{
color: 0x4444dd,
count: 1000,
radius: 140
},
{
color: 0x442299,
count: 1000,
radius: 120
}
]
var geometry = new THREE.Geometry();
var particleSystem;
init();
animate();
function init() {
container = element[0];
camera = new THREE.PerspectiveCamera( 80, window.innerWidth / window.innerHeight, 1, 2000 );
camera.position.z = 100;
scene = new THREE.Scene();
for (var i = groups.length - 1; i >= 0; i--)
{
for ( var j = 0; j < groups[i].count; j ++ )
{
var p = {
angle: Math.random() * Math.PI * 2,
radius: groups[i].radius + (Math.random() * 40),
targetRadius: groups[i].radius + (Math.random() * 40),
vertex: new THREE.Vector3(),
group: i,
color: groups[i].color,
size: Math.floor(Math.random() * 10),
speed: Math.random() / 100,
homeZ: Math.random() * 100 - 50
}
//if(i == 0 && j == 0) p.size = 60;
p.vertex.x = Math.cos(p.angle) * p.radius;
p.vertex.y = Math.sin(p.angle) * p.radius;
p.vertex.z = 0;
geometry.vertices.push( p.vertex );
particles.push( p );
}
}
scope.count = particles.length;
uniforms = {
texture: { type: "t", value: THREE.ImageUtils.loadTexture('data:image/png;base64,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z/f/f+UrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yla985Stf+cpXvvKVr3zlK1/5yle+8pWvfOUrX/nKV77yFYD/B92aGZl3Kab3AAAyGmlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS4zLWMwMTEgNjYuMTQ1NjYxLCAyMDEyLzAyLzA2LTE0OjU2OjI3ICAgICAgICAiPgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iPgogICAgICAgICA8eG1wOkNyZWF0b3JUb29sPkFkb2JlIEZpcmV3b3JrcyBDUzYgKE1hY2ludG9zaCk8L3htcDpDcmVhdG9yVG9vbD4KICAgICAgICAgPHhtcDpDcmVhdGVEYXRlPjIwMTUtMDktMTFUMjI6MjE6NTRaPC94bXA6Q3JlYXRlRGF0ZT4KICAgICAgICAgPHhtcDpNb2RpZnlEYXRlPjIwMTUtMDktMTFUMjI6MjM6MzRaPC94bXA6TW9kaWZ5RGF0ZT4KICAgICAgPC9yZGY6RGVzY3JpcHRpb24+CiAgICAgIDxyZGY6RGVzY3JpcHRpb24gcmRmOmFib3V0PSIiCiAgICAgICAgICAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyI+CiAgICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2UvcG5nPC9kYzpmb3JtYXQ+CiAgICAgIDwvcmRmOkRlc2NyaXB0aW9uPgogICA8L3JkZjpSREY+CjwveDp4bXBtZXRhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIAo8P3hwYWNrZXQgZW5kPSJ3Ij8+Ik1Y/AAAAUdJREFUWIXtlr1tAkEUhL9nySmBHV1kySGRXQURJdAGDVCBIxfgKghcg90AlogI4AgIIRgHt/7j9t0hswcbMNIm9/ZmRrM/b00S58TVWdUvBrI1YGbRARTAGHgFSkBhlOHbGCgi//mQVBuROT1JT5K2asc2zO01aXxrtRmQ1Jc0O0B4HzNJ/aMMBPHlP8S/sAwcrgFTJHIzQ1WEb8B98yK24gN4BDaxYtMpmCQQJ3BMvGI0AardPgeuExgA2AF3wGK/4CUwSihO4BrFCp6BQULxRk5vCUrgJrGBNXB7qIGuenTtWsyzF1DFlRpRTs/AewcGopyegWkHBqKceV5EZrYAnhOJE7hq4uAkkEUzMrMNMARWR4ivAkdUHMj8QfLLRGdPMncPOGkVVF1tADzw0y/WVOd8CryETfwnZQ/eMTwZsu0FFwMnwycBVS930EtwSgAAAABJRU5ErkJggg==' ) }
};
attributes =
{
color: { type: 'c', value: [] },
size: { type: 'f', value: [] }
};
var largestSize = 0;
largestIndex = 0;
for (var i=0; i < particles.length; i++)
{
if(particles[i].size > largestSize)
{
largestSize = particles[i].size;
largestIndex = i;
}
attributes.size.value[i] = particles[i].size;
attributes.color.value[i] = new THREE.Color( particles[i].color );
}
var material = new THREE.ShaderMaterial(
{
uniforms: uniforms,
attributes: attributes,
vertexShader: vertexShader,
fragmentShader: fragmentShader,
transparent: true,
depthTest: false,
//alphaTest: 0.9,
});
particleSystem = new THREE.PointCloud(geometry, material);
scene.add( particleSystem );
renderer = new THREE.WebGLRenderer();
renderer.setPixelRatio( window.devicePixelRatio );
renderer.setSize( window.innerWidth, window.innerHeight );
renderer.setClearColor( 0x292B30, 1 );
container.appendChild( renderer.domElement );
raycaster = new THREE.Raycaster();
mouse = new THREE.Vector2();
scope.lines = [{x1: 100, y1: 40, x2: 0, y2: 0}];
var svg = '<div simple-lines="lines" class="simple-lines"></div>';
element.append(svg);
$compile(element.contents())(scope);
window.addEventListener( 'resize', onWindowResize, false );
document.addEventListener( 'mousemove', onDocumentMouseMove, false );
}
function onWindowResize()
{
windowHalfX = window.innerWidth / 2;
windowHalfY = window.innerHeight / 2;
camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();
renderer.setSize( window.innerWidth, window.innerHeight );
}
function onDocumentMouseMove( event )
{
event.preventDefault();
mouse.x = ( event.clientX / window.innerWidth ) * 2 - 1;
mouse.y = - ( event.clientY / window.innerHeight ) * 2 + 1;
}
function animate()
{
requestAnimationFrame( animate );
render();
}
function toScreenPosition(position, camera)
{
var vector = new THREE.Vector3();
vector.x = position.x;
vector.y = position.y;
vector.z = position.z;
var widthHalf = 0.5*renderer.context.canvas.width;
var heightHalf = 0.5*renderer.context.canvas.height;
vector.project(camera);
vector.x = ( vector.x * widthHalf ) + widthHalf;
vector.y = - ( vector.y * heightHalf ) + heightHalf;
return {
x: vector.x,
y: vector.y
};
};
function render()
{
var time = Date.now() * 0.00005;
camera.lookAt( scene.position );
geometry.verticesNeedUpdate = true;
//particleSystem.geometry.__dirtyVertices = true;
raycaster.setFromCamera( mouse, camera );
intersects = raycaster.intersectObject( particleSystem );
//console.log(INTERSECTED)
if ( intersects.length > 0 ) {
if ( INTERSECTED != intersects[ 0 ].index)
{
try
{
attributes.size.value[ INTERSECTED ] = particles[INTERSECTED].size;
}
catch(err)
{
//supress error
}
INTERSECTED = intersects[ 0 ].index;
attributes.size.value[ INTERSECTED ] = particles[INTERSECTED].size * 1.5;
attributes.size.needsUpdate = true;
}
} else if ( INTERSECTED !== undefined && INTERSECTED !== null ) {
attributes.size.value[ INTERSECTED ] = particles[INTERSECTED].size;
attributes.size.needsUpdate = true;
INTERSECTED = null;
}
switch(scope.state)
{
case 'flat':
setUniformRadius(false, scope.state);
break;
case 'explode':
setUniformRadius(true, scope.state);
break;
case 'inline':
setUniformRadius(true, scope.state);
break;
}
//setUniformRadius(true, scope.state)
renderer.render( scene, camera );
var pos = particles[largestIndex].vertex;
//console.log(pos)
selectedPos = toScreenPosition(pos, camera);
scope.lines[0].x2 = selectedPos.x;
scope.lines[0].y2 = selectedPos.y;
$timeout(function() { scope.$apply() });
}
function setUniformRadius(isUniform, state)
{
// for (var i = geometry.vertices.length - 1; i >= 0; i--)
// {
for(var i = particles.length - 1; i >= 0; i--)
{
var p = particles[i];
var v = p.vertex;
p.angle -= p.speed;//0.01;
var ix = Math.round(p.group - groups.length / 2)
//TweenLite.to(groups[i].group.position, 0.5, {x:0, y:0, z: (-80 * ix)});
v.x = Math.cos(p.angle) * p.radius;
v.y = Math.sin(p.angle) * p.radius;
var z = isUniform ? ((state == "explode" ? -100 : -150) * ix) : 1;//p.homeZ;
if(p.targetZ != z)
{
p.targetZ = z;
//var ease = state == "inline" ? Cubic.easeInOut : Elastic.easeOut;
//var speed = state == "inline" ? 0.5 : (Math.random() / 2) + 1.5;
var delay = isUniform ? Math.random()/2 : 0;
TweenLite.to(v, speed * 2, {z: z, ease: Power4.easeInOut, delay: delay })
TweenLite.to(p, speed * 2, {radius: isUniform ? 270 : p.targetRadius, ease: Power4.easeInOut, delay: delay })
}
}
}
scope.$watch('state', function(newState)
{
switch(newState)
{
case 'flat':
TweenLite.to(camera.position, speed, {x:0, y:0, z: 500});
//setUniformRadius(false, newState);
break;
case 'explode':
TweenLite.to(camera.position, speed, {x:-400, y:-500, z: 500});
//setUniformRadius(true, newState);
break;
case 'inline':
TweenLite.to(camera.position, speed, {x:-700, y:0, z: 0});
//setUniformRadius(true, newState);
break;
}
})
}
};
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.19.0/TweenMax.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular-touch.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/three.js/r71/three.min.js"></script>
<script src="https://codepen.io/steveg3003/pen/zBVakw.js"></script>
html, body, .full-page
{
width: 100%;
height: 100%;
min-height: 100%;
overflow: hidden;
color: #ddd;
margin: 0;
padding: 0;
font-family: 'Raleway', sans-serif;
}
.controls
{
position: absolute;
top: 0;
left: 0;
padding: 10px;
z-index: 1000;
span
{
color: white;
}
}
.simple-lines
{
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
p
{
position: absolute;
top: 10px;
right: 10px;
margin: 0;
padding: 0;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment