日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Mesh—合并网格提升性能

發布時間:2024/3/12 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Mesh—合并网格提升性能 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

將多個網格合并為一個網格,即將多個模型合并為一個模型。

如下面兩個模型:

從右邊可以看出它是由兩個模型組成。有些時候我們會希望這兩個模型使用同一個Collider,但是我們不

可能還要美術從新做一個碰撞,因為物體的擺放不是固定的。

所以我們就要使用到Untiy的一個API——CombineMeshes。

具體可以查看https://docs.unity3d.com/ScriptReference/Mesh.CombineMeshes.html

現在實現這個功能,我們選取圖中某個對象做為父對象,將其他一個對象作為它的子對象。新建一個腳

本,添加到父對象上。

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數組MeshRenderer[] Renderer = ts.GetComponentsInChildren<MeshRenderer>(); //獲取自身和所有子物體中所有MeshRenderer組件Material[] mats = new Material[Renderer.Length]; //新建材質球數組for (int i = 0; i < meshFilters.Length; i++){mats[i] = Renderer[i].sharedMaterial; //獲取材質球列表combine[i].mesh = meshFilters[i].sharedMesh;//矩陣(Matrix)自身空間坐標的點轉換成世界空間坐標的點 //combines[i].transform = meshFilters[i].transform.localToWorldMatrix;//變換矩陣的問題,要保持相對位置不變,要轉換為父節點的本地坐標,combines[i].transform = ts.worldToLocalMatrix * meshFilters[i].transform.localToWorldMatrix;if (meshFilters[i].gameObject.name != gameObject.name) //除了根物體,其他物體統統銷毀{Destroy(meshFilters[i].gameObject);}}ts.GetComponent<MeshFilter>().mesh = new Mesh();ts.GetComponent<MeshFilter>().mesh.CombineMeshes(combine, false);/*為mesh.CombineMeshes添加一個 false 參數,表示并不是合并為一個網格,而是一個子網格列表,可以讓擁有多個材質球,如果要合并的網格用的是同一材質,false改為true,同時將上面的獲取Material的代碼去掉*/ts.GetComponent<MeshRenderer>().sharedMaterials = mats; //為合并后的GameObject指定材質球數組}}

我們這里選取Cube為父物體,Sphere為子物體,同時將腳本添加到Cube身上。

現在運行,你會發現,Sphere被刪除了,而它的模型卻還依然存在,他的網格已經和Cube合并在一起

了,同時Cube也擁有了兩個材質球。


另外盡量保證根物體的縮放是1:1:1,不然就會發現合并完的模型完全變形了。

總結

以上是生活随笔為你收集整理的Mesh—合并网格提升性能的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。