Mesh,Mesh Filter和Mesh Renderer
在Unity Editor中查看Mesh
????Unity場景中的3D游戲物體的幾何形狀外觀叫做mesh。在Unity Editor中,可以查看游戲物體的Mesh。其步驟如下:
????1. 在場景視圖中,找到Draw mode下拉菜單,在場景視圖的左上角,默認(rèn)設(shè)置為Shaded

????2. 在下拉菜單中選擇Wireframe,下圖就是shader和material都去掉后的樣子:

????Mesh是場景中3D游戲物體的骨骼,它是這個(gè)物體的幾何元素。
????著色器(Shader)和材質(zhì)(Material)告訴了Unity如何將3D物體的mesh從3D場景中繪制成屏幕上的2D圖像。

????為了理解Mesh是如何工作以及它們是如何繪制的,知道它們的結(jié)構(gòu)是很有幫助的。下圖是場景中的一顆蘋果拉近看的圖:

????一個(gè)Mesh是一系列平面2D多邊形組成的,這些多邊形通過頂點(diǎn)(vertices,單數(shù)形式vertex)來定義,頂點(diǎn)是在3D空間中存儲XYZ坐標(biāo)值的點(diǎn)。mesh書里也包含了法線(normals),法線定義了組成mesh的多邊形平面的朝向。頂點(diǎn)法線的方向會對表面的形狀產(chǎn)生影響,比如讓物體上某些面看起來是彎曲的,有些地方是平的,有點(diǎn)地方是凹陷的。Shader會根據(jù)法線的信息來渲染mesh,比如讓mesh看起來就像是彎曲的樣子,但實(shí)際上shader沒有實(shí)際去改變mesh本身。比如上圖中的蘋果,從mesh角度來看,它是由許多個(gè)平坦的表面組成,但它的法線會是的其表面看起來很平滑。如下圖所示:

????關(guān)于法線的概念,想要看更多,可以參考這里
????https://www.bilibili.com/read/cv14554092
Mesh Filter,Mesh Renderer組件
????在Unity Editor中,在場景中任意選擇一個(gè)非empty的游戲物體,在其Inspector視圖中會看到兩個(gè)組件:Mesh Filter和Mesh Renderer。比如下圖例子的一個(gè)膠囊體:

? ? Mesh Filter組件指向的是項(xiàng)目中對應(yīng)的mesh坐標(biāo)數(shù)據(jù)。對于上述的膠囊體例子,之所以從mesh視圖看它是一個(gè)膠囊體的形狀,是因?yàn)閙esh filter所用的mesh數(shù)據(jù)是這樣的。我們可以強(qiáng)行將這個(gè)mesh數(shù)據(jù)換成項(xiàng)目中另一個(gè)物體的mesh數(shù)據(jù)。比如我們將其換成Sphere,此時(shí)即便游戲物體的名字還是顯示Capsule,但其外觀顯示出來卻是一個(gè)球體。

????Mesh Renderer組件則是用來指定這個(gè)mesh如何被繪制的地方。這個(gè)組件里有多個(gè)屬性,但最重要的一個(gè)屬性就是材質(zhì)(materials)。
????材質(zhì)和shader一起工作,用來定義mesh會被如何繪制。一種材質(zhì)可以被應(yīng)用到多個(gè)mesh上。

????Unity Editor中,要對某個(gè)物體應(yīng)用一個(gè)材質(zhì),可以在Mesh Renderer中的Materials選項(xiàng)中進(jìn)行設(shè)置,比如下圖中,我們將前面的膠囊體的材質(zhì)設(shè)置成了另外一種材質(zhì)后,最終結(jié)果如下:

????那么材質(zhì)又包含了哪些東西呢?我們在項(xiàng)目窗口中,選擇上圖所選擇的材質(zhì),查看其Inspector面板,可以看到材質(zhì)是一個(gè)shader和其屬性值的封裝:
