Unity3D白皮書(一)模型匯入設定
在研究一個東西的時候,我們首先要問三個問題?
What?什麼是匯入設定?
我們可以在資原始檔的Inspector介面看到這個檔案的相關設定,匯入設定本質上是AssetImporter或其衍生類。
Why?為什麼我們要使用匯入設定?
我們匯入的資源大部分是由第三方軟體生成的,而這些資源需要指定一些引數或者附加一些資訊才能被U3D使用或者更好的使用。
How?匯入設定是如何產生效果的?
在資源匯入的同時,會生成與之對應的meta檔案,meta檔案除了儲存資源的GUID和meta檔案的建立時間外,還包含了一些其他的設定,其中就包含匯入設定的引數,當U3D使用這些資原始檔的時候,就會根據meta檔案中的設定來進行對應的處理。當然資原始檔的Inspector介面上的數值也是根據meta檔案反序列化(到對應的AssetImporter)得到的。
(注:本文中在一些名詞上添加了超連結,如果想了解更多,可以直接連結過去)
如下圖,是一個模型的匯入設定。
首先是Model頁籤:
Scale Factor:縮放因子,不同的建模程式生成的模型檔案,尺度單位不同,為了在U3D裡統一,就需要進行縮放。模型檔案的縮放因子:
.fbx, .max, .jas, .c4d = 0.01
.mb, .ma, .lxo, .dxf, .blend, .dae = 1
.3ds = 0.1
Use File Scale:使用檔案的預設縮放值。
Mesh Compression:網格壓縮,會導致失真。官方的想法是,儘可能的壓縮網格,只要模型看起來不至於太奇怪。
Optimize Mesh:優化網格,如果開啟,網格的定點和三角形會按照U3D既定的一套規則重新排序用以提高GPU效能。
Import BlendShapes:匯入BlendShapes(用於表情動畫)。
Generate Colliders:生成碰撞體。
KeepQuads:保持四邊形,不轉換為三角形。我們在U3D中使用的網格,大部分是把所有的面都轉換成了三角形,但是某些特定的需求下,四邊形會得到更好的效果,例如Tessellation shaders(細分曲面著色器)。Weld Vertices:焊接頂點,如果開啟,相同位置的頂點會被合併。
Swap UVs:交換uv,如果有光照貼圖的物件UV通道不正確,則使用本項。會交換主uv和光照貼圖uv(uv2)。
Generate Lightmap UV:為光照貼圖生成UV。如果開啟Generate Lightmap UV,會在該選項下面多出四個引數。
關於這些引數的含義,可以參考:
http://www.ceeger.com/Manual/LightmappingUV.html
Normals:法線:
- Import:從檔案匯入。
- Calculate:根據平滑角度(Smoothing Angle)計算。
- None:禁用。
Tangents:切線(以及次法線):
- Import:從檔案匯入,前提是法線也是匯入的。
- Calculate Tangent Space:計算切線空間。
- Calculate Legacy:計算切線。
- Calculate Legacy – SpliteTangents:如果法線貼圖的光照被網格上的縫隙破壞,則選用此項。
Import Materials:是否匯入材質。如果否,則不生成新的材質,預設使用“Default-Diffuse”。
Material Naming:材質命名方式。
Material Search:材質搜尋方式。
然後是Rig頁籤:
- None:無。
- Legacy:傳統的。(Animation)
- Generic:一般Mecanim動畫。
- Humanoid:人形Mecanim動畫。
- Createfrom thismodel:從模型建立。
- Copyfrom other avatar:複製其他面板設定。(配置Avatar)
最後是Animations頁籤:
- Off:不壓縮。
- KeyframeReduction:減少關鍵幀,移除相似的關鍵幀。
- KeyframeReduction and Compression:減少關鍵幀並壓縮Clip資料。(Legacy )
- Optimal:最優化,(GenericorHumanoid))。
(注:當對動畫進行優化的時候,會根據以上三種來對動畫進行刪減。) Clips:動畫剪輯。 當Rig頁籤選擇的Animation Type選擇Legacy時,Animations頁籤稍微有些變化:
其中Wrap Mode代表動畫的迴圈模式,如果不是Default會覆蓋掉所有Clip的迴圈模式: Default:預設,根據Clip的模式。Once:只播放一次。Loop:迴圈。PingPong:結束之後,倒著播。Forever:結束之後,迴圈播放最後一幀