Ver Fonte

added .addAttribute() method to bufferGeometry & updated examples

ohmed há 11 anos atrás
pai
commit
770b693630

+ 6 - 19
examples/webgl_buffergeometry.html

@@ -34,7 +34,7 @@
 		<div id="container"></div>
 		<div id="info"><a href="http://threejs.org" target="_blank">three.js</a> webgl - buffergeometry</div>
 
-		<script src="../build/three.min.js"></script>
+		<script src="../build/three.js"></script>
 
 		<script src="js/Detector.js"></script>
 		<script src="js/libs/stats.min.js"></script>
@@ -81,24 +81,11 @@
 				var triangles = 160000;
 
 				var geometry = new THREE.BufferGeometry();
-				geometry.attributes = {
-					index: {
-						itemSize: 1,
-						array: new Uint16Array( triangles * 3 )
-					},
-					position: {
-						itemSize: 3,
-						array: new Float32Array( triangles * 3 * 3 )
-					},
-					normal: {
-						itemSize: 3,
-						array: new Float32Array( triangles * 3 * 3 )
-					},
-					color: {
-						itemSize: 3,
-						array: new Float32Array( triangles * 3 * 3 )
-					}
-				}
+
+				geometry.addAtribute( 'index', Uint16Array, 3 * triangles, 1 );
+				geometry.addAtribute( 'position', Float32Array, 3 * triangles, 3 );
+				geometry.addAtribute( 'normal', Float32Array, 3 * triangles, 3 );
+				geometry.addAtribute( 'color', Float32Array, 3 * triangles, 3 );
 
 				// break geometry into
 				// chunks of 21,845 triangles (3 unique vertices per triangle)

+ 5 - 18
examples/webgl_buffergeometry_custom_attributes_particles.html

@@ -34,7 +34,7 @@
 		<div id="info"><a href="http://threejs.org" target="_blank">three.js</a> - buffergeometry custom attributes example - particles</div>
 		<div id="container"></div>
 
-		<script src="../build/three.min.js"></script>
+		<script src="../build/three.js"></script>
 		<script src="../src/renderers/WebGLRenderer.js"></script>
 
 		<script src="js/Detector.js"></script>
@@ -137,24 +137,11 @@
 
 			geometry = new THREE.BufferGeometry();
 			// geometry.dynamic = true;
-			geometry.attributes = {
-
-				position: {
-					itemSize: 3,
-					array: new Float32Array( particles * 3 )
-				},
-				customColor: {
-					itemSize: 3,
-					array: new Float32Array( particles * 3 )
-				},
-				size: {
-					itemSize: 1,
-					array: new Float32Array( particles ),
-					dynamic: true
-				},
-
-			}
 
+			geometry.addAtribute( 'position', Float32Array, particles, 3 );
+			geometry.addAtribute( 'customColor', Float32Array, particles, 3 );
+			geometry.addAtribute( 'size', Float32Array, particles, 1 );
+			geometry.attributes.size.dynamic = true;
 
 			values_size = geometry.attributes.size.array;
 			var positions = geometry.attributes.position.array;

+ 2 - 10
examples/webgl_buffergeometry_lines.html

@@ -69,16 +69,8 @@
 				var geometry = new THREE.BufferGeometry();
 				var material = new THREE.LineBasicMaterial({ vertexColors: true });
 
-				geometry.attributes = {
-					position: {
-						itemSize: 3,
-						array: new Float32Array(segments * 3)
-					},
-					color: {
-						itemSize: 3,
-						array: new Float32Array(segments * 3)
-					}
-				};
+				geometry.addAtribute( 'position', Float32Array, segments, 3 );
+				geometry.addAtribute( 'color', Float32Array, segments, 3 );
 
 				var positions = geometry.attributes.position.array;
 				var colors = geometry.attributes.color.array;

+ 2 - 12
examples/webgl_buffergeometry_particles.html

@@ -68,19 +68,9 @@
 				var particles = 500000;
 
 				var geometry = new THREE.BufferGeometry();
-				geometry.attributes = {
-
-					position: {
-						itemSize: 3,
-						array: new Float32Array( particles * 3 )
-					},
-					color: {
-						itemSize: 3,
-						array: new Float32Array( particles * 3 )
-					}
-
-				}
 
+				geometry.addAtribute( 'position', Float32Array, particles, 3 );
+				geometry.addAtribute( 'color', Float32Array, particles, 3 );
 
 				var positions = geometry.attributes.position.array;
 				var colors = geometry.attributes.color.array;

+ 11 - 0
src/core/BufferGeometry.js

@@ -38,6 +38,17 @@ THREE.BufferGeometry.prototype = {
 
 	constructor: THREE.BufferGeometry,
 
+	addAtribute: function( name, type, amount, itemSize ) {
+
+		this.attributes[ name ] = {
+
+			itemSize: 	 itemSize,
+			array: 		 new type( amount * itemSize )
+
+		};
+
+	},
+
 	applyMatrix: function ( matrix ) {
 
 		var positionArray;