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 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" src="http://github.com/mrdoob/stats.js/raw/master/build/stats.js"></script>

		<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
				container = document.createElement('div');
M
Mr.doob 已提交
54 55
				document.body.appendChild(container);

56 57
				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 0.0001, 10000 );
				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 63 64 65 66
				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

				particles = new Array();

				var i = 0;
M
Mr.doob 已提交
67
				var material = new THREE.ColorFillMaterial(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
						particle = particles[i++] = new THREE.Particle( material );
M
Mr.doob 已提交
74 75 76 77 78 79 80 81 82
						particle.size = 1;
						particle.position.x = ix * SEPARATION - ((AMOUNTX * SEPARATION) / 2);
						particle.position.z = iy * SEPARATION - ((AMOUNTY * SEPARATION) / 2);
						scene.add( particle );
					}
				}

				count = 0;

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

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

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

95 96
			//

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

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

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

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

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

108 109 110 111
					event.preventDefault();

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

113 114 115
				}
			}

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

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

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

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

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

128
			//
M
Mr.doob 已提交
129

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

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

				var i = 0;

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

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

M
Mr.doob 已提交
141
						particle = particles[i++];
M
Mr.doob 已提交
142
						particle.size = (Math.sin((ix + count) * .3) + 1) * 2 + (Math.sin((iy + count) * .5) + 1) * 2;
M
Mr.doob 已提交
143
						particle.position.y = (Math.sin((ix + count) * .3) * 50) + (Math.sin((iy + count) * .5) * 50);
M
Mr.doob 已提交
144

M
Mr.doob 已提交
145 146 147 148 149 150 151 152 153
					}
				}

				renderer.render(scene, camera);

				stats.update();

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

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