Unity3D引擎之渲染技術系列一

來源:互聯網
上載者:User

標籤:網站   class   公司   開發人員   效率   targe   target   ==   rgb   

筆者介紹:薑雪偉,IT公司技術合伙人,IT進階講師,CSDN社區專家,特邀編輯,暢銷書作者。國家專利發明人;已出版書籍:《手把手教你架構3D遊戲引擎》電子工業出版社和《Unity3D實戰核心技術具體解釋》電子工業出版社等。

CSDN視頻網址:http://edu.csdn.net/lecturer/144

在學習Unity引擎或者是其它3D遊戲引擎時。常常遇到的問題就是各個座標空間,在曾經的部落格中也給讀者介紹過,本篇部落格裡用通俗易懂的語言再給讀者揭露一下為什麼須要這麼多座標空間?以及怎樣產生矩陣變換或者說利用矩陣變換解決這個問題。

在生活中我們常常遇到問路的,有的人方向感比較強,而有的人方向感比較弱,針對這些人指路時就要注意了,方向感強的人,你能夠告訴他向東走大約300米。再向北走100米,你給他說的這些就是以東南西北為座標軸介紹的,方向感弱的人,你就不能這麼說了。你僅僅能說向向前走300米,再向左走100米。這時你使用的是以這個路人圍原點的座標空間。通過這個案例。你能夠看到不同的指路方式相應的就是我們不同的座標軸向。

由此可見,我們在生活中在不同的情況下使用不同的座標空間。這個跟遊戲中使用不同的空間是相似的。

Unity3D引擎開發3D遊戲時。也會面臨著各個座標空間的變換,在這裡給讀者普及一下,這樣開發人員再做一些空間變換時更easy上手。Unity3D引擎使用的是副檔名為FBX的模型,模型的製作是美術人員用建模工具Max製作完畢匯出的,除了模型還包含圖片,比方高光。法線等,關於材質的渲染能夠使用Unity3D內建的Shader或者自己編寫Shader。

製作的模型相對於它自身而言就是局部空間也稱為模型空間,也稱為局部空間,每一個模型都有自己獨立的座標空間。

當它移動或者旋轉時。模型空間也會跟著它移動和旋轉。

打個形象比喻,我們在公司的房間裡面移動時,我們自身的空間也在跟著移動,當我們轉身時,我們的座標空間也在尾隨變化。

在模型製作時,美術人員會給模型一個座標,預設的情況下都是設定成(0。0,0),這個座標是作為父節點的座標,模型會有自己的孩子節點。如果帶有孩子節點的物體例如以所看到的:

孩子節點的座標是(2,2。0)。它是子物體的局部座標,以下會通過矩陣轉換的方式,計算一下它在Unity中的全局座標,也是快速讀者怎樣利用矩陣變換擷取到在世界空間的全局座標。在Unity3D引擎使用的是左手座標系也就是Z軸朝裡。X軸朝右。Y軸朝上。

將我們製作好的模型拖入到Unity編輯器後的效果例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />

紅色箭頭表示的是X軸,綠色的箭頭表示的是Y軸。藍色的箭頭表示的是Z軸。

它在世界情境中的座標是(0。0。0)換句話說就是它自身的局部座標與全局座標重合。它的孩子節點是我們上面提到過的,以下我們將模型進行位移,旋轉,縮放進行操作,我們進行縮放(2,2,2),旋轉(0。150。0),位移(5,0,25)。在Unity的表現效果例如以下所看到的:


我們能夠構建出模型變換矩陣,在這裡要注意一個問題,它們變換的順序是一定的,不能改變。

先進行縮放,在進行旋轉,最後進行位移操作。相應的矩陣變換例如以下所看到的:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />

接下來我們對模型的子物體進行模型變換例如以下:

watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvanh3MTY3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" />

也就是說。在世界空間下,模型的子孩子的位置是(9,4,18.0)這樣我們通過矩陣變換就得到了子孩子的全局座標,事實上這些基本運算我們在遊戲開發中也是常常使用的。比方我們能夠自己利用矩陣變換實現即時陰影,Unity3D內建的陰影因為消耗比較大,不easy在移動端實現,我們自己能夠利用矩陣變換實現,效率得到提升。

後面繼續介紹觀察空間的矩陣實現。













Unity3D引擎之渲染技術系列一

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.