diff --git a/docs/api/extras/geometries/DodecahedronGeometry.html b/docs/api/extras/geometries/DodecahedronGeometry.html
index 4136f7cf84e9c4af6c1118dd6465e38b2f00c4c4..e11071efda4304b87befd1d594b7b8fb763f5b8c 100644
--- a/docs/api/extras/geometries/DodecahedronGeometry.html
+++ b/docs/api/extras/geometries/DodecahedronGeometry.html
@@ -13,6 +13,8 @@
A class for generating a dodecahedron geometries.
+
+
Constructor
diff --git a/docs/api/extras/geometries/IcosahedronGeometry.html b/docs/api/extras/geometries/IcosahedronGeometry.html
index 4eef13f7dcf05f61f0c1c5457143e185ddfab769..2c0cb04a68727341576c74af4f843f432e15a967 100644
--- a/docs/api/extras/geometries/IcosahedronGeometry.html
+++ b/docs/api/extras/geometries/IcosahedronGeometry.html
@@ -12,6 +12,7 @@
A class for generating an icosahedron geometry.
+
Constructor
diff --git a/docs/api/extras/geometries/OctahedronGeometry.html b/docs/api/extras/geometries/OctahedronGeometry.html
index baf9404f967f8dc24af7f493b8cb00f3ec88ed91..033673fcce71b685a8cb67f6248fd23f1062f707 100644
--- a/docs/api/extras/geometries/OctahedronGeometry.html
+++ b/docs/api/extras/geometries/OctahedronGeometry.html
@@ -12,6 +12,7 @@
A class for generating an octahedron geometry.
+
Constructor
diff --git a/docs/api/extras/geometries/TetrahedronGeometry.html b/docs/api/extras/geometries/TetrahedronGeometry.html
index bb5c5bca4b3bd56782a5d08758f11620838a232e..29f1195fe1a3154f8e640a85c2d796e8f461d610 100644
--- a/docs/api/extras/geometries/TetrahedronGeometry.html
+++ b/docs/api/extras/geometries/TetrahedronGeometry.html
@@ -13,6 +13,8 @@
A class for generating a tetrahedron geometries.
+
+
Constructor
diff --git a/docs/api/extras/geometries/TorusGeometry.html b/docs/api/extras/geometries/TorusGeometry.html
index 2cac67cfe7ff84b72f8aec59fd2663efabc2244b..a3dbaffdd14e049265ccbdbd61a3ac835f3f0258 100644
--- a/docs/api/extras/geometries/TorusGeometry.html
+++ b/docs/api/extras/geometries/TorusGeometry.html
@@ -13,6 +13,7 @@
A class for generating torus geometries
+
Example
diff --git a/docs/api/extras/geometries/TorusKnotGeometry.html b/docs/api/extras/geometries/TorusKnotGeometry.html
index 80ffa5698eaaf706cb3eb144d83a264cc30520e2..3452449f5ea467039919f75a395e0bda8e20ce81 100644
--- a/docs/api/extras/geometries/TorusKnotGeometry.html
+++ b/docs/api/extras/geometries/TorusKnotGeometry.html
@@ -13,6 +13,8 @@
Creates a torus knot, the particular shape of which is defined by a pair of coprime integers, p and q. If p and q are not coprime, the result will be a torus link.
+
+
Example
diff --git a/docs/scenes/geometry-browser.html b/docs/scenes/geometry-browser.html
new file mode 100644
index 0000000000000000000000000000000000000000..4788d70dbc18dc2d14d764b363350871c35fef84
--- /dev/null
+++ b/docs/scenes/geometry-browser.html
@@ -0,0 +1,129 @@
+
+
+
+
+ Three.js Geometry Browser
+
+
+
+
+ Open in New Window
+
+
+
+
+
+
+
+
+
diff --git a/docs/scenes/js/geometry.js b/docs/scenes/js/geometry.js
new file mode 100644
index 0000000000000000000000000000000000000000..cdac3362e3bb4d26c2c847d79c3bc222bb9f8929
--- /dev/null
+++ b/docs/scenes/js/geometry.js
@@ -0,0 +1,309 @@
+/**
+ * @author TatumCreative (Greg Tatum) / http://gregtatum.com/
+ */
+
+var constants = {
+
+ combine: {
+
+ "THREE.MultiplyOperation" : THREE.MultiplyOperation,
+ "THREE.MixOperation" : THREE.MixOperation,
+ "THREE.AddOperation" : THREE.AddOperation
+
+ },
+
+ side : {
+
+ "THREE.FrontSide" : THREE.FrontSide,
+ "THREE.BackSide" : THREE.BackSide,
+ "THREE.DoubleSide" : THREE.DoubleSide
+
+ },
+
+ shading : {
+
+ "THREE.NoShading" : THREE.NoShading,
+ "THREE.FlatShading" : THREE.FlatShading,
+ "THREE.SmoothShading" : THREE.SmoothShading
+
+ },
+
+ colors : {
+
+ "THREE.NoColors" : THREE.NoColors,
+ "THREE.FaceColors" : THREE.FaceColors,
+ "THREE.VertexColors" : THREE.VertexColors
+
+ },
+
+ blendingMode : {
+
+ "THREE.NoBlending" : THREE.NoBlending,
+ "THREE.NormalBlending" : THREE.NormalBlending,
+ "THREE.AdditiveBlending" : THREE.AdditiveBlending,
+ "THREE.SubtractiveBlending" : THREE.SubtractiveBlending,
+ "THREE.MultiplyBlending" : THREE.MultiplyBlending,
+ "THREE.CustomBlending" : THREE.CustomBlending
+
+ },
+
+ equations : {
+
+ "THREE.AddEquation" : THREE.AddEquation,
+ "THREE.SubtractEquation" : THREE.SubtractEquation,
+ "THREE.ReverseSubtractEquation" : THREE.ReverseSubtractEquation
+
+ },
+
+ destinationFactors : {
+
+ "THREE.ZeroFactor" : THREE.ZeroFactor,
+ "THREE.OneFactor" : THREE.OneFactor,
+ "THREE.SrcColorFactor" : THREE.SrcColorFactor,
+ "THREE.OneMinusSrcColorFactor" : THREE.OneMinusSrcColorFactor,
+ "THREE.SrcAlphaFactor" : THREE.SrcAlphaFactor,
+ "THREE.OneMinusSrcAlphaFactor" : THREE.OneMinusSrcAlphaFactor,
+ "THREE.DstAlphaFactor" : THREE.DstAlphaFactor,
+ "THREE.OneMinusDstAlphaFactor" : THREE.OneMinusDstAlphaFactor
+
+ },
+
+ sourceFactors : {
+
+ "THREE.DstColorFactor" : THREE.DstColorFactor,
+ "THREE.OneMinusDstColorFactor" : THREE.OneMinusDstColorFactor,
+ "THREE.SrcAlphaSaturateFactor" : THREE.SrcAlphaSaturateFactor
+
+ }
+
+}
+
+function updateGroupGeometry( mesh, geometry ) {
+
+ mesh.children[0].geometry = geometry
+ mesh.children[1].geometry = geometry.clone()
+
+ //these do not update nicely together if shared
+}
+
+var guis = {
+
+ TorusGeometry : function( mesh ) {
+
+ var data = {
+ radius : 10,
+ tube : 3,
+ radialSegments : 16,
+ tubularSegments : 100,
+ arc : Math.PI * 2
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.TorusGeometry(
+ data.radius, data.tube, data.radialSegments, data.tubularSegments, data.arc
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.TorusGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'tube', 0.1, 10 ).onChange( generateGeometry )
+ folder.add( data, 'radialSegments', 2, 30 ).step(1).onChange( generateGeometry )
+ folder.add( data, 'tubularSegments', 3, 200 ).step(1).onChange( generateGeometry )
+ folder.add( data, 'arc', 0.1, Math.PI * 2 ).onChange( generateGeometry )
+
+ generateGeometry()
+
+ },
+
+ TorusKnotGeometry : function( mesh ) {
+
+ var data = {
+ radius : 10,
+ tube : 3,
+ radialSegments : 64,
+ tubularSegments : 8,
+ p : 2,
+ q : 3,
+ heightScale : 1
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.TorusKnotGeometry(
+ data.radius, data.tube, data.radialSegments, data.tubularSegments,
+ data.p, data.q, data.heightScale
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.TorusGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'tube', 0.1, 10 ).onChange( generateGeometry )
+ folder.add( data, 'radialSegments', 3, 300 ).step(1).onChange( generateGeometry )
+ folder.add( data, 'tubularSegments', 3, 20 ).step(1).onChange( generateGeometry )
+ folder.add( data, 'p', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'q', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'heightScale', 1, 20 ).onChange( generateGeometry )
+
+ generateGeometry()
+
+ },
+
+ DodecahedronGeometry : function() {
+
+ var data = {
+ radius : 10,
+ detail : 0,
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.DodecahedronGeometry(
+ data.radius, data.detail
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.DodecahedronGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'detail', 0, 5 ).step(1).onChange( generateGeometry )
+
+ generateGeometry()
+
+ },
+
+ IcosahedronGeometry : function() {
+
+ var data = {
+ radius : 10,
+ detail : 0,
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.IcosahedronGeometry(
+ data.radius, data.detail
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.IcosahedronGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'detail', 0, 5 ).step(1).onChange( generateGeometry )
+
+ generateGeometry()
+
+ },
+
+ OctahedronGeometry : function() {
+
+ var data = {
+ radius : 10,
+ detail : 0,
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.OctahedronGeometry(
+ data.radius, data.detail
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.OctahedronGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'detail', 0, 5 ).step(1).onChange( generateGeometry )
+
+ generateGeometry()
+
+ },
+
+ TetrahedronGeometry : function() {
+
+ var data = {
+ radius : 10,
+ detail : 0,
+ };
+
+ function generateGeometry() {
+
+ updateGroupGeometry( mesh,
+ new THREE.TetrahedronGeometry(
+ data.radius, data.detail
+ )
+ )
+
+ }
+
+ var folder = gui.addFolder('THREE.TetrahedronGeometry');
+
+ folder.add( data, 'radius', 1, 20 ).onChange( generateGeometry )
+ folder.add( data, 'detail', 0, 5 ).step(1).onChange( generateGeometry )
+
+ generateGeometry()
+
+ }
+
+}
+
+function chooseFromHash ( mesh ) {
+
+ var selectedGeometry = window.location.hash.substring(1) || "TorusGeometry";
+
+ switch (selectedGeometry) {
+
+ case "TorusGeometry" :
+
+ guis.TorusGeometry( mesh )
+
+ break;
+
+ case "TorusKnotGeometry" :
+
+ guis.TorusKnotGeometry( mesh )
+
+ break;
+
+ case "DodecahedronGeometry" :
+
+ guis.DodecahedronGeometry( mesh )
+
+ break;
+
+ case "IcosahedronGeometry" :
+
+ guis.IcosahedronGeometry( mesh )
+
+ break;
+
+ case "OctahedronGeometry" :
+
+ guis.OctahedronGeometry( mesh )
+
+ break;
+
+ case "TetrahedronGeometry" :
+
+ guis.TetrahedronGeometry( mesh )
+
+ break;
+ }
+
+}