合併Mesh網格

2021-07-23 18:09:37 字數 1509 閱讀 1293

1:對於具有相同材質的物件,可以通過把他們的mesh網格(mesh filter)合併在一起,然後禁用被合併的物件,來達到減少drawcall的效果;

void start ()

transform.getcomponent().mesh = new mesh ();

transform.getcomponent().mesh.combinemeshes (combine);

transform.gameobject.active = true;

}

2:對於具有多個不同材質的物件,不僅需要

通過把他們的mesh網格(mesh filter)合併在一起,還要為合併後的mesh指定材質,然後禁用被合併的物件(不禁用的話,drawcall不會減少),

且combinemeshes()的第二個引數必須為false,最後父物件的比例需要為1,1,1

,來達到減少drawcall的效果;

void start ()

//---------------- 合併 mesh -------------------------

//獲取自身和所有子物體中所有meshfilter元件

meshfilter meshfilters = getcomponentsinchildren();

combineinstance combine = new combineinstance[meshfilters.length];

for (int i = 0; i < meshfilters.length; i++)

transform.localscale = vector3.one;

//為新的整體新建乙個mesh

transform.getcomponent().mesh = new mesh();

//合併mesh. 第二個false引數, 表示並不合併為乙個網格, 而是乙個子網格列表

transform.getcomponent().mesh.combinemeshes(combine, false);

// transform.getcomponent().mesh.combinemeshes(combine);

transform.gameobject.setactive(true);

//為合併後的新mesh指定材質 ------------------------------

transform.getcomponent().sharedmaterials = mats;

}

3:在編輯模式下,獲取statistics面板的引數:

void ongui()

網格(mesh)簡化

我已經耗費了好幾天簡化地圖 感覺上我似乎會階段性地遇到這個問題。在重新簡化的過程中,我意識到這個問題說起來比我想象中的會簡單 在乙個給定範圍 也就是,乙個線段的集合和既不是線段交點也不是線段的端點的自由點 內我們可以迭代地用一條 捷徑 線段替代鄰近的線段進行簡化 例如 用線段pr代替pq和qr線段 ...

通過Mesh生成網格

gameobject obj new gameobject go meshfilter mf obj.addcomponent meshrenderer mr obj.addcomponent 新增乙個材質球 mr.sharedmaterial resources.load material 第乙個...

網格合併優化

合併網格之後發現用來合併的網格在場景中也占用乙份記憶體,也就是說一共占用了兩份記憶體。如下 private void combinemesh listmeshfilters m terrainmeshcombine new gameobject terrainmeshcombine m combin...