1. 程式人生 > >Unity3d mesh合併,網格合併具體用法教程

Unity3d mesh合併,網格合併具體用法教程

Unity開發Mesh合併網格

本文提供全流程,中文翻譯。

Chinar 堅持將簡單的生活方式,帶給世人!

(擁有更好的閱讀體驗 —— 高解析度使用者請根據需求調整網頁縮放比例)
Chinar —— 心分享、心創新!

助力快速理解 Unity 中合併網格的概念與流程

為新手節省寶貴的時間,避免採坑!

Chinar 教程效果:
這裡寫圖片描述
這裡寫圖片描述

全文高清圖片,點選即可放大觀看 (很多人竟然不知道)

1

Merge Mesh —— 合併網格

Unity 開發中,如果我們需要做效能優化

或者是一些專案需求,需要將零散的幾個物體進行合併,成為一個整體的模型

而由於模型的樣貌是由 MeshFilter 決定,上色由 MeshRender 決定

所以我們只需將幾個零散模型的 MeshFilter 進行合併,就能得到一個整體的模型
舉個栗子黑白88
這裡寫圖片描述
合併後的網格效果:
這裡寫圖片描述

2

Create GameObject —— 在場景中建立一個空物體

Hierarchy 層次面板中,建立一個空物體,並將指令碼檔案掛載它上邊

將你需要的零散的模型,設定為其子物體

執行指令碼,即可完成合並!

注意:

指令碼中我登出掉的指令碼之前的程式碼,足夠生成新模型的網格,且執行後就已經生成了!
舉個栗子黑白88
這裡寫圖片描述

using UnityEngine;


///
<summary>
/// 合併網格 /// </summary> public class ChinarMergeMesh : MonoBehaviour { void Start() { MergeMesh(); } /// <summary> /// 合併網格 /// </summary> private void MergeMesh() { MeshFilter[] meshFilters = GetComponentsInChildren<MeshFilter>(); //獲取 所有子物體的網格
CombineInstance[] combineInstances = new CombineInstance[meshFilters.Length]; //新建一個合併組,長度與 meshfilters一致 for (int i = 0; i < meshFilters.Length; i++) //遍歷 { combineInstances[i].mesh = meshFilters[i].sharedMesh; //將共享mesh,賦值 combineInstances[i].transform = meshFilters[i].transform.localToWorldMatrix; //本地座標轉矩陣,賦值 } Mesh newMesh = new Mesh(); //宣告一個新網格物件 newMesh.CombineMeshes(combineInstances); //將combineInstances陣列傳入函式 gameObject.AddComponent<MeshFilter>().sharedMesh = newMesh; //給當前空物體,新增網格元件;將合併後的網格,給到自身網格 //到這裡,新模型的網格就已經生成了。執行模式下,可以點選物體的 MeshFilter 進行檢視網格 #region 以下是對新模型做的一些處理:新增材質,關閉所有子物體,新增自轉指令碼和控制相機的指令碼 //gameObject.AddComponent<MeshRenderer>().material = Resources.Load<Material>("Materials/Koala"); //給當前空物體新增渲染元件,給新模型網格上色; //foreach (Transform t in transform) //禁用掉所有子物體 //{ // t.gameObject.SetActive(false); //} //gameObject.AddComponent<BallRotate>(); //Camera.main.gameObject.AddComponent<ChinarCamera>().pivot = transform; #endregion } }

3

Error Effect —— 錯誤效果

執行後,你會發現場景中沒有什麼變化!還是那個模型在那裡!

其實這時候網格都已經生成了

原因-1:我們沒有禁用子物體,所以顯示的還是子物體的組合效果;
原因-2:我們只給空物體加了 MeshFilter 元件,並添加了合併後的網格,但並沒有進行渲染!
舉個栗子黑白88
這裡寫圖片描述

4

improvement —— 完善

Resources 中新建一個材質球命名:“ Koala ”,用來給空物體(新模型)渲染使用

並動態將子物體進行關閉,將對模型進行材質球的新增

動態新增2個指令碼,一個用來旋轉,一個控制相機旋轉(這是為了好看的測試效果,並非必要)
舉個栗子黑白88
這裡寫圖片描述

5

Project —— 專案檔案


專案檔案為 unitypackage 檔案包:

支援

May Be —— 搞開發,總有一天要做的事!

擁有自己的伺服器,無需再找攻略!

Chinar 提供一站式教程,閉眼式建立!

為新手節省寶貴時間,避免採坑!



技術交流群:806091680 ! Chinar 歡迎你的加入
END

本部落格為非營利性個人原創,除部分有明確署名的作品外,所刊登的所有作品的著作權均為本人所擁有,本人保留所有法定權利。違者必究

對於需要複製、轉載、連結和傳播部落格文章或內容的,請及時和本博主進行聯絡,留言,Email: [email protected]

對於經本博主明確授權和許可使用文章及內容的,使用時請註明文章或內容出處並註明網址

相關推薦

Unity3d mesh合併網格合併具體用法教程

Unity開發Mesh合併網格 本文提供全流程,中文翻譯。 Chinar 堅持將簡單的生活方式,帶給世人!(擁有更好的閱讀體驗 —— 高解析度使用者請根據需求調整網頁縮放比例)

Jqgrid合併單元格左右合併上下合併

先看樣例,下圖為普通html表格的合併單元格,程式碼在下面,把他儲存為html檔案開啟就行 縱向合併:rowspan:a合併a行並表示,需要把後面a-1的單元格隱藏display:none  橫向合併:colspan:a合併a行並表示 需要把後面a-1的單元格隱藏di

遍歷資料夾內所有的CSV檔案並且合併為同一個CSV

import pandas as pd import os ### 讀取檔案中的資料內容。 os.listdir(u"F:/公司/03_Study/01_爬蟲") Folder_Path = u"F:/公司/03_Study/01_爬蟲" # 要拼接的資料夾及其完整路徑,注意不要包含中文

【CF778C】Peterson Polyglot(Trie樹啟發式合併

題意:有一棵n個結點的只由小寫字母組成的Trie樹,給定它的具體形態,問刪除哪一層後剩下Trie樹的結點數最少 n<=3e5 思路:先建出原Trie樹,對於每一層的每一個結點計算刪除後對答案的貢獻,這一部分使用啟發式合併 官方題解證明了時間複雜度是一個log的 http://codeforces

Tensorflow影象通道合併IndexError: too many indices for array

在讀入多張影象並且在第3維上進行合併時(image[:, :, :]),出現IndexError: too many indices for array錯誤 data1 = imread('E:/dataset/Train_gray/2011_09_26_drive_0001_extrac

線上PDF合併你應該注意的三點問題

工作中要把多個PDF檔案進行合併,很多人第一反應就是去網上搜索看看有沒有相應的軟體。其實有時候並不需要安裝軟體,現在很多網站可以進行線上PDF轉換。 那麼什麼樣的網站我們才能放心的使用呢? 1、操作簡單便利,不需進行安裝或設定,只要選擇檔案,就能合併頁面。 2、文件質量保證,合併後的

Git多分支合併刪除分支後--保留分支資訊方法

Git merge 是合併分支的命令,預設會使用 Fast Forward 模式,這種模式在刪除分支後,分支的資訊也被刪除。 那麼如果要禁止使用該模式,在使用git merge 的時候,就要帶上-m " 保留分支資訊" ,這樣從git log 獲取的分支歷史上就能看出來。 具體使用:

mysql結構相同的資料表資料合併到一個表

1、拼接生成批量插入語句 SELECT concat('insert into ordertarget(欄位名) select 欄位名 from ',table_name,';') FROM information_schema.TABLES WHERE table_name LIKE 'eco

演算法題006 -- [將兩個排序的連結串列合併返回一個新連結串列返回的新連結串列也是排好序的] by java

題目 將兩個排序的連結串列合併,返回一個新連結串列,返回的新連結串列也是排好序的 程式碼 package algorithm6; public class Algorithm6 { public static void main(String[] args) {

element-ui的表格行合併問題

1.在寫展示表格的時候,需要把5行合併為一列; 以下為element-ui 官網文件: <div> <el-table :data="tableData6" :span-method="arraySpanMethod" // 把列合

js獲取easyui資料根據厚度寬度材質一致合併長度相加顯示

<a href="javascript:printBill()" class="bt" style="margin-left:5px;text-decoration:none;color:#ffffff;float: right;

Frequent values POJ - 3368(線段樹區間合併)

Frequent values POJ - 3368 題目連結 題意:一個非遞減序列,隨機詢問區間[l, r]中出現次數最多的數的出現次數; 思路:多次詢問,首先就要想一下線段樹;由題意可知數列中的數是連續的,既然是連續的就有合併的希望!!!那麼就來一發線段樹吧(RMQ也可以做

HTTP patch 方法實現用於合併patch json與pojo物件

依賴: javax.json jackson-databind import com.fasterxml.jackson.databind.ObjectMapper; import javax.json.Json; import javax.json.JsonArray; import

git命令總結-提交push分支合併pull切換版本checkout

1. git提交命push git config --global user.name "git使用者名稱" git config --global user.email "git密碼" git add . git commit -m "提交內容介紹" git remo

[區間DP]石子合併極其變種問題(環形40000堆型)P1880 [NOI1995]石子合併+[Sdoi2008]石子合併/poj1738An old Stone Game

 有N堆石子,現要將石子有序的合併成一堆,規則如下: (1)每次只能移動任意相鄰的2堆石子合併,合併花費為新合成的一堆石子的數量。求將這N堆石子合併成一堆總花費,要求N<=300。 變形一:(2)每次只能移動相鄰的2堆石子合併,合併花費為新合成的一堆石子的數量。求將

leetcode617+兩個二叉樹合併DP

struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeNode(int x) : val(x

學會這些“套路”excel 合併彙總都不是事

1.  問題背景 在日常工作中我們經常遇到具有相同表頭的 Excel 檔案,需要將它們合併到同一個工作表中再進行分析。當檔案比較多時,手工合併表格通常是件很麻煩的事情,而如果資料量很大,用 Excel 自帶的 VBA 來處理也會經常卡死。今天我就來分享一個專業的外部資料

安卓studio打jar包匯入第三方jar包ant合併jar包

說明 此文件主要為了解決安卓打jar包問題,當我們使用了第三方jar包的時候,有時候需要將第三方jar包一塊打包到自己的jar包中,但是如果處理不好會出現“com.android.dx.cf.iface.ParseException: class name (…

Unity網格合併_材質合併

從優化角度,Mesh需要合併。 從換裝的角度(這裡指的是換形狀、換組成部件的換裝,而不是掛點型的換裝),都需要網格合併、材質合併。如果是人物的換裝,那麼需要合併SkinnedMeshRenderer,並重刷對應的骨骼列表。 示例: 1,新建兩個Cube,和一個Cylin

用Python開發PDF編輯器實現PDF頁面提取頁面合併與替換

大多數PDF軟體閱讀服務是免費的,但是如果你想編輯一個PDF文件,比如從一個PDF文件中提取指定頁面,合併多個PDF頁面或者實現PDF頁面的替換,你一般需要購買收費軟體才可以。這當然難不倒程式設計師們,尤其Python程式設計師們。今天小編我就帶你利用Django+PyPDF2開發一個比較實用的小A