Ver Fonte

Updated CTMLoader to the new BufferAttribute. Minor improvements to BufferAttribute. Fixes #4731.

Mr.doob há 11 anos atrás
pai
commit
b1b9c36307
2 ficheiros alterados com 28 adições e 14 exclusões
  1. 14 14
      examples/js/loaders/ctm/CTMLoader.js
  2. 14 0
      src/core/BufferAttribute.js

+ 14 - 14
examples/js/loaders/ctm/CTMLoader.js

@@ -197,31 +197,31 @@ THREE.CTMLoader.prototype.createModel = function ( file, callback ) {
 		this.materials = [];
 
 		// init GL buffers
-		var vertexIndexArray = file.body.indices,
-		vertexPositionArray = file.body.vertices,
-		vertexNormalArray = file.body.normals;
+		var indices = file.body.indices,
+		positions = file.body.vertices,
+		normals = file.body.normals;
 
-		var vertexUvArray, vertexColorArray;
+		var uvs, colors;
 
 		if ( file.body.uvMaps !== undefined && file.body.uvMaps.length > 0 ) {
-			vertexUvArray = file.body.uvMaps[ 0 ].uv;
+			uvs = file.body.uvMaps[ 0 ].uv;
 		}
 
 		if ( file.body.attrMaps !== undefined && file.body.attrMaps.length > 0 && file.body.attrMaps[ 0 ].name === "Color" ) {
-			vertexColorArray = file.body.attrMaps[ 0 ].attr;
+			colors = file.body.attrMaps[ 0 ].attr;
 		}
 
-		this.addAttribute( 'index', vertexIndexArray, 1 );
-		this.addAttribute( 'position', vertexPositionArray, 3 );
+		this.addAttribute( 'index', new THREE.Uint32Attribute( indices.length, 1 ).set( indices ) );
+		this.addAttribute( 'position', new THREE.Float32Attribute( positions.length, 3 ).set( positions ) );
 
-		if ( vertexNormalArray !== undefined ) 
-			this.addAttribute( 'normal', vertexNormalArray, 3 );
+		if ( normals !== undefined ) 
+			this.addAttribute( 'normal', new THREE.Float32Attribute( normals.length, 3 ).set( normals ) );
 
-		if ( vertexUvArray !== undefined ) 
-			this.addAttribute( 'uv', vertexUvArray, 2 );
+		if ( uvs !== undefined ) 
+			this.addAttribute( 'uv', new THREE.Float32Attribute( uvs.length, 2 ).set( uvs ) );
 
-		if ( vertexColorArray !== undefined ) 
-			this.addAttribute( 'color', vertexColorArray, 4 );
+		if ( colors !== undefined ) 
+			this.addAttribute( 'color', new THREE.Float32Attribute( colors.length, 4 ).set( colors ) );
 
 	}
 

+ 14 - 0
src/core/BufferAttribute.js

@@ -18,24 +18,32 @@ THREE.BufferAttribute.prototype = {
 
 		this.array.set( value );
 
+		return this;
+
 	},
 
 	setX: function ( index, x ) {
 
 		this.array[ index * this.itemSize ] = x;
 
+		return this;
+
 	},
 
 	setY: function ( index, y ) {
 
 		this.array[ index * this.itemSize + 1 ] = y;
 
+		return this;
+
 	},
 
 	setZ: function ( index, z ) {
 
 		this.array[ index * this.itemSize + 2 ] = z;
 
+		return this;
+
 	},
 
 	setXY: function ( index, x, y ) {
@@ -45,6 +53,8 @@ THREE.BufferAttribute.prototype = {
 		this.array[ index     ] = x;
 		this.array[ index + 1 ] = y;
 
+		return this;
+
 	},
 
 	setXYZ: function ( index, x, y, z ) {
@@ -55,6 +65,8 @@ THREE.BufferAttribute.prototype = {
 		this.array[ index + 1 ] = y;
 		this.array[ index + 2 ] = z;
 
+		return this;
+
 	},
 
 	setXYZW: function ( index, x, y, z, w ) {
@@ -66,6 +78,8 @@ THREE.BufferAttribute.prototype = {
 		this.array[ index + 2 ] = z;
 		this.array[ index + 3 ] = w;
 
+		return this;
+
 	}
 
 };