ExportMeshAndSplatmap.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. namespace AmazingAssets.TerrainToMesh.Example
  5. {
  6. [RequireComponent(typeof(MeshFilter), typeof(MeshRenderer))]
  7. public class ExportMeshAndSplatmap : MonoBehaviour
  8. {
  9. public TerrainData terrainData;
  10. public int vertexCountHorizontal = 100;
  11. public int vertexCountVertical = 100;
  12. public bool terrainHasHoles = false;
  13. public bool createFallbackTextures;
  14. void Start()
  15. {
  16. if (terrainData == null)
  17. return;
  18. //1. Export mesh with edge fall/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  19. Mesh terrainMesh = terrainData.TerrainToMesh().ExportMesh(vertexCountHorizontal, vertexCountVertical, TerrainToMesh.Normal.CalculateFromMesh);
  20. GetComponent<MeshFilter>().sharedMesh = terrainMesh;
  21. //2. Export Splatmap material from terrain/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
  22. Material splatmapMaterial = terrainData.TerrainToMesh().ExportSplatmapMaterial(terrainHasHoles);
  23. GetComponent<Renderer>().sharedMaterial = splatmapMaterial;
  24. //3. Fallback for Splatmap material
  25. if (createFallbackTextures)
  26. {
  27. Texture2D fallbackDiffuse = terrainData.TerrainToMesh().ExportBasemapDiffuseTexture(1024, terrainHasHoles, false);
  28. Texture2D fallbackNormal = terrainData.TerrainToMesh().ExportBasemapNormalTexture(1024, false);
  29. splatmapMaterial.SetTexture(Utilities.GetMaterailPropMainTex(), fallbackDiffuse);
  30. splatmapMaterial.SetTexture(Utilities.GetMaterailPropBumpMap(), fallbackNormal);
  31. }
  32. }
  33. }
  34. }