particles_waves.html 3.5 KB
Newer Older
M
Mr.doob 已提交
1 2 3 4 5
<!DOCTYPE HTML>
<html lang="en">
	<head>
		<title>three.js - particles - waves</title>
		<meta charset="utf-8">
6
		<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;"/>
M
Mr.doob 已提交
7
		<style type="text/css">
M
Mr.doob 已提交
8
			body {
M
Mr.doob 已提交
9 10 11 12
				background-color: #000000;
				margin: 0px;
				overflow: hidden;
			}
13

M
Mr.doob 已提交
14
			a {
M
Mr.doob 已提交
15 16 17 18 19
				color:#0078ff;
			}
		</style>
	</head>
	<body>
20
		<script type="text/javascript" src="../build/Three.js"></script>
M
Mr.doob 已提交
21
		<script type="text/javascript" src="js/Stats.js"></script>
M
Mr.doob 已提交
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44

		<script type="text/javascript">

			var SCREEN_WIDTH = window.innerWidth;
			var SCREEN_HEIGHT = window.innerHeight;

			var SEPARATION = 100;
			var AMOUNTX = 50;
			var AMOUNTY = 50;

			var stats;
			var container;

			var particles, particle;
			var count;

			var camera;
			var scene;
			var renderer;

			var mouseX = 0;
			var mouseY = 0;

45 46
			var windowHalfX = window.innerWidth / 2;
			var windowHalfY = window.innerHeight / 2;
M
Mr.doob 已提交
47 48 49 50

			init();
			setInterval(loop, 1000 / 60);

M
Mr.doob 已提交
51
			function init() {
M
Mr.doob 已提交
52

M
Mr.doob 已提交
53 54
				container = document.createElement( 'div' );
				document.body.appendChild( container );
M
Mr.doob 已提交
55

56
				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
57
				camera.position.z = 1000;
M
Mr.doob 已提交
58

M
Mr.doob 已提交
59
				scene = new THREE.Scene();
M
Mr.doob 已提交
60

M
Mr.doob 已提交
61
				renderer = new THREE.CanvasRenderer();
M
Mr.doob 已提交
62
				renderer.setSize( SCREEN_WIDTH, SCREEN_HEIGHT );
M
Mr.doob 已提交
63 64 65 66

				particles = new Array();

				var i = 0;
M
Mr.doob 已提交
67
				var material = new THREE.ParticleCircleMaterial( 0xffffff, 1 );
M
Mr.doob 已提交
68

M
Mr.doob 已提交
69
				for ( var ix = 0; ix < AMOUNTX; ix ++ ) {
M
Mr.doob 已提交
70

M
Mr.doob 已提交
71
					for ( var iy = 0; iy < AMOUNTY; iy ++ ) {
M
Mr.doob 已提交
72

M
Mr.doob 已提交
73 74 75
						particle = particles[ i ++ ] = new THREE.Particle( material );
						particle.position.x = ix * SEPARATION - ( ( AMOUNTX * SEPARATION ) / 2 );
						particle.position.z = iy * SEPARATION - ( ( AMOUNTY * SEPARATION ) / 2 );
76
						scene.addObject( particle );
M
Mr.doob 已提交
77 78 79 80 81
					}
				}

				count = 0;

M
Mr.doob 已提交
82
				container.appendChild( renderer.domElement );
M
Mr.doob 已提交
83 84

				stats = new Stats();
M
Mr.doob 已提交
85 86
				stats.domElement.style.position = 'absolute';
				stats.domElement.style.top = '0px';
M
Mr.doob 已提交
87
				container.appendChild( stats.domElement );
M
Mr.doob 已提交
88

M
Mr.doob 已提交
89 90 91
				document.addEventListener( 'mousemove', onDocumentMouseMove, false );
				document.addEventListener( 'touchstart', onDocumentTouchStart, false );
				document.addEventListener( 'touchmove', onDocumentTouchMove, false );
M
Mr.doob 已提交
92 93
			}

94 95
			//

M
Mr.doob 已提交
96
			function onDocumentMouseMove( event ) {
M
Mr.doob 已提交
97

98 99
				mouseX = event.clientX - windowHalfX;
				mouseY = event.clientY - windowHalfY;
M
Mr.doob 已提交
100

M
Mr.doob 已提交
101
			}
M
Mr.doob 已提交
102

M
Mr.doob 已提交
103
			function onDocumentTouchStart( event ) {
M
Mr.doob 已提交
104

M
Mr.doob 已提交
105
				if ( event.touches.length == 1 ) {
M
Mr.doob 已提交
106

107 108
					event.preventDefault();

M
Mr.doob 已提交
109 110
					mouseX = event.touches[ 0 ].pageX - windowHalfX;
					mouseY = event.touches[ 0 ].pageY - windowHalfY;
M
Mr.doob 已提交
111

112 113 114
				}
			}

M
Mr.doob 已提交
115
			function onDocumentTouchMove( event ) {
M
Mr.doob 已提交
116

M
Mr.doob 已提交
117
				if ( event.touches.length == 1 ) {
M
Mr.doob 已提交
118

119
					event.preventDefault();
M
Mr.doob 已提交
120

M
Mr.doob 已提交
121 122
					mouseX = event.touches[ 0 ].pageX - windowHalfX;
					mouseY = event.touches[ 0 ].pageY - windowHalfY;
M
Mr.doob 已提交
123

124 125
				}
			}
M
Mr.doob 已提交
126

127
			//
M
Mr.doob 已提交
128

M
Mr.doob 已提交
129
			function loop() {
M
Mr.doob 已提交
130

M
Mr.doob 已提交
131 132
				camera.position.x += ( mouseX - camera.position.x ) * .05;
				camera.position.y += ( - mouseY - camera.position.y ) * .05;
M
Mr.doob 已提交
133 134 135

				var i = 0;

M
Mr.doob 已提交
136
				for ( var ix = 0; ix < AMOUNTX; ix ++ ) {
M
Mr.doob 已提交
137

M
Mr.doob 已提交
138
					for ( var iy = 0; iy < AMOUNTY; iy ++ ) {
M
Mr.doob 已提交
139

M
Mr.doob 已提交
140 141 142
						particle = particles[ i++ ];
						particle.position.y = ( Math.sin( ( ix + count ) * 0.3 ) * 50 ) + ( Math.sin( ( iy + count ) * 0.5 ) * 50 );
						particle.scale.x = particle.scale.y = ( Math.sin( ( ix + count ) * 0.3 ) + 1 ) * 2 + ( Math.sin( ( iy + count ) * 0.5 ) + 1 ) * 2;
M
Mr.doob 已提交
143

M
Mr.doob 已提交
144 145 146
					}
				}

M
Mr.doob 已提交
147
				renderer.render( scene, camera );
M
Mr.doob 已提交
148 149 150 151 152

				stats.update();

				count += 0.1;
			}
M
Mr.doob 已提交
153

M
Mr.doob 已提交
154 155 156
		</script>
	</body>
</html>