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

M
Mr.doob 已提交
14
			a {
15 16 17 18 19
				color:#0078ff;
			}
		</style>
	</head>
	<body>
M
Mr.doob 已提交
20

21
		<script type="text/javascript" src="../build/Three.js"></script>
M
Mr.doob 已提交
22

23
		<script type="text/javascript" src="http://github.com/mrdoob/stats.js/raw/master/build/Stats.js"></script>
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41

		<script type="text/javascript">

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

			var stats;
			var container;

			var particle;

			var camera;
			var scene;
			var renderer;

			var mouseX = 0;
			var mouseY = 0;

42 43
			var windowHalfX = window.innerWidth / 2;
			var windowHalfY = window.innerHeight / 2;
44

M
Mr.doob 已提交
45

46 47 48
			init();
			setInterval(loop, 1000 / 60);

M
Mr.doob 已提交
49
			function init() {
M
Mr.doob 已提交
50

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

54
				camera = new THREE.Camera( 75, SCREEN_WIDTH / SCREEN_HEIGHT, 1, 10000 );
55
				camera.position.z = 1000;
56

M
Mr.doob 已提交
57
				scene = new THREE.Scene();
M
Mr.doob 已提交
58

M
Mr.doob 已提交
59
				renderer = new THREE.CanvasRenderer();
60 61
				renderer.setSize(SCREEN_WIDTH, SCREEN_HEIGHT);

M
Mr.doob 已提交
62
				for (var i = 0; i < 1000; i++) {
M
Mr.doob 已提交
63

64
					particle = new THREE.Particle( new THREE.ParticleCircleMaterial( Math.random() * 0x808008 + 0x808080, 1 ) );
65 66 67
					particle.position.x = Math.random() * 2000 - 1000;
					particle.position.y = Math.random() * 2000 - 1000;
					particle.position.z = Math.random() * 2000 - 1000;
68
					particle.scale.x = particle.scale.y = Math.random() * 10 + 5;
M
Mr.doob 已提交
69
					scene.add(particle);
70 71
				}

M
Mr.doob 已提交
72
				container.appendChild(renderer.domElement);
73 74

				stats = new Stats();
M
Mr.doob 已提交
75 76 77
				stats.domElement.style.position = 'absolute';
				stats.domElement.style.top = '0px';
				container.appendChild(stats.domElement);
M
Mr.doob 已提交
78

79 80
				document.addEventListener('mousemove', onDocumentMouseMove, false);
				document.addEventListener('touchstart', onDocumentTouchStart, false);
81
				document.addEventListener('touchmove', onDocumentTouchMove, false);
82 83 84 85
			}

			//

M
Mr.doob 已提交
86
			function onDocumentMouseMove(event) {
M
Mr.doob 已提交
87

88 89 90
				mouseX = event.clientX - windowHalfX;
				mouseY = event.clientY - windowHalfY;
			}
M
Mr.doob 已提交
91

M
Mr.doob 已提交
92
			function onDocumentTouchStart(event) {
M
Mr.doob 已提交
93

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

96 97 98 99 100 101 102
					event.preventDefault();

					mouseX = event.touches[0].pageX - windowHalfX;
					mouseY = event.touches[0].pageY - windowHalfY;
				}
			}

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

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

107
					event.preventDefault();
M
Mr.doob 已提交
108

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

114 115
			//

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

M
Mr.doob 已提交
118 119
				camera.position.x += (mouseX - camera.position.x) * .05;
				camera.position.y += (-mouseY - camera.position.y) * .05;
120 121 122 123 124

				renderer.render(scene, camera);

				stats.update();
			}
M
Mr.doob 已提交
125

126 127 128
		</script>
	</body>
</html>