StandardMaterial.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. scene.AddTexture(DiffuseTexture);
  56. }
  57. }
  58. }