构建低模风格模型

2016-10-02  本文已影响0人  语文小子

上图就是一低模风格的地图模型截图,看上去也很不错对吧

那么怎样把一个模型转化为低模风格的呢?

主要是把顶点数减少,同时将顶点的贴图坐标也做相应改变,可参考以下代码

using UnityEngine;
using System.Collections;
using UnityEditor;
public class FlatShading : MonoBehaviour
{

    private Mesh mesh;
    void Start()
    {
        var meshFilters = GetComponentsInChildren<MeshFilter>();
        string name = this.gameObject.name;
        AssetDatabase.CreateFolder("Assets", name);

        foreach (var meshFilter in meshFilters)
        {
            mesh = meshFilter.mesh;
            Vector3[] oldVerts = mesh.vertices;
            Vector2[] oldUv = mesh.uv;
            int[] triangles = mesh.triangles;

            Vector3[] verts = new Vector3[triangles.Length];
            Vector2[] uv = new Vector2[triangles.Length];
            
            for (int i = 0; i < triangles.Length; i++)
            {
                verts[i] = oldVerts[triangles[i]];
                uv[i] = oldUv[triangles[i]];
                triangles[i] = i;
            }

            mesh.vertices = verts;
            mesh.triangles = triangles;
            mesh.uv = uv;
            mesh.RecalculateBounds();
            mesh.RecalculateNormals();

            //save file  
            string assetName = "Assets/" + name + "/" + mesh.name + ".asset";
            AssetDatabase.CreateAsset(meshFilter.sharedMesh, assetName);
            AssetDatabase.SaveAssets();
        }

        string prefabName = "Assets/" + name + ".prefab";
        PrefabUtility.CreatePrefab(prefabName, this.gameObject);
        AssetDatabase.SaveAssets();
    }
}

这段代码可以生成一个新的低模风格的预设,并保存在根目录

效果截图:

上一篇下一篇

猜你喜欢

热点阅读