天天看點

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

本節書摘來自華章出版社《unity虛拟現實開發實戰》一書中的第2章,第2.5節blender簡介,作者[美] 喬納森·林諾維斯,更多章節内容可以通路雲栖社群“華章計算機”公衆号檢視。

2.5blender簡介

打開blender程式,關閉歡迎界面後呈現的就是blender編輯器了,與下面的截圖差不多:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

同unity一樣,blender包括一些不重疊的視窗,可以按喜好自定義這些視窗的布局。但是,blender的界面更複雜,從某方面來說因為它內建了若幹個不同的編輯器,而這些編輯器可以同時在各自的面闆中打開。

改變預設視圖的大小很有用,因為上面那張圖中包含5個不同的編輯器。

最明顯的編輯器是那個大的3d view,我已經用紅色矩形高亮顯示了,在這個視圖中可以察看、移動群組織blender場景中的對象。

其餘4個打開的編輯器是:

info editor,會發現它沿着程式頂部的邊緣,其中包含程式的全局菜單和資訊。

timeline editor,在程式的下底邊上,用于動畫。

outliner editor,在右上方,場景中所有對象的層級視圖都在這裡。

properties editor,在outliner的右下方,是一個很有用的面闆,可以察看和修改場景中對象的多個屬性。

每個編輯器也可以有多個面闆,我們來看看3d視圖編輯器:

中間的大片區域是3d viewport,可以察看、移動群組織blender場景中的對象。

3d viewport的下方是編輯器的header,它雖然在下方我們卻叫它header。這個header是一行菜單和工具欄,提供了很多控制編輯器的功能,包括選擇器、編輯模式、變換操作和層次管理。

左邊的是tool shelf,包括各種編輯工具,可以用于目前選中對象、放進頁籤,tool shelf可以通過滑動其邊緣或者按t鍵來切換開關狀态。

3d視角也有一個properties面闆,它預設可能是隐藏的,可以按n鍵來切換開關狀态,它提供了目前選中對象的屬性設定。

在接下來的介紹中,會要求你改變3d視圖編輯器的interaction mode,變成edit mode和texture paint模式之間的值,可以在header中選擇,如下圖所示:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

其他編輯器也有header面闆,info editor(程式頂部)本身就是一個header!outliner和properties編輯器(右邊)的header在自身面闆的頂部而不是在底部。

調整過布局後,看起來就不是那麼擁擠和混亂了。

properties編輯器有一長溜圖示,像是頁籤一樣,要選擇面闆中的其餘屬性。滑鼠懸停在圖示上(這裡其他的ui部件也都一樣)就會顯示出一個提示語告訴你它的功能,後面的(後續章節中用到它的時候)圖檔中可以看到。

blender的布局非常靈活,你甚至可以把一個面闆從一個編輯器變成另外一個,每個header的最左邊是editor type選擇器。點選它就可以看到所有選項。

除了blender界面上可以點選東西之外,還可以用鍵盤快捷鍵執行指令,如果忘了在哪找到某個功能,可以敲空格鍵再輸入最接近你要找的指令名稱,它可能就會彈出來!

下圖是blender中的editor type選擇器:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

2.5.1立方體

現在,我們來在blender中建構一個機關立方體。

預設的場景中可能已經有物體了,包括一個立方體、錄影機和一個光源,如同前面在blender視窗中顯示的那樣。(你的初始設定可能會不同,因為它是可配置的。)

如果初始場景中沒有機關立方體,那麼就像下面這樣建立一個:

1.删除場景中的任何東西以確定場景是空的(右鍵選擇,x鍵删除)。

2.用shift+s (打開snap選項清單)| cursor to center把3d光标的原點設定成 (0, 0, 0)。

3.在左邊的tool shelf面闆中,選擇create頁籤,再在mesh下選擇cube 以添加一個立方體。

好了,我們現在進度一樣了。

注意在blender中,參考網格延伸了x軸和y軸,z軸朝上(不像unity,y軸朝上)。

還有,注意blender中預設的立方體的大小是 (2, 2, 2)。

而我們需要的是一個機關立方體立在基準面的原點之上,就像這樣操作吧:

1.用n鍵打開properties面闆。

2.選擇transform | scale 把x,y,z設定成 (0.5, 0.5, 0.5)。

3.選擇transform | location把z設定成 0.5。

4.再按n鍵隐藏面闆。

5.可以用滑鼠滾輪來縮放。

我們還要確定目前渲染器是blender render(在程式視窗頂部中間的info 編輯器中的下拉選項裡)。

2.5.2uv紋理圖檔

接下來,我們建立一張uv紋理圖檔:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

找到edit mode,在底部的header欄中選擇interaction mode選擇器。

用全選(輕按兩下a鍵)確定所有表面都被選中。

在左邊的tool shelf面闆中,選擇shading/uvs頁籤。

在uv mapping下方點選unwrap,在下拉清單中選擇smart uv project,接受預設值,點選ok(結果見下圖,也能看到光皮的立方體長什麼樣)。

現在再用底部的header欄把interaction mode變成texture paint模式。

我們還需要為我們的材質定義一個繪制槽,點選add paint slot,選擇diffuse color,命名為cubefaces,點選ok。

我們現在開始直接在立方體上繪制,首先畫前面,步驟如下:

制作一個小一點的畫刷。在左邊的tool shelf面闆中,tools頁籤下選擇brush | radius,然後輸入8 px。

可能在正交視圖下更容易操作。在底部菜單欄中選擇view | view persp/ortho。

然後選擇view | front。

如果需要的話你可以用滑鼠滾輪來縮放大小。

用你最好的書法水準用滑鼠左鍵寫上單詞“front”。

再在背面做同樣的操作。

在底部的菜單欄中選擇view | back再用右鍵選擇這一面。

好好寫一個“back”。

再在左、右、上、下的面上重複上面的操作,如果發生不能畫的情況,确認是否選中了目前表面,試試用右鍵在這個面上重新選擇,結果應該差不多像下面這樣(同時在3d view編輯器中用正交透視和uv/image editor):

現在,我們儲存圖檔,然後設定其屬性,步驟如下:

使用3d view編輯器底部header的最左邊的選擇器,把目前的editor type改成uv/image editor。

點選browse image to be linked選擇器圖示。(朝着+圖示的左邊),再在清單中選擇 cubefaces。

底部菜單欄的image 菜單項現在有一個星号(image*)表示有一張未儲存的圖檔,點選它,選擇save as image,儲存成cubefaces.png,使用一個unity工程之外的檔案夾。

在左邊,在properties編輯器的面闆上,在其header中找到一長排圖示,選擇texture(倒數第三個),如果面闆不夠寬的話它可能會不顯示,你可以用滑鼠下滑來顯示,如下圖所示:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

在texture屬性中,把type變成image or movie。

在屬性的image組中,點選browse image to be linked選擇器圖示(見下圖)選擇cubefaces。

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

你應該在preview視窗中可以看到帶有标簽的紋理圖檔了。

不錯!我們儲存這個blender模型吧,步驟如下:

在頂部菜單欄中的info編輯器中選擇file,再點選save(或按ctrl+s)。

使用之前儲存紋理圖檔的檔案夾。

命名為uprightcube.blend,點選save blender file。

我們現在應該在檔案夾中有兩個檔案了,uprightcube.blend和cubefaces.png。我使用了一個在unity項目根目錄中叫作blender的檔案夾。注意,也可以導出成其他标準格式,比如fbx(filmbox的簡稱)就可作為一種選擇。

太棒了,完成這麼多了。沒弄懂也沒關系,blender可能比較難,但是unity需要模型,你可以一直都從unity的asset store和3d模型分享網站中下載下傳其他人的模型。但不要做一個沒用的人,學習自己做自己的模型吧。哈哈!我說真的,這是一個很好的學習起點。

2.5.3導入unity

回到unity,我們要導入剛才那兩個檔案—uprightcube.blend和cubefaces.png,一個一個來,步驟如下:

在project面闆中,選擇assets根目錄,定位到create | folder,重命名這個檔案夾為models。

有一個簡單的方法導入檔案到unity中,就是從windows資料總管(或mac的finder)視窗拖拽 .blend檔案到project面闆的assets/models檔案夾,把 .png檔案拖拽到assets/textures檔案夾中(或者也可以用主菜單欄中的assets | import new assets)。

通過從assets/models檔案夾,也就是剛才導入scene視圖的地方,把剛才導入的模型uprightcube拖動到場景中。

把它的坐标值設定成與其他對象遠離,我設定的position值是(2.6, 2.2, -3)。

從assets/textures檔案夾中拖動cubefaces紋理到scene視圖中,停在剛才添加的uprightcube上讓它接收這個紋理,然後把松開紋理把放到立方體上。

這樣場景應該看着像下面這樣了:

《Unity虛拟現實開發實戰》——第2章,第2.5節Blender簡介

2.5.4觀察者

立方體的背面對着我們,這是一個失誤嗎?其實這是正常的,因為目前視點是朝前看的,那麼我們就應該看着立方體的背面。你應該沒注意到,ethan也是這樣。而這個立方體看着差不多有一個機關的容積。

但是,仔細檢查一下,在立方體的inspector面闆中,會發現它導入的縮放比例是我們在blender中給的(0.5, 0.5, 0.5),另外它還有一個x軸的-90°旋轉(負90),是以如果我們重置變換值,也就是比例尺為(1, 1, 1),它在我們的世界坐标系中将會是兩個機關大小,而且是颠倒的(是以,别重置)。

不用回到blender中,稍微操作一下就可以抵消這個旋轉值了。

blender的預設朝上的方向是z軸,而unity是y軸。是以,導入時x軸-90°的旋轉用于調整這個差異。導入的比例可以在對象的inspector面闆的import settings中調整。

比例問題可以通過下面的步驟修複:

1.在project面闆中,選擇我們導入的uprightcube。inspector面闆會顯示其import settings。

把scale factor的值從1改成0.5。

點選apply。

場景中的立方展現在可以是scale (1, 1, 1),且可以是一個機關立方體,如我們所願。

在hierarchy中選擇uprightcube,把transform的sacle值改成 (1, 1, 1)。

在結束上面這個過程之前,在hierarchy面闆中選擇uprightcube并把它拖進project面闆的assets檔案夾中。(你可以考慮建立一個assets/prefabs檔案夾把檔案放進去。)這樣就做成了一個可重複使用的預制件,包括紋理圖檔和所有内容。

本節中的一些重要練習(除了在blender學習的那些之外)可以用于任何3d unity項目,包括虛拟現實項目。正常來說,你應該會導入比立方體要複雜得多的模型,會遇到資料轉換、縮放比例、朝向、uv紋理圖檔等相關的問題讓你困惑。如果遇到了,試着把問題分解成小問題,分解成更獨立的場景。做一些小的試驗來了解程式是如何交換資料的,這對于你了解混雜的參數可能會有所幫助。

繼續閱讀