天天看點

《Unity虛拟現實開發實戰》——第2章,第2.3節測量工具

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

2.3測量工具

我們已經建立了一個unity場景,添加了一些基礎3d物體,并且建立了一些基本的紋理,其中包括一張照片。然後,我們學習在unity的3d世界空間中移動和變換對象。問題是場景中物體的實際大小并不是一直都那麼明顯,應該放大它們,或者用perspective和orthographic視圖來對比,或用其他功能來影響其外觀尺寸。我們來看看處理其比例的幾種方式。

2.3.1随手保留一個機關立方體

我建議随手保留一個機關立方體在hierarchy面闆中,在不需要的時候禁用它(反選inspector面闆左上邊的複選框)就行。它可以當成一個測量尺或者測量儀用。我用它來預估對象的實際尺寸、對象間的距離、高度和海拔等。

建立一個機關立方體,命名為unit cube,随便放在一個不礙事的位置,比如position (-2, 0.5, -2)。

還可以添加一個刻度尺來測量,讓紋理精确到其邊緣。

暫時把它設定為可用狀态。

2.3.2使用網格投影器

我想向你們介紹一下網格投影器(grid projector),它是一個很友善的工具,用于在任何unity場景中可視化縮放。它是effects包中standard assets的其中之一,是以需要把它導入項目中,步驟如下:

《Unity虛拟現實開發實戰》——第2章,第2.3節測量工具

1.在主菜單欄中選擇assets,再選擇import package | effects。

import對話框會顯示出來,包括所有可導入的清單,隻要你願意,可以點選all選擇import導入所有資源,但是我們隻需要projector檔案夾,是以把它導入即可。

現在添加一個projector到場景中,步驟如下:

1.在project面闆中找到grid projector預制件,定位到assets/standard assets/effects/projectors/prefabs 檔案夾。

2.拖動一份grid projector的複本到場景中,把position的y值設定成5,讓它在地平面之上。

投影器可以把材質投影到所有與其視錐體相交的物體上。

意思是說,與投影射線相交的物體都會得到投影後的材質。

在這個例子中,如你所願,投影器的材質(名字也叫gridprojector)有一個“grid”紋理,它看起來簡直像一個十字準星(assets/.../projectors/textures/grid,你自己看)。

預設情況下,投影器像一束光一樣照耀在網格圖案表面。在我們的場景中,groundplane平面是明亮的,是以網格不會顯示出來。現在我們按如下步驟操作:

在hierarchy面闆中選中網格投影器,把gridprojector材質元件放進inspector面闆,再把它的shader從hidden/projector light 改成hidden/projector multiply。

它現在會在一片黑色上繪制白色網格線,要想得到更好的效果,把場景視圖改成top的視圖朝向,可按如下操作:

1.點選view面闆中場景視圖小部件中右上方的綠色的y錐形。

2.點選小部件中的小立方體,把perspective變成orthographic(無變形)視圖。

現在你可以從上向下看到地平面上,選中網格投影器(确認左上方工具欄的第二個圖示平移工具是激活狀态),慢慢用小部件的平移工具移動投影器,網格線也随之移動,你可以把它放在position(-2.5,5,-0.5) 的位置上以避免投影器擋着光線。

現在這個内置的參考網格可能會讓人感到混亂,是以把它關了吧:

1.在scene視圖面闆中,點選gizmos(找這個名字的菜單,有控制你的所有小部件的選項),反選show grid。

好了,看到了吧?預設的網格尺寸是機關立方體的邊長的一半。在inspector中,投影器元件的orthographic的尺寸值是0.25。

2.将投影器中orthographic的尺寸值從0.25改成0.5。

3.儲存場景和項目。

現在我們就可以随時把一個機關的網格用于場景中了。

讓我們保留這個狀态一會兒,因為它看起來挺酷的,如下圖所示:

2.3.3測量ethan角色

一個虛拟角色有多大?unity中有一個叫作ethan的第三人稱角色,我們把他添加到場景中,他是characters包的standard assets之一,是以我們需要将其導入項目。

按如下步驟操作:

1.在主菜單欄中選擇assets,然後選擇package | characters。

2.在彈出的import對話框中,有一個可導入清單。點選all再點選import。thirdperson-controller是project面闆中的一個預制件(預置資源),可以在assets/standard assets/characters/thirdpersoncharacter/prefabs 檔案夾中找到。

3.拖一個thirdpersoncontroller的複本到場景中,x和z的位置值無所謂,但是要把y值設定成0,這樣名字叫作ethan的角色就站在地面上了,我設定的坐标值為(2.2, 0, 0.75)。

我們試試效果:

1.點選在unity視窗頂部中間的play圖示運作遊戲。使用w、a、s、d鍵來移動。跑,ethan!跑!

2.再次點選play圖示來停止遊戲,進入編輯模式。

是以,ethan有多高?根據google搜尋的結果,人類中男性的平均身高是1.68m(在美國成年男性平均身高是1.77m),我們來看看ethan有多高:

使用平移工具小部件滑動機關立方體到接近ethan處。看出來了,他大概身高是機關立方體高度的1.6倍。

調整立方體的高度值(y)到1.6,再把位置值y調整到0.8。

我們再來看看,如下圖所示,他身高數值不到1.6,是以ethan比平均身高要矮一點(除非你算上他的發尖)。滑動視圖,我看到的是ethan的右臉,然後再調整立方體的視平線大約是1.4m。記錄一下:

1.把機關立方體恢複到scale(1, 1, 1)和 position(-2, 0.5, -2)。

2.儲存場景和項目。

下圖是1.6個機關高度的立方體與ethan的比較:

《Unity虛拟現實開發實戰》——第2章,第2.3節測量工具

繼續閱讀