StandardMaterial.cs 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. using System;
  2. using System.IO;
  3. using BabylonExport.Core.Exporters;
  4. using SharpDX;
  5. namespace BabylonExport.Core
  6. {
  7. public class StandardMaterial
  8. {
  9. public string Name { get; set; }
  10. public Color3 Diffuse { get; set; }
  11. public Color3 Emissive { get; set; }
  12. public Color3 Specular { get; set; }
  13. public float Alpha { get; set; }
  14. public float SpecularPower { get; set; }
  15. public string DiffuseTexture { get; set; }
  16. public bool BackFaceCulling { get; set; }
  17. public Guid ID
  18. {
  19. get;
  20. private set;
  21. }
  22. public StandardMaterial(string name)
  23. {
  24. ID = Guid.NewGuid();
  25. Name = name;
  26. DiffuseTexture = "";
  27. Diffuse = new Color3(1, 1, 1);
  28. Specular = new Color3(1, 1, 1);
  29. SpecularPower = 32;
  30. Alpha = 1.0f;
  31. BackFaceCulling = true;
  32. }
  33. public void CreateBabylonMaterial(BabylonScene scene)
  34. {
  35. var babylonMaterial = new BabylonMaterial();
  36. scene.MaterialsList.Add(babylonMaterial);
  37. // Guid
  38. babylonMaterial.id = ID.ToString();
  39. // Name
  40. babylonMaterial.name = Name;
  41. // Data
  42. babylonMaterial.backFaceCulling = BackFaceCulling;
  43. babylonMaterial.diffuse = Diffuse.ToArray();
  44. babylonMaterial.emissive = Emissive.ToArray();
  45. babylonMaterial.specular = Specular.ToArray();
  46. babylonMaterial.specularPower = SpecularPower;
  47. babylonMaterial.alpha = Alpha;
  48. if (string.IsNullOrEmpty(DiffuseTexture))
  49. {
  50. babylonMaterial.diffuseTexture = null;
  51. return;
  52. }
  53. babylonMaterial.diffuseTexture = new BabylonTexture();
  54. babylonMaterial.diffuseTexture.name = Path.GetFileName(DiffuseTexture);
  55. if (babylonMaterial.diffuseTexture.name.ToLower().EndsWith(".png")) // Only PNGs have transparency, otherwise .JPG
  56. babylonMaterial.diffuseTexture.hasAlpha = true;
  57. scene.AddTexture(DiffuseTexture);
  58. }
  59. }
  60. }