webgl_buffergeometry_lines.html 3.1 KB
Newer Older
1 2 3
<!DOCTYPE html>
<html lang="en">
	<head>
4
		<title>three.js webgl - buffergeometry - lines</title>
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
		<meta charset="utf-8">
		<meta name="viewport" content="width=device-width, user-scalable=no, minimum-scale=1.0, maximum-scale=1.0">
		<style>
			body {
				color: #cccccc;
				font-family:Monospace;
				font-size:13px;
				text-align:center;

				background-color: #000000;
				margin: 0px;
				overflow: hidden;
			}

			#info {
				position: absolute;
				top: 0px; width: 100%;
				padding: 5px;
			}

			a {
				color: #0080ff;
			}

		</style>
	</head>
	<body>

		<div id="container"></div>
34
		<div id="info"><a href="http://threejs.org" target="_blank" rel="noopener">three.js</a> webgl - buffergeometry - lines</div>
35

W
WestLangley 已提交
36
		<script src="../build/three.js"></script>
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

		<script src="js/Detector.js"></script>
		<script src="js/libs/stats.min.js"></script>

		<script>

			if ( ! Detector.webgl ) Detector.addGetWebGLMessage();

			var container, stats;

			var camera, scene, renderer;

			var mesh;

			init();
			animate();

			function init() {

				container = document.getElementById( 'container' );

				//

				camera = new THREE.PerspectiveCamera( 27, window.innerWidth / window.innerHeight, 1, 4000 );
				camera.position.z = 2750;

				scene = new THREE.Scene();

M
Mr.doob 已提交
65
				var segments = 10000;
66

M
Mr.doob 已提交
67
				var geometry = new THREE.BufferGeometry();
68
				var material = new THREE.LineBasicMaterial( { vertexColors: THREE.VertexColors } );
69

70 71
				var positions = [];
				var colors = [];
72

M
Mr.doob 已提交
73
				var r = 800;
74

M
Mr.doob 已提交
75
				for ( var i = 0; i < segments; i ++ ) {
76

M
Mr.doob 已提交
77 78 79
					var x = Math.random() * r - r / 2;
					var y = Math.random() * r - r / 2;
					var z = Math.random() * r - r / 2;
80

M
Mr.doob 已提交
81
					// positions
82

83
					positions.push( x, y, z );
84

M
Mr.doob 已提交
85
					// colors
86

87 88 89 90 91


					colors.push( ( x / r ) + 0.5 );
					colors.push( ( y / r ) + 0.5 );
					colors.push( ( z / r ) + 0.5 );
92

M
Mr.doob 已提交
93
				}
94

95 96
				geometry.addAttribute( 'position', new THREE.Float32BufferAttribute( positions, 3 ) );
				geometry.addAttribute( 'color', new THREE.Float32BufferAttribute( colors, 3 ) );
97

98 99 100 101 102 103 104
				geometry.computeBoundingSphere();

				mesh = new THREE.Line( geometry, material );
				scene.add( mesh );

				//

105
				renderer = new THREE.WebGLRenderer( { antialias: false } );
106
				renderer.setPixelRatio( window.devicePixelRatio );
107 108 109 110 111 112 113 114 115 116
				renderer.setSize( window.innerWidth, window.innerHeight );

				renderer.gammaInput = true;
				renderer.gammaOutput = true;

				container.appendChild( renderer.domElement );

				//

				stats = new Stats();
M
Mr.doob 已提交
117
				container.appendChild( stats.dom );
118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159

				//

				window.addEventListener( 'resize', onWindowResize, false );

			}

			function onWindowResize() {

				camera.aspect = window.innerWidth / window.innerHeight;
				camera.updateProjectionMatrix();

				renderer.setSize( window.innerWidth, window.innerHeight );

			}

			//

			function animate() {

				requestAnimationFrame( animate );

				render();
				stats.update();

			}

			function render() {

				var time = Date.now() * 0.001;

				mesh.rotation.x = time * 0.25;
				mesh.rotation.y = time * 0.5;

				renderer.render( scene, camera );

			}

		</script>

	</body>
</html>