Unity 3D 热力图(一)

本文介绍了如何在Unity 3D中动态创建并修改mesh以生成热力图。通过Shader调整顶点高度,结合热力数据进行扩散计算,实现平滑的颜色过渡。此外,还分享了利用Editor工具创建虚拟温度数据,以及处理大量三角面可能导致的性能问题的思路。
摘要由CSDN通过智能技术生成

                                                效果图

一、动态创建mesh

首先需要创建一个Mesh,当然这不是必须的,可以使用plane,自己创建主要方便控制精度。修改顶点高度,如果顶点不够可能不够平滑,太多又浪费资源。因此最好根据实际需求大小生成。

 private void CreateMesh()
    {
        float perxlength = mapSize.x /(meshSize.x - 1);
        float perzlength = mapSize.y / (meshSize.y - 1);


        int totalcount = (int)meshSize.x * (int)meshSize.y;
        Vector3[] vertexs = new Vector3[totalcount];
        Vector3[] normals = new Vector3[totalcount];

        int[] triangles = new int[((int)meshSize.x - 1) * ((int)meshSize.y - 1) * 2 * 3];

        int trianglesindex = 0;
        for (int i = 0; i < meshSize.y; i++)
        {

            for (int j = 0; j < meshSize.x; j++)
            {
                float x = perxlength * j;
                float z = perzlength * i;

                int index = i * (int)meshSize.x + j;

                vertexs[index] = new Vector3(x, 0, z);
                normals[index] = transform.up;

                if(j != meshSize.x - 1&& i != meshSize.y - 1)
                {
                    triangles[trianglesindex] = j + i * (int)meshSize.x;
                    trianglesindex++;
                   
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值