MaterialExporter.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.MaterialExporter = function () {};
  5. THREE.MaterialExporter.prototype = {
  6. constructor: THREE.MaterialExporter,
  7. parse: function ( material ) {
  8. var output = {
  9. metadata: {
  10. version: 4.2,
  11. type: 'material',
  12. generator: 'MaterialExporter'
  13. }
  14. };
  15. output.uuid = material.uuid;
  16. if ( material.name !== "" ) output.name = material.name;
  17. if ( material instanceof THREE.MeshBasicMaterial ) {
  18. output.type = 'MeshBasicMaterial';
  19. output.color = material.color.getHex();
  20. if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors;
  21. if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending;
  22. if ( material.side !== THREE.FrontSide ) output.side = material.side;
  23. output.opacity = material.opacity;
  24. output.transparent = material.transparent;
  25. output.wireframe = material.wireframe;
  26. } else if ( material instanceof THREE.MeshLambertMaterial ) {
  27. output.type = 'MeshLambertMaterial';
  28. output.color = material.color.getHex();
  29. output.ambient = material.ambient.getHex();
  30. output.emissive = material.emissive.getHex();
  31. if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors;
  32. if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending;
  33. if ( material.side !== THREE.FrontSide ) output.side = material.side;
  34. output.opacity = material.opacity;
  35. output.transparent = material.transparent;
  36. output.wireframe = material.wireframe;
  37. } else if ( material instanceof THREE.MeshPhongMaterial ) {
  38. output.type = 'MeshPhongMaterial';
  39. output.color = material.color.getHex();
  40. output.ambient = material.ambient.getHex();
  41. output.emissive = material.emissive.getHex();
  42. output.specular = material.specular.getHex();
  43. output.shininess = material.shininess;
  44. if ( material.vertexColors !== THREE.NoColors ) output.vertexColors = material.vertexColors;
  45. if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending;
  46. if ( material.side !== THREE.FrontSide ) output.side = material.side;
  47. output.opacity = material.opacity;
  48. output.transparent = material.transparent;
  49. output.wireframe = material.wireframe;
  50. } else if ( material instanceof THREE.MeshNormalMaterial ) {
  51. output.type = 'MeshNormalMaterial';
  52. if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending;
  53. if ( material.side !== THREE.FrontSide ) output.side = material.side;
  54. output.opacity = material.opacity;
  55. output.transparent = material.transparent;
  56. output.wireframe = material.wireframe;
  57. } else if ( material instanceof THREE.MeshDepthMaterial ) {
  58. output.type = 'MeshDepthMaterial';
  59. if ( material.blending !== THREE.NormalBlending ) output.blending = material.blending;
  60. if ( material.side !== THREE.FrontSide ) output.side = material.side;
  61. output.opacity = material.opacity;
  62. output.transparent = material.transparent;
  63. output.wireframe = material.wireframe;
  64. } else if ( material instanceof THREE.MeshFaceMaterial ) {
  65. output.type = 'MeshFaceMaterial';
  66. output.materials = [];
  67. for ( var i = 0, l = material.materials.length; i < l; i ++ ) {
  68. output.materials.push( this.parse( material.materials[ i ] ) );
  69. }
  70. } else if ( material instanceof THREE.ShaderMaterial ) {
  71. output.type = 'ShaderMaterial';
  72. output.uniforms = material.uniforms;
  73. output.vertexShader = material.vertexShader;
  74. output.fragmentShader = material.fragmentShader;
  75. } else if ( material instanceof THREE.SpriteMaterial ) {
  76. output.type = 'SpriteMaterial';
  77. output.color = material.color.getHex();
  78. output.opacity = material.opacity;
  79. output.transparent = material.transparent;
  80. }
  81. return output;
  82. }
  83. };