日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【Unity学习笔记】Unity中的欧拉角(Euler Angle)和万向节(Gimbal)

發布時間:2024/3/12 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Unity学习笔记】Unity中的欧拉角(Euler Angle)和万向节(Gimbal) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

聲明:此篇文章是個人學習筆記,并非教程,所以內容可能不夠嚴謹。可作參考,但不保證絕對正確。如果你發現我的文章有什么錯誤,非常歡迎指正,謝謝哦。

目錄

  • 1 奇怪的現象
    • 1.2現象一
    • 1.2 現象二
    • 1.3 現象三
  • 2 萬向節(Gimbal)和萬向節鎖(Gimbal Lock)
    • 2.1 萬向節
    • 2.2 歐拉角和萬向節的關系
    • 2.3 萬向節鎖
      • 2.3.1 什么是萬向節鎖
      • 2.3.2 如何避免萬向節鎖
  • 3 解釋奇怪的現象
    • 3.1 現象一
    • 3.2 現象二
    • 3.3 現象三
    • 3.4 補充現象四
    • 3.5 補充現象五
  • 4 總結
    • 4.1 rotation值的含義
    • 4.2不同的萬向節示例圖
      • 第一種圖示
      • 第二種圖示
      • 相同點
    • 4.3最后
  • 5 推薦文章

1 奇怪的現象

Unity的Inspector面板上的rotation是歐拉角,簡單來說歐拉角由三個旋轉值組成。當剛開始接觸Unity時,在Inspector面板上看到Transform組件,會想當然的認為它的rotation要么是指物體繞其慣性坐標軸的旋轉度數,要么是物體繞其局部坐標軸的旋轉度數。簡簡單單,X分量就是繞X軸,Y分量就是繞Y軸,Z分量就是繞Z軸而已嘛。

但是當我們試著調整Inspector面板上的rotation時,有時候又會出現奇怪的現象。

1.2現象一

物體旋轉既不是繞自身坐標軸旋轉,也不是繞慣性坐標軸旋轉。

顯示的自身坐標軸顯示的慣性坐標軸Inspector面板

1.2 現象二

有時候,我們直接在場景中調整物體的單個旋轉軸(無論慣性坐標軸還是自身坐標軸),但在Inspector面板上卻能看到rotation三個數值在同時變化。

場景Inspector面板

1.3 現象三

更嚴重的是,有時候會出現一個旋轉方向丟失的現象,比如當我們將X旋轉90°,再去調整Z和Y的值時會發現:調整Z和Y的效果一樣,也就是說我們三個旋轉方向變兩個了。

將X旋轉至90°,再旋轉Z軸將X旋轉至90°,再旋轉Y軸

為什么會出現這些奇怪的現象,難道是因為Unity出了什么Bug?在解決這個問題之前,先要了解一下萬向節。

2 萬向節(Gimbal)和萬向節鎖(Gimbal Lock)

2.1 萬向節

如果以前沒有了解過萬向節,可以看這里:萬向節和萬向節鎖

萬向節有三個坐標軸X,Y,Z,剛開始時,三個坐標軸是相互垂直的,這似乎很常見。

但要注意的一點是,它的三個坐標軸有父子關系,父軸的轉動會帶動子軸的轉動,類似于我們在Unity的Hierachy面板上構建的父子關系(如下圖)。試著排列三個坐標軸的父子關系,會發現三個軸的父子關系有6種,xyz\xzy\yxz\yzx\zxy\zyx,在不同的應用場景中,人們會采用不同的關系。下面以yxz為例子:

現在假設三個軸的層次關系是這樣的: Z在最底層,X是Z的父項,Y是X的父項。也就是說,當我們旋轉萬向節中的三個軸時,會有以下現象:
Z軸旋轉時,另外兩個軸不旋轉
X軸旋轉時,Z軸隨X軸旋轉而旋轉(相對靜止),Y軸不動
Y軸旋轉時,X,Z都隨Y軸旋轉而旋轉(相對靜止)
文字性的描述可能不夠清晰,下面的圖來自我自己在Unity中編寫的萬向節模擬系統,物體的旋轉使用萬向節來實現(其中藍色的環表示物體的Z旋轉軸,紅色表示X,綠色表示Y):

旋轉的軸圖片描述
Z藍色的軸是Z軸,當旋轉Z軸時,X和Y軸保持原有狀態不動。因為Z軸在最底層。
X紅色的軸是X軸,因為Z軸是X軸的子項,所以當旋轉X軸時,Z軸會隨之運動(保持相對靜止)。而Y軸保持不動
Y綠色的軸是Y軸,因為X軸是Y軸的子項,而Z軸是Y軸子項的子項,所以旋轉Y軸時,X和Z均會隨之旋轉從而與Y軸保持相對靜止

2.2 歐拉角和萬向節的關系

歐拉角內部就是使用的萬向節的規則(為什么使用這種規則,為什么不采用三個軸互不影響的策略,可以考慮參考我的下一篇筆記)。可以想象成每個游戲物體有一個隱藏的萬向節坐標系統(當然,這是不準確的,這里這么說只是為了幫助理解),就像上面圖上的飛機一樣。而Inspector面板上的rotation就是歐拉角,也就是采用的萬向節的規則。

2.3 萬向節鎖

2.3.1 什么是萬向節鎖

萬向節的特點是“軸與軸之間存在父子關系,每個軸對另外兩個軸的影響各不相同”,也正是因為這個特點,導致出現了一些缺點。
比如當我們將X軸旋轉90°后,Z軸和Y軸會變成平行狀態,然后我們會發現旋轉Z軸和Y軸的效果竟然是一模一樣的,這就導致當我們想讓圖中的飛機實現轉向操作時就找不到軸了(這似乎與我們的直覺相違背,三個軸變成了兩個)

將X軸旋轉90°旋轉Z和Y對物體的旋轉效果一樣利用萬向節中的軸無法完成的旋轉

2.3.2 如何避免萬向節鎖

3 解釋奇怪的現象

前面提到,歐拉角運用的就是萬向節的規則。經過我的實驗證明,Unity中的歐拉角采用的是yxz的層次關系(即y在最外層,如上面的例子),Inspector面板上顯示的并不是物體繞自身局部坐標軸旋轉的度數,也不是繞慣性坐標軸旋轉的度數,而是隱藏的萬向節旋轉軸旋轉的度數。那么一切都說得通了,真相只有一個!

3.1 現象一

物體旋轉既不是繞自身坐標軸旋轉,也不是饒世界坐標軸旋轉。

解釋:這是因為物體繞得是萬向節的三個軸,既不同于Unity物體自身坐標軸也不同于慣性坐標軸。

3.2 現象二

有時候,我們直接在場景中調整物體的單個旋轉軸(無論慣性坐標軸還是自身坐標軸),但在Inspector面板上卻能看到rotation三個數值在同時變化。

場景中的旋轉軸要么是使用的物體局部坐標系,要么使用的是慣性坐標系,這二者與物體的萬向節坐標系不同。當使用場景中的旋轉軸進行旋轉時,Unity內部應該是使用的四元數進行處理,然后將其轉換為歐拉角(萬向節坐標系)的結果顯示在Inspector面板上。等價轉換之后,可能旋轉場景中一個軸的效果需要動用歐拉角的三個軸。

3.3 現象三

更嚴重的是,有時候會出現一個旋轉方向丟失的現象,比如當我們將X旋轉90°,再去調整Z和Y的值時會發現:調整Z和Y的效果一樣,也就是說我們三個旋轉方向變兩個了。

這一現象已經在前面解釋過了,物體隱含有一個萬向節系統, 有些情況下就會出現萬向節鎖(Gimbal Lock)

3.4 補充現象四

當我們在Inspector面板上按照Z、X、Y的順序調整rotation的值時會發現,此時場景中物體的旋轉效果是繞著物體的慣性坐標軸進行旋轉的。這是因為初始狀態下(0,0,0),物體的萬向節系統的三個軸是和物體的慣性坐標軸重合的,旋轉Z軸不影響X,Y軸的位置和角度,所以旋轉完Z軸后,X、Y軸依然與慣性坐標軸重合。

如果你發現結果和我說的不一樣,可能要檢查一下物體中心和坐標軸的設定是不是如此:

3.5 補充現象五

當我們在Inspector面板上按照Y、X、Z的順序調整rotation的值時會發現,此時場景中物體的旋轉效果是繞著物體的局部坐標軸進行旋轉的。這是因為初始狀態下(0,0,0),物體的萬向節系統的三個軸不僅是和物體的慣性坐標軸重合,也是和物體的局部坐標軸重合的。旋轉Y軸時會帶動X和Z軸旋轉,三個軸保持相對靜止,這和局部坐標軸是一樣一樣滴。

4 總結

4.1 rotation值的含義

最后再縷一縷關于Unity中歐拉角的思路。

歐拉角由三個旋轉值組成,三個旋轉值會根據萬向節的規則確定。Unity中Inspector面板上的rotation的三個值對應的是物體的歐拉角,即通過萬向節規則確定的三個旋轉值。當我們調節Inspector面板上的rotation的值時,Unity根據萬向節規則計算出物體當前的朝向。

4.2不同的萬向節示例圖

我在不同的文章或者視頻中看到了兩種萬向節的示例圖,第一次見感覺這兩種萬向節似乎相互矛盾,但二者其實本質上是一樣的。

第一種圖示

這張圖示是我在維基百科英文版Wikipedia中看到的,它的旋轉方式是讓環繞著橫插過環的軸進行旋轉的。

第二種圖示

這種圖示是我在講解萬向節鎖的視頻中看到的,也是上面我自己做的圖中采用的方式,即像輪胎一樣沿著環進行旋轉。這里就懶得放圖了。

相同點

這兩種不同的旋轉方式并不影響它們表達相同的本質:父軸的旋轉會帶動子軸的旋轉,而子軸的旋轉并不帶動父軸的旋轉。
另外,我還在一些文章中看到了最里層的軸會帶動外層的軸旋轉,外層的軸不會帶動里層的軸旋轉(和上面相反),其本質也是一樣一樣滴。

4.3最后

這里Unity中關于歐拉角和萬向節的討論依然不夠深入,停留在表面的理解上。我將在我的下一篇文章中說說我對“歐拉角為什么會符合萬向節的規則”的理解。

5 推薦文章

①清晰易懂的萬向節和萬向鎖的視頻(前面已經提到): https://v.youku.com/v_show/id_XNjk1MTkzMTM2.html#paction

②大佬關于歐拉角的講解文章:
Ⅰ.https://blog.csdn.net/andrewfan/article/details/60866636
Ⅱ.https://blog.csdn.net/AndrewFan/article/details/60981437#comments_14584533

總結

以上是生活随笔為你收集整理的【Unity学习笔记】Unity中的欧拉角(Euler Angle)和万向节(Gimbal)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 撸啊撸在线视频 | 明星毛片| 精品久久久久久久久久久久 | 中文字幕免费视频 | 在线看一级片 | 色偷偷91 | 国产日本欧美一区二区 | 国产美女91呻吟求 | 中国成人毛片 | 美女扒开尿口给男人桶 | 少妇裸体视频 | 成人精品水蜜桃 | 国产精品99精品 | 911国产视频 | 日韩色吧 | 成人av高清在线 | 日本aa大片| 呦呦网 | 日韩乱码人妻无码系列中文字幕 | 亚州欧美在线 | 中文字幕一区二区三区在线不卡 | 欧美性jizz18性欧美 | 亚洲最大的成人网 | 国产精品久久久久久 | 在线视频网站 | 亚洲一区在线不卡 | 五月婷激情| 亚洲色妞| 岛国av噜噜噜久久久狠狠av | 欧美国产日韩一区二区 | 久久首页 | 天天插天天操 | av拍拍拍| 性饥渴的农村熟妇 | 亚洲欧美偷拍视频 | 国产大尺度视频 | 黄色成人小视频 | 亚洲视频网址 | 亚洲在线视频一区 | 亚洲视频免费在线播放 | 国产精品亚洲欧美在线播放 | 欧美激情一级精品国产 | 国产又粗又长又爽 | 国产富婆一区二区三区 | 日本xx片 | 午夜神马福利 | 理论片午午伦夜理片影院99 | 欧美日韩综合视频 | 亚洲天堂影院在线观看 | 视频一区二区三区精品 | 成人自拍视频在线观看 | 日韩人妻一区二区三区蜜桃视频 | 国产精品呻吟 | 美女四肢被绑在床扒衣 | 国产精品女同 | 毛片aaaaa | 亚洲一区毛片 | 蜜臀在线一区二区三区 | 亚洲一区二区三区四区 | 国产人人射 | 日韩精品一区二区三 | 色91| 国产青青草在线 | 操操久久 | 91视频最新 | 黑人巨大精品 | 多毛的亚洲人毛茸茸 | 日本在线免费看 | 国产精品美女毛片真酒店 | 香蕉视频在线免费播放 | 欧美亚洲自拍偷拍 | 手机av免费在线观看 | 性调教学院高h学校 | 久久午夜剧场 | 一本大道东京热无码aⅴ | 99在线成人精品视频 | 调教91| 97视频播放| 91少妇丨porny丨 | 中文字幕人妻一区二区在线视频 | 午夜影院欧美 | 亚洲精品一区二区三区在线观看 | 久久老女人 | 成人激情视频网站 | 农村搞破鞋视频大全 | 久久免费一区 | 伊人亚洲| 午夜影院啊啊啊 | 久久久久久久9 | 黄色免费一级片 | 国产视频一二三区 | 亚洲成人黄色网 | 欧美特黄 | 日韩福利视频一区 | 午夜爽爽爽视频 | 中文av网 | 99久久精品免费看国产交换 | 超级碰在线视频 | av噜噜色 |