From 95c8a1af59221ca4c065bc57fae5cf2a47e454ef Mon Sep 17 00:00:00 2001 From: clintonman Date: Sat, 22 Dec 2018 21:55:14 -0800 Subject: [PATCH 1/4] adjusted collada export shader elements to follow the collada standard, changed material to get number of materials from the material array instead of the empty geometry.groups array and added an example for the changes --- examples/js/exporters/ColladaExporter.js | 38 +- examples/webgl_geometry_teapot_collada.html | 428 ++++++++++++++++++++ 2 files changed, 451 insertions(+), 15 deletions(-) create mode 100644 examples/webgl_geometry_teapot_collada.html diff --git a/examples/js/exporters/ColladaExporter.js b/examples/js/exporters/ColladaExporter.js index fa83fe28730b78..3cebc36d8735e7 100644 --- a/examples/js/exporters/ColladaExporter.js +++ b/examples/js/exporters/ColladaExporter.js @@ -402,28 +402,35 @@ THREE.ColladaExporter.prototype = { '' + - '' + - ( - m.map ? - '' : - `${ diffuse.r } ${ diffuse.g } ${ diffuse.b } 1` + type !== 'constant' ? + '' + + + ( + m.map ? + '' : + `${ diffuse.r } ${ diffuse.g } ${ diffuse.b } 1` + ) + + '' + : '' ) + - '' + + ( + type === 'phong' ? + `${ specular.r } ${ specular.g } ${ specular.b } 1` + - `${ specular.r } ${ specular.g } ${ specular.b } 1` + + '' + - '' + + ( + m.specularMap ? + '' : + `${ shininess }` + ) + - ( - m.specularMap ? - '' : - `${ shininess }` + '' + : '' ) + - '' + - `${ diffuse.r } ${ diffuse.g } ${ diffuse.b } 1` + `${ reflectivity }` + @@ -508,7 +515,8 @@ THREE.ColladaExporter.prototype = { // the materials. var mat = o.material || new THREE.MeshBasicMaterial(); var materials = Array.isArray( mat ) ? mat : [ mat ]; - matids = new Array( geometry.groups.length ) + // matids = new Array( geometry.groups.length ) + matids = new Array( materials.length ) .fill() .map( ( v, i ) => processMaterial( materials[ i % materials.length ] ) ); diff --git a/examples/webgl_geometry_teapot_collada.html b/examples/webgl_geometry_teapot_collada.html new file mode 100644 index 00000000000000..eb8da19cbe8539 --- /dev/null +++ b/examples/webgl_geometry_teapot_collada.html @@ -0,0 +1,428 @@ + + + + three.js webgl - teapot buffer geometry + + + + + +
+ three.js - the Utah Teapot
+ from Udacity Interactive 3D Graphics + +
+ + + + + + + + + + + + + + + + + From 3d93da45d5777ddf85fa1059da0ba02f5d3d4c82 Mon Sep 17 00:00:00 2001 From: clinton Date: Sun, 23 Dec 2018 09:40:18 -0800 Subject: [PATCH 2/4] fixed my matid error, changed output file names to be unique, removed console logs --- examples/js/exporters/ColladaExporter.js | 11 ++++--- examples/webgl_geometry_teapot_collada.html | 32 ++++++++------------- 2 files changed, 19 insertions(+), 24 deletions(-) diff --git a/examples/js/exporters/ColladaExporter.js b/examples/js/exporters/ColladaExporter.js index 3cebc36d8735e7..9733f4bc76ede1 100644 --- a/examples/js/exporters/ColladaExporter.js +++ b/examples/js/exporters/ColladaExporter.js @@ -509,18 +509,21 @@ THREE.ColladaExporter.prototype = { // ids of the materials to bind to the geometry var matids = null; + var matidsArray = []; // get a list of materials to bind to the sub groups of the geometry. // If the amount of subgroups is greater than the materials, than reuse // the materials. var mat = o.material || new THREE.MeshBasicMaterial(); var materials = Array.isArray( mat ) ? mat : [ mat ]; - // matids = new Array( geometry.groups.length ) - matids = new Array( materials.length ) - .fill() + if ( geometry.groups.length > materials.length ) { + matidsArray = new Array( geometry.groups.length ); + } else { + matidsArray = new Array( materials.length ) + } + matids = matidsArray.fill() .map( ( v, i ) => processMaterial( materials[ i % materials.length ] ) ); - node += `` + diff --git a/examples/webgl_geometry_teapot_collada.html b/examples/webgl_geometry_teapot_collada.html index eb8da19cbe8539..8c18fbf0fbcb99 100644 --- a/examples/webgl_geometry_teapot_collada.html +++ b/examples/webgl_geometry_teapot_collada.html @@ -366,7 +366,8 @@ } var exporter = new THREE.ColladaExporter(); - function exportASCII() { + + function saveColladaFile() { var result = exporter.parse( teapot ); var material_type = "Phong"; @@ -376,24 +377,14 @@ if ( shading === "smooth" ) { material_type = "Lambert" } - console.log(result.textures) - saveString( result.data, 'teapot_' + material_type + '.dae' ); + + saveString( result.data, 'teapot_' + shading + "_" + material_type + '.dae' ); result.textures.forEach( tex => { saveArrayBuffer( tex.data, `${ tex.name }.${ tex.ext }` ); }); } - var link = document.createElement( 'a' ); - link.style.display = 'none'; - document.body.appendChild( link ); - - var savecolladabutton = document.getElementById("savecolladabutton"); - savecolladabutton.addEventListener('click', function(){ - exportASCII(); - }); - - function save( blob, filename ) { link.href = URL.createObjectURL( blob ); @@ -408,19 +399,20 @@ } - function exportBinary() { - - var result = exporter.parse( mesh, { binary: true } ); - saveArrayBuffer( result, 'box.stl' ); - - } - function saveArrayBuffer( buffer, filename ) { save( new Blob( [ buffer ], { type: 'application/octet-stream' } ), filename ); } + var link = document.createElement( 'a' ); + link.style.display = 'none'; + document.body.appendChild( link ); + + var savecolladabutton = document.getElementById("savecolladabutton"); + savecolladabutton.addEventListener('click', function(){ + saveColladaFile(); + }); From 10076261910409282ab2be3f3235f67a6722fb6d Mon Sep 17 00:00:00 2001 From: clinton Date: Sun, 23 Dec 2018 23:11:45 -0800 Subject: [PATCH 3/4] changed html title to three.js webgl - collada exporter and renamed the file from webgl_geometry_teapot_collada.html to misc_exporter_collada.html --- ..._geometry_teapot_collada.html => misc_exporter_collada.html} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename examples/{webgl_geometry_teapot_collada.html => misc_exporter_collada.html} (99%) diff --git a/examples/webgl_geometry_teapot_collada.html b/examples/misc_exporter_collada.html similarity index 99% rename from examples/webgl_geometry_teapot_collada.html rename to examples/misc_exporter_collada.html index 8c18fbf0fbcb99..88cc0825c4d75d 100644 --- a/examples/webgl_geometry_teapot_collada.html +++ b/examples/misc_exporter_collada.html @@ -1,7 +1,7 @@ - three.js webgl - teapot buffer geometry + three.js webgl - collada exporter