From 3281097c577f7becfbd18bfb041b06924f2b3db2 Mon Sep 17 00:00:00 2001 From: "Mr.doob" Date: Tue, 11 Mar 2014 21:53:27 -0400 Subject: [PATCH] Undecided... --- src/extras/geometries/PlaneBufferGeometry.js | 93 -------------------- src/extras/geometries/PlaneGeometry.js | 86 +++++++++++++++++- utils/build/includes/extras.json | 1 - 3 files changed, 85 insertions(+), 95 deletions(-) delete mode 100644 src/extras/geometries/PlaneBufferGeometry.js diff --git a/src/extras/geometries/PlaneBufferGeometry.js b/src/extras/geometries/PlaneBufferGeometry.js deleted file mode 100644 index 630911b88a..0000000000 --- a/src/extras/geometries/PlaneBufferGeometry.js +++ /dev/null @@ -1,93 +0,0 @@ -/** - * @author mrdoob / http://mrdoob.com/ - * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as - */ - -THREE.PlaneBufferGeometry = function ( width, height, widthSegments, heightSegments ) { - - THREE.BufferGeometry.call( this ); - - this.parameters = { - width: width, - height: height, - widthSegments: widthSegments, - heightSegments: heightSegments - }; - - var width_half = width / 2; - var height_half = height / 2; - - var gridX = widthSegments || 1; - var gridY = heightSegments || 1; - - var gridX1 = gridX + 1; - var gridY1 = gridY + 1; - - var segment_width = width / gridX; - var segment_height = height / gridY; - - var vertices = new Float32Array( gridX1 * gridY1 * 3 ); - var normals = new Float32Array( gridX1 * gridY1 * 3 ); - var uvs = new Float32Array( gridX1 * gridY1 * 2 ); - - var offset = 0; - var offset2 = 0; - - for ( var iy = 0; iy < gridY1; iy ++ ) { - - var y = iy * segment_height - height_half; - - for ( var ix = 0; ix < gridX1; ix ++ ) { - - var x = ix * segment_width - width_half; - - vertices[ offset ] = x; - vertices[ offset + 1 ] = - y; - - normals[ offset + 2 ] = 1; - - uvs[ offset2 ] = ix / gridX; - uvs[ offset2 + 1 ] = 1 - ( iy / gridY ); - - offset += 3; - offset2 += 2; - - } - - } - - offset = 0; - - var indices = new Uint16Array( gridX * gridY * 6 ); - - for ( var iy = 0; iy < gridY; iy ++ ) { - - for ( var ix = 0; ix < gridX; ix ++ ) { - - var a = ix + gridX1 * iy; - var b = ix + gridX1 * ( iy + 1 ); - var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); - var d = ( ix + 1 ) + gridX1 * iy; - - indices[ offset ] = a; - indices[ offset + 1 ] = b; - indices[ offset + 2 ] = d; - - indices[ offset + 3 ] = b; - indices[ offset + 4 ] = c; - indices[ offset + 5 ] = d; - - offset += 6; - - } - - } - - this.attributes[ 'index' ] = { array: indices, itemSize: 1 }; - this.attributes[ 'position' ] = { array: vertices, itemSize: 3 }; - this.attributes[ 'normal' ] = { array: normals, itemSize: 3 }; - this.attributes[ 'uv' ] = { array: uvs, itemSize: 2 }; - -}; - -THREE.PlaneBufferGeometry.prototype = Object.create( THREE.BufferGeometry.prototype ); diff --git a/src/extras/geometries/PlaneGeometry.js b/src/extras/geometries/PlaneGeometry.js index da76183d8d..85480c043a 100644 --- a/src/extras/geometries/PlaneGeometry.js +++ b/src/extras/geometries/PlaneGeometry.js @@ -1,9 +1,93 @@ /** * @author mrdoob / http://mrdoob.com/ + * based on http://papervision3d.googlecode.com/svn/trunk/as3/trunk/src/org/papervision3d/objects/primitives/Plane.as */ THREE.PlaneGeometry = function ( width, height, widthSegments, heightSegments ) { - return new THREE.Geometry2( new THREE.PlaneBufferGeometry( width, height, widthSegments, heightSegments ) ); + THREE.BufferGeometry.call( this ); + + this.parameters = { + width: width, + height: height, + widthSegments: widthSegments, + heightSegments: heightSegments + }; + + var width_half = width / 2; + var height_half = height / 2; + + var gridX = widthSegments || 1; + var gridY = heightSegments || 1; + + var gridX1 = gridX + 1; + var gridY1 = gridY + 1; + + var segment_width = width / gridX; + var segment_height = height / gridY; + + var vertices = new Float32Array( gridX1 * gridY1 * 3 ); + var normals = new Float32Array( gridX1 * gridY1 * 3 ); + var uvs = new Float32Array( gridX1 * gridY1 * 2 ); + + var offset = 0; + var offset2 = 0; + + for ( var iy = 0; iy < gridY1; iy ++ ) { + + var y = iy * segment_height - height_half; + + for ( var ix = 0; ix < gridX1; ix ++ ) { + + var x = ix * segment_width - width_half; + + vertices[ offset ] = x; + vertices[ offset + 1 ] = - y; + + normals[ offset + 2 ] = 1; + + uvs[ offset2 ] = ix / gridX; + uvs[ offset2 + 1 ] = 1 - ( iy / gridY ); + + offset += 3; + offset2 += 2; + + } + + } + + offset = 0; + + var indices = new Uint16Array( gridX * gridY * 6 ); + + for ( var iy = 0; iy < gridY; iy ++ ) { + + for ( var ix = 0; ix < gridX; ix ++ ) { + + var a = ix + gridX1 * iy; + var b = ix + gridX1 * ( iy + 1 ); + var c = ( ix + 1 ) + gridX1 * ( iy + 1 ); + var d = ( ix + 1 ) + gridX1 * iy; + + indices[ offset ] = a; + indices[ offset + 1 ] = b; + indices[ offset + 2 ] = d; + + indices[ offset + 3 ] = b; + indices[ offset + 4 ] = c; + indices[ offset + 5 ] = d; + + offset += 6; + + } + + } + + this.attributes[ 'index' ] = { array: indices, itemSize: 1 }; + this.attributes[ 'position' ] = { array: vertices, itemSize: 3 }; + this.attributes[ 'normal' ] = { array: normals, itemSize: 3 }; + this.attributes[ 'uv' ] = { array: uvs, itemSize: 2 }; }; + +THREE.PlaneGeometry.prototype = Object.create( THREE.BufferGeometry.prototype ); diff --git a/utils/build/includes/extras.json b/utils/build/includes/extras.json index 52edcda99b..0d3bd9b905 100644 --- a/utils/build/includes/extras.json +++ b/utils/build/includes/extras.json @@ -32,7 +32,6 @@ "src/extras/geometries/ExtrudeGeometry.js", "src/extras/geometries/ShapeGeometry.js", "src/extras/geometries/LatheGeometry.js", - "src/extras/geometries/PlaneBufferGeometry.js", "src/extras/geometries/PlaneGeometry.js", "src/extras/geometries/RingGeometry.js", "src/extras/geometries/SphereGeometry.js", -- GitLab