3d坐標系
unity和ue都采用左手坐標系
在3d軟件中,大多數(shù)軟件都用紅色代表x軸,綠色代表y軸,藍色代表z軸。
不同的是:
在unity中X軸代表右方,Y軸代表上方,Z軸代表前方;
在ue中X軸代表前方,Y軸代表右方,Z軸代表上方;
移動、旋轉(zhuǎn)、縮放
縮放:根據(jù)自身縮放,不受坐標系影響,
(移動和旋轉(zhuǎn)則分為根據(jù)世界坐標系和自身坐標系2種)
移動:通常在update()方法中每幀重復執(zhí)行,其中Vector3和Transform類都可以實現(xiàn)。Transform圍繞的是自身坐標系,Vector3圍繞的是世界(全局)坐標系。當自身坐標系和世界坐標系重合時,兩種方法效果一致。
旋轉(zhuǎn):Unity 在內(nèi)部使用四元數(shù)表示。
四元數(shù)在 Inspector 中顯示等效的歐拉角值以便于進行編輯。四元數(shù)可用于表示游戲?qū)ο蟮姆较蚧蛐D(zhuǎn)。此表示方式在內(nèi)部由四個數(shù)字組成(在 Unity 中稱為 x、y、z 和 w),但是這些數(shù)字不代表角度或軸,您通常不需要直接訪問它們。除非特別想深入研究四元數(shù)的數(shù)學原理,否則只需要知道四元數(shù)代表 3D 空間中的旋轉(zhuǎn)即可,通常不需要知道或修改 x、y 和 z 屬性。
與矢量可以表示位置或方向(從原點測量方向)的方式相同,四元數(shù)可以表示方向或旋轉(zhuǎn):從旋轉(zhuǎn)“原點”或“Identity”測量旋轉(zhuǎn)。由于旋轉(zhuǎn)的這種測量方式(從一個方向到另一個方向),因此四元數(shù)不能表示超過 180 度的旋轉(zhuǎn)。
優(yōu)點:四元數(shù)旋轉(zhuǎn)不受萬向鎖的影響。
局限性:單個四元數(shù)不能表示任何方向超過 180 度的旋轉(zhuǎn)。
局限性:四元數(shù)的數(shù)字表示在直觀上難以理解。
歐拉角
優(yōu)點:歐拉角具有直觀的“可讀”格式,由三個角度組成。
優(yōu)點:歐拉角可表示通過大于 180 度轉(zhuǎn)向從一個方向到另一個方向的旋轉(zhuǎn)
局限性:歐拉角受到萬向鎖 (Gimbal Lock) 的影響。當依次施加三個旋轉(zhuǎn)時,第一個或第二個旋轉(zhuǎn)可能導致第三個軸的方向與先前兩個軸之一相同。這意味著已失去“自由度”,因為不能圍繞唯一軸應用第三個旋轉(zhuǎn)值。
https://docs.unity.cn/cn/2019.4/Manual/QuaternionAndEulerRotationsInUnity.html文章來源:http://www.zghlxwxcb.cn/news/detail-680732.html
個人理解:因為歐拉角的旋轉(zhuǎn)是按照一定順序進行的,具有過程性而不是直接看結(jié)果。在旋轉(zhuǎn)過程中,外軸帶動內(nèi)軸共同旋轉(zhuǎn),但是內(nèi)軸不能帶動外軸旋轉(zhuǎn),所以當中間軸轉(zhuǎn)到90度時,最外側(cè)的軸和最內(nèi)側(cè)的軸會產(chǎn)生共面,從而造成死鎖丟失自由度。這種缺陷是由于歐拉角本身在定義時產(chǎn)生的。所以沒有辦法解決,只能盡量避免。例如在unity中旋轉(zhuǎn)攝像機時候,通常會進行巡航(沿y軸旋轉(zhuǎn))、俯仰(沿x軸旋轉(zhuǎn)),而滾動(沿z軸旋轉(zhuǎn))頻率最低,所以把z軸作為中間軸。而想徹底解決這個問題,則使用四元數(shù)。
查閱資料時發(fā)現(xiàn),大多數(shù)文章都是用平衡框架來舉例內(nèi)軸不能帶動外軸旋轉(zhuǎn)的共面現(xiàn)象,但是在實際工程軟件中操作如發(fā)現(xiàn)無論怎么旋轉(zhuǎn)、旋轉(zhuǎn)哪個軸,3個軸都會同時改變,所以我猜測本質(zhì)上這些軟件在內(nèi)部都是用四元數(shù)進行旋轉(zhuǎn),而表示上用歐拉角更加直觀。并且使用四元數(shù)也更便于插值。文章來源地址http://www.zghlxwxcb.cn/news/detail-680732.html
到了這里,關于unity和3d坐標系以及和ue的比較的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!