Program.cs 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using System;
  2. using System.Numerics;
  3. using SharpGLTF.Geometry;
  4. using SharpGLTF.Materials;
  5. using SharpGLTF.Schema2;
  6. namespace PointCloudGalaxy
  7. {
  8. class Program
  9. {
  10. static void Main(string[] args)
  11. {
  12. var material = new MaterialBuilder("material1").WithUnlitShader();
  13. var mesh = new MeshBuilder<SharpGLTF.Geometry.VertexTypes.VertexPosition, SharpGLTF.Geometry.VertexTypes.VertexColor1>("points");
  14. // create a point cloud primitive
  15. var pointCloud = mesh.UsePrimitive(material, 1);
  16. var galaxy = new Galaxy();
  17. galaxy.scaleOverPlane = 0.05f;
  18. galaxy.randomJitter = 0.01f;
  19. foreach(var startPoint in galaxy.CreateStarts(50000))
  20. {
  21. pointCloud.AddPoint((startPoint, Vector4.One));
  22. }
  23. galaxy.scaleOverPlane = 0.15f;
  24. galaxy.randomJitter = 0.02f;
  25. foreach (var startPoint in galaxy.CreateStarts(50000))
  26. {
  27. pointCloud.AddPoint((startPoint, new Vector4(0.4f, 0.8f, 0.7f, 1)));
  28. }
  29. galaxy.randomJitter = 0.07f;
  30. foreach (var startPoint in galaxy.CreateStarts(10000))
  31. {
  32. pointCloud.AddPoint((startPoint, new Vector4(0.2f, 0.6f, 0.5f, 1)));
  33. }
  34. // create a new gltf model
  35. var model = ModelRoot.CreateModel();
  36. // add all meshes (just one in this case) to the model
  37. model.CreateMeshes(mesh);
  38. // create a scene, a node, and assign the first mesh (the terrain)
  39. model.UseScene("Default")
  40. .CreateNode().WithMesh(model.LogicalMeshes[0]);
  41. // save the model as GLB
  42. model.SaveGLB("Galaxy.glb");
  43. }
  44. }
  45. }