參考視頻:歐拉(萬向節鎖)講解
首先我們知道,在三維坐標系中,相機可以沿X、Y、Z三個軸旋轉,也就是在傳統的歐拉坐標系中。
如圖,綠色代表Y軸旋轉軸,紅色代表X軸旋轉軸,藍色代表Z軸旋轉軸。
然後,讓我們轉動Y軸,使箭頭指向右邊。
再次轉動x軸,使箭頭朝上。
這時妳會發現Z軸和Y軸的旋轉軸重合,妳失去了壹個旋轉軸的自由度。
也就是說,沒有壹條軸線能使箭頭直接轉向妳。
我們找不到那個灰軸,可以直接把箭頭轉向妳!
但這並不意味著箭頭不能轉向妳,只是我們需要多根軸同時轉向才能讓箭頭朝向妳。
X、Y、Z軸同時旋轉,箭頭指向妳之後,我們發現它的旋轉軌跡其實就是那條黃線。
這條黃線並不是將箭頭轉向妳的最短路徑。相反,它非常曲折。
這就是為什麽有時從3D視角看鏡頭會抖動:
妳想讓攝像機向上看,但它會繞到左邊,然後向上看。
但是有的讀者可能會說,我從來沒有遇到過這樣的情況!
是的,這種情況是可以避免的。
那麽,如何解決萬向節鎖呢?
答:再加壹個維度,就是四維旋轉。
而這個4維的旋轉量叫做四元數。
在目前主流的遊戲引擎中,都提供了四元數運算,也建議制作方使用四元數進行旋轉。
四元數可以實現平滑插值,避免萬向節鎖。唯壹的缺點是可能有點難以理解(苦笑
其具體用法,可以參考本文。