Mesh—合并网格提升性能
生活随笔
收集整理的這篇文章主要介紹了
Mesh—合并网格提升性能
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
將多個網(wǎng)格合并為一個網(wǎng)格,即將多個模型合并為一個模型。
如下面兩個模型:
從右邊可以看出它是由兩個模型組成。有些時候我們會希望這兩個模型使用同一個Collider,但是我們不
可能還要美術(shù)從新做一個碰撞,因?yàn)槲矬w的擺放不是固定的。
所以我們就要使用到Untiy的一個API——CombineMeshes。
具體可以查看https://docs.unity3d.com/ScriptReference/Mesh.CombineMeshes.html
現(xiàn)在實(shí)現(xiàn)這個功能,我們選取圖中某個對象做為父對象,將其他一個對象作為它的子對象。新建一個腳
本,添加到父對象上。
using UnityEngine; using System.Collections;public class CombineMeshes : MonoBehaviour {void Start(){GetMesh(transform);}void GetMesh(Transform ts){MeshFilter[] meshFilters = ts.GetComponentsInChildren<MeshFilter>(); //獲取自身和所有子物體中所有MeshFilter組件CombineInstance[] combine = new CombineInstance[meshFilters.Length]; //新建CombineInstance數(shù)組MeshRenderer[] Renderer = ts.GetComponentsInChildren<MeshRenderer>(); //獲取自身和所有子物體中所有MeshRenderer組件Material[] mats = new Material[Renderer.Length]; //新建材質(zhì)球數(shù)組for (int i = 0; i < meshFilters.Length; i++){mats[i] = Renderer[i].sharedMaterial; //獲取材質(zhì)球列表combine[i].mesh = meshFilters[i].sharedMesh;//矩陣(Matrix)自身空間坐標(biāo)的點(diǎn)轉(zhuǎn)換成世界空間坐標(biāo)的點(diǎn) //combines[i].transform = meshFilters[i].transform.localToWorldMatrix;//變換矩陣的問題,要保持相對位置不變,要轉(zhuǎn)換為父節(jié)點(diǎn)的本地坐標(biāo),combines[i].transform = ts.worldToLocalMatrix * meshFilters[i].transform.localToWorldMatrix;if (meshFilters[i].gameObject.name != gameObject.name) //除了根物體,其他物體統(tǒng)統(tǒng)銷毀{Destroy(meshFilters[i].gameObject);}}ts.GetComponent<MeshFilter>().mesh = new Mesh();ts.GetComponent<MeshFilter>().mesh.CombineMeshes(combine, false);/*為mesh.CombineMeshes添加一個 false 參數(shù),表示并不是合并為一個網(wǎng)格,而是一個子網(wǎng)格列表,可以讓擁有多個材質(zhì)球,如果要合并的網(wǎng)格用的是同一材質(zhì),false改為true,同時將上面的獲取Material的代碼去掉*/ts.GetComponent<MeshRenderer>().sharedMaterials = mats; //為合并后的GameObject指定材質(zhì)球數(shù)組}}我們這里選取Cube為父物體,Sphere為子物體,同時將腳本添加到Cube身上。
現(xiàn)在運(yùn)行,你會發(fā)現(xiàn),Sphere被刪除了,而它的模型卻還依然存在,他的網(wǎng)格已經(jīng)和Cube合并在一起
了,同時Cube也擁有了兩個材質(zhì)球。
另外盡量保證根物體的縮放是1:1:1,不然就會發(fā)現(xiàn)合并完的模型完全變形了。
總結(jié)
以上是生活随笔為你收集整理的Mesh—合并网格提升性能的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web网页设计期末课程大作业:环境保护主
- 下一篇: 2021年图灵奖简介