<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>

          彈性跟隨相機!3D入門教程!

          共 1356字,需瀏覽 3分鐘

           ·

          2021-01-22 09:48

          默默地在背后關注她!

          前言

          在3d游戲中經常會用到鏡頭跟隨效果,這次我們就來實現它!

          閱讀本文需要一些的基本知識:

          • 向量基本運算(加法/減法/乘積)
          • 會調用四元數API接口
          • 運動學(速度/加速度/位移)

          效果預覽如下(可調遠近上下/彈性跟隨):

          實現

          相機跟隨的原理就像是,你暗中跟隨觀察(尾隨)你心儀的對象(Object)。

          既然是觀察,就要與對象保持一定的距離。

          為了不被對象發(fā)現,我們觀察的位置和對象的朝向有關。

          當然,你要看到對象,你的眼睛方向一定得看著對象吧,這就是視口方向。

          原理圖

          針對我們要達到的效果,需要定義好以下幾個變量。

          • 觀察對象的朝向(上方向,前方向)
          • 攝像機與對象的距離(水平距離,垂直距離)

          最終我們需要算出以下幾個玩意兒:

          • 相機位置
          • 相機旋轉角度

          位置

          求相機的位置分兩步:

          1. 根據對象的前方向和相機的水平距離,求出中間點坐標
          2. 根據對象的上方向和相機的垂直距離,求出相機的位置
          計算位置

          中文式偽代碼如下:

          對象到中間點的向量?=?-1?*?對象前方向?*?相機的水平距離
          中間的坐標?=?對象到中間點的向量?+?對象點坐標
          中間點到相機的向量?=?對象上方向?*?相機的垂直距離
          相機坐標?=?中間點坐標?+?中間點到相機的向量

          角度

          旋轉角度可以通過視口朝向和上方向得出。

          旋轉角度的求法

          偽代碼如下:

          前向向量?=?對象坐標?-?相機坐標
          旋轉角度?=?旋轉API(前向向量的歸一化,?對象上向量)

          需要注意的是,在 Cocos Creator 中相機朝向和節(jié)點旋轉的角度是相反的,所以前向量的方向要取反向。

          攝像機節(jié)點

          彈簧

          我們還可以給相機添加一個彈性跟隨的效果。

          計算過程如下:

          • 先根據上面的方法計算出相機的理想位置。
          • 然后假設現在相機所在的位置和理想的位置中有個彈簧。
          • 再根據彈簧模型求出合力(加速度)
          • 最后模擬運動算出時間點位置(位置+速度)
          彈簧模型

          彈簧簡易模型受兩個因素影響:

          • 彈簧長度(即相對位置)--拉力
          • 當前速度 --阻力

          為此我們可以定義想要的彈力系數阻力系數。

          結合起來的計算位置的偽代碼如下:

          理想位置?=?計算理想位置()
          相對距離的向量?=?理想位置?-?當前位置
          加速度?=?-?相對距離*彈力系數?-?當前速度*阻力系數
          當前速度?=?當前速度?+?加速度*間隔時間
          當前位置?=?當前位置?+?當前速度

          擴展

          還可以用其他的方法去更新位置:

          積分法

          關于彈簧系數的關系參考:

          彈簧模型系數

          小結

          位置!距離!旋轉!彈簧!

          以上為白玉無冰使用 Cocos Creator 3.0 preview-1 實現 "彈性跟隨相機!" 的技術分享。歡迎三連(點贊/在看/留言/分享)支持!

          FFF = 專注(focus)、反饋(feedback)以及糾正(fix it)!

          參考資料

          《游戲編程算法與技巧》

          《大學物理(核心知識)》

          更多

          標志板!Billboard !
          2D 素材 3D 效果!
          2020 原創(chuàng)精選!
          四元數與3D旋轉

          完整代碼: 整理后放在評論區(qū)置頂(從信中打開文章)

          點擊閱讀原文”查看精選導航

          “點贊“ ”在看”?鼓勵一下



          瀏覽 62
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <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>
                  99观看在线视频 | 日日艹自拍| 日本亲子乱婬免费播放 | 黄色片视频日韩 | 99re免费视频 |