<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          游戲中到底是Z軸朝上還是Y軸朝上?

          共 1804字,需瀏覽 4分鐘

           ·

          2020-12-12 16:43

          這是【游戲開發(fā)那些事】的第42篇原創(chuàng)

          點擊關(guān)注加“星標(biāo)”獲取更多游戲開發(fā)知識與科普文章


          在談到游戲世界中的坐標(biāo)軸時,我們經(jīng)常會看到這樣的爭論。

          戲中Y軸是向上的好么?這你都不知道?

          “不對,空間直角坐標(biāo)系不就是Z軸向上的么?”

          “拜托,請搞清楚坐標(biāo)系再來討論好么?”.....



          對于長期空間直角坐標(biāo)系(Z軸向上)的我也存在著同樣的困惑,左右手坐標(biāo)系已經(jīng)夠讓人頭大了,為什么連哪個軸向上都不能統(tǒng)一一下?而后當(dāng)我試圖通過搜索引擎尋找答案時,發(fā)現(xiàn)這個問題確實有不少人在討論,也終于搞清楚了其中的緣由。



          故事可能要從著名的三維建模軟件3DS Max說起。3DS Max是公司AutoDesk第一款建模軟件,它于1990年發(fā)布,主要用于設(shè)計和建筑領(lǐng)域。

          在建筑學(xué)中,通常要先從平面圖開始設(shè)計,所以先在2D網(wǎng)格上繪制X軸和Y軸,隨后在將其拉伸成3D模型。很自然的,他們將下一個軸設(shè)置向上,即在3DMAX里面向上的便是Z軸Z-Up)。這種思路與我們在學(xué)校時第一次從平面幾何踏入空間幾何的想法完全契合。


          而在1998年,另一款著名的建模軟件——
          Maya誕生了。Maya一開始主要作為動畫軟件系統(tǒng)發(fā)行,廣泛用于動畫電影當(dāng)中。

          與建筑領(lǐng)域相似,當(dāng)時的動畫通常也是2D的,即正面看Y軸向上,X軸向右。不過早期的迪士尼和其他動畫作品為了能在不改變2D畫面效果的條件下增加維度(例如2D平臺游戲),保留了X軸和Y軸的朝向,新增的Z軸便成為了深度。當(dāng)然,這里也有一定程度的歷史原因——由于Maya一開始為SGI的(硅谷圖形公司Silicon Graphics, Inc.)硬件開發(fā),SGI早期提供的渲染引擎就是Y軸向上的,所以Maya就跟隨SGI的標(biāo)準(zhǔn)制定坐標(biāo)系(Y-Up)。



          其實,造成這種差異的根本原因在于你是在屏幕空間中思考還是在世界空間中進(jìn)行思考。

          在屏幕空間中,給定X和Y的屏幕坐標(biāo),將Z作為深度可以方便的處理遮擋問題(即Y-Up)。許多渲染技術(shù)(DX、OpenGL)都使用“ Z緩沖區(qū)”之類的名稱的來處理屏幕空間渲染(三維空間的渲染最后還是會輸出到屏幕空間)。很明顯,在二維環(huán)境中,Y軸向上的坐標(biāo)系更有意義一些。




          然而在世界空間中,我們通常希望像現(xiàn)實一樣構(gòu)建三維的世界。正常的三維空間示意圖都將第三個坐標(biāo)視為垂直方向的(即Z-Up)。要在世界空間中定義一個矩形,則要給出其長、寬、高。如果將Y視為垂直方向,那么就會陷入了一種不符合常識的情況,與我們多年來接觸的笛卡爾坐標(biāo)系相悖。



          當(dāng)你仔細(xì)調(diào)查一下目前流行的軟件時,你會發(fā)現(xiàn)不同的軟件其坐標(biāo)系默認(rèn)都是不一樣的。除了前面提到的兩款三維建模軟件,另外兩款著名的游戲引擎Unity與Unreal也有著不同的坐標(biāo)系。受到歷史因素的影響,Unreal誕生時3DS Max是當(dāng)時大多數(shù)開發(fā)人員選擇的建模工具包(Maya還沒有誕生),所以采用了Z軸向上的左手系坐標(biāo)。而Unity3D在2000以后才正式發(fā)布,采用的則是Y軸朝上左手坐標(biāo)系。


          由于標(biāo)準(zhǔn)的不同,導(dǎo)致我們在使用不同游戲引擎以及不同建模軟件交互時需要手動處理坐標(biāo)系的轉(zhuǎn)換。而對于那些只接觸過部分軟件的人往往會保留“Z軸向上”或者“Y軸的向上”的固有印象,從而造成了前面提到的爭論現(xiàn)象。無論哪種坐標(biāo)系,都有其一定的道理,我們理解其中的緣由并能靈活的運用即可。


          最后,再幫大家復(fù)習(xí)一下左手坐標(biāo)系和右手坐標(biāo)系(揮動雙手的同時不妨點個贊支持一下)。


          ?———— ?往期推薦文章??————?



          使用虛幻引擎4年,我想再談?wù)勊木W(wǎng)絡(luò)架構(gòu)

          你有哪些“相見恨晚”的UE4學(xué)習(xí)資料?

          史上最全的C++/游戲開發(fā)面試問題總結(jié)

          網(wǎng)絡(luò)同步在游戲歷史中的發(fā)展變化

          游戲中的角色是如何“動”起來的?

          如何學(xué)習(xí)大型項目的源碼?

          為什么說“角色移動”看上去很簡單,卻需要極高的技術(shù)力與細(xì)節(jié)成本?



          游戲開發(fā)那些事


          我是Jerish,網(wǎng)易游戲客戶端開發(fā)工程師,

          公眾號會定期輸出技術(shù)干貨和游戲科普的文章

          回復(fù)"gamebook",獲取游戲開發(fā)書籍

          回復(fù)"C++面試",獲取C++/游戲面試經(jīng)驗

          回復(fù)"操作系統(tǒng)",獲取操作系統(tǒng)經(jīng)典書籍

          游戲開發(fā)交流群(875867499)


          瀏覽 269
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  中国老熟女~x88AV | 人人妻人人澡人人爽人人 | 在线观看av网站 中文字幕久久久久 | 福利视频午夜 | 久久综合婷婷国产五区 |