灰度图
 
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class CreatTerrain : MonoBehaviour
{
    public Texture2D texture;
    // Start is called before the first frame update
    void Start()
    {
        int w = texture.width;
        int h = texture.height;
        VertexHelper vh = new VertexHelper();
        for (int x = 0; x < w; x++)
        {
            for (int z = 0; z < h; z++)
            {
                //获取图片中像素的颜色
                Color color = texture.GetPixel(x, z);
                //从颜色中获取灰度值
                float y = color.grayscale;
                float uvx = (float)x / (float)(w - 1);
                float uvy = (float)z / (float)(h - 1);
                vh.AddVert(new Vector3(x, y, z), Color.white, new Vector2(uvx, uvy));
                if (x != w - 1 && z != h - 1)
                {
                    vh.AddTriangle(x * h + z, x * h + z + 1, (x + 1) * h + z + 1);
                    vh.AddTriangle(x * h + z, (x + 1) * h + z + 1, (x + 1) * h + z);
                }
            }
        }
        Mesh mesh = new Mesh();
        vh.FillMesh(mesh);
        GetComponent<MeshFilter>().mesh = mesh;
        GetComponent<MeshCollider>().sharedMesh = mesh;
        Material material = new Material(Shader.Find("Standard"));
        material.mainTexture = texture;
        GetComponent<MeshRenderer>().material = material;
    }
    // Update is called once per frame
    void Update()
    {
        
    }
}
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号