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; + } + +}