虛擬環境中基於四元數的六自由度模型隨動相機控制算法的製作方法
2023-10-08 10:17:54 2
本發明屬於虛擬實境領域,具體涉及一種虛擬環境中的運動目標模型與相機控隨動控制算法。
背景技術:
三維視景仿真環境是一種基於計算機信息技術的沉浸式交互環境,其核心是計算機軟體技術與硬體技術的有效結合,通過執行相關的計算機算法變換操作產生逼真的視覺與聽覺上的沉浸式效果。三維視景仿真技術作為計算機技術中最為前沿的應用領域之一,已廣泛應用於車輛駕駛仿真模擬、輪船仿真駕駛模擬、飛行器仿真駕駛追蹤、科學計算三維仿真模擬、三維場景歷史再現、城市規劃設計等應用領域。當前,對鎖定的運動目標進行實時跟蹤與控制研究的問題日益受到關注。
四元數是一種簡單的超複數,由愛爾蘭數學家哈密頓(William Rowan Hamilton)在1843年提出,可用於刻畫物體在空間的旋轉。物體在空間具有六個自由度,即沿x、y、z三個直角坐標軸方向的移動自由度和繞x、y、z三個坐標軸的轉動自由度,一個沒有任何約束力的物體在空間上均具有6個獨立的運動,六自由度可用於確定運動物體的精確位置。當前對鎖定的運動目標進行實時跟蹤與控制研究大多數僅將跟隨物簡化成一個點,單獨使用四元數進行研究,未能做到四元數與六自由度的有機結合。
技術實現要素:
本發明提出了一種虛擬環境中基於四元數的六自由度模型隨動相機控制算法,從運動目標的角度出發進行分析,以四元數為基礎,以運動目標的六自由度運動變化向量為相機隨動核心,將相機視點與運動目標進行綁定,自動實現虛擬環境下運動目標的隨動相機控制。
本發明的技術方案是這樣實現的:
一種虛擬環境中基於四元數的六自由度模型隨動相機控制算法,其包括以下步驟:
S1)將當前系統相機視點與運動目標進行綁定;
S2)實時獲得當前運動目標所處外部作用力等數據;
S3)實時獲得當前運動目標的三維坐標數據及運動姿態參數,通過四元數與六自由度的相關變換算法獲得修正後的運動目標的運動參數;
S4)計算相機的運動姿態變化,同步更新相機的運動;
S5)通過鍵盤及外設控制器等裝置改變跟隨目標的運動狀態,控制跟隨目標的運動。
上述技術方案中,步驟S1)主要完成相機視點與運動目標的綁定操作,具體如下實現:
首先編寫一個隨動相機控制事件處理器,該事件處理器基於三維視景仿真技術中相關算法實現,該事件處理器在初始化階段根據用戶需要選擇跟蹤目標,之後將該事件處理器寫入處理器列表,把所寫的事件處理器激活,啟動該事件處理器。在該事件處理器中,通過設置參數判斷是否選擇綁定目標物。
上述技術方案中,步驟S2)主要獲得當前外部作用力等數據,該數據可由仿真控制器自動模擬獲得,也可以傳入事先預設的默認值。具體的,可以在隨動相機控制事件處理器中,通過當前視點位置獲得所在位置外部作用力Fn。
上述技術方案中,步驟S3)主要獲得當前運動目標的三維位置坐標、運動速度,包括六自由度的運動姿態,通過四元數中的變換矩陣對目標物的運動姿態進行修正與更新。具體的,獲得當前運動目標的當前三維中心點坐標P0、四元數Q、六自由度S及運動速度v,其中Q(b,c,d),S=(Δx,Δy,Δz,Q),v是一個三維向量,有x、y、z三軸的方向。
上述技術方案中,步驟S4)主要進行相機位置與姿態參數的更新,具體是根據S3)獲得的運動目標運動參數與姿態進行相機位置與姿態的更新
上述技術方案中,步驟S5)提供用戶控制運動目標的手段,通過計算機鍵盤及外設控制器等裝置改變運動目標的運動狀態參數,通過四元數中的相關參數實現跟隨目標的六自由度變換控制,同時重複執行S2)、S3)、S4)操作實現系統相機的同步更新。具體來講,可以通過設置鍵盤及外設控制器映射碼值控制跟隨目標運動狀態及運動參數。
本發明的虛擬環境中基於四元數的六自由度模型隨動相機控制算法有完備的理論支撐,能準確獲得運動目標的運動姿態等實時數據並實現對運動目標的交互控制,算法結構簡單,計算量小,能有效的應用於運動目標的隨動相機控制。
附圖說明
為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對於本領域普通技術人員來講,在不付出創造性勞動性的前提下,還可以根據這些附圖獲得其他的附圖。
圖1虛擬環境中基於四元數的六自由度模型隨動相機控制算法流程圖。
具體實施方式
下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基於本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬於本發明保護的範圍。
如圖1所示,本發明的虛擬環境中基於四元數的六自由度模型隨動相機控制算法,包括以下步驟:
S1)將當前系統相機視點與運動目標進行綁定:
在該步驟中,首先編寫一個隨動相機控制事件處理器,該事件處理器基於三維視景仿真技術中相關算法實現,該事件處理器在初始化階段根據用戶需要選擇跟蹤目標,之後將該事件處理器寫入處理器列表,把所寫的事件處理器激活,啟動該事件處理器。在該事件處理器中,通過設置參數判斷是否選擇綁定目標物。
S2)實時獲得當前運動目標所處外部作用力等數據:
在隨動相機控制事件處理器中,通過當前視點位置獲得所在位置外界作用力,為簡化運算,將阻力數值化,用Fn表示,即:
Fn(Fx,Fy,Fz)
Fn是一個三維向量,具有x、y、z三軸的方向與數值大小,即表示為單位時間阻力的位移。
S3)實時獲得當前運動目標的三維坐標數據及運動姿態參數,通過四元數與六自由度的相關變換算法獲得修正後的運動目標的運動參數:
在四元數中,用A表示物體所在的空間位置,即:
A=a+bi+cj+dk
其中i、j、k表示三個虛部方向,a、b、c分別表示i、j、k的參數。用S表示六自由度,即:
S=(Δx,Δy,Δz,α,β,γ)
其中Δx、Δy、Δz分別表示x、y、z三個坐標軸的變化量,均有正負符號之分。α、β、γ分別表示繞x、y、z三個坐標軸的旋轉量,有方向與大小,是四元數的虛部參數,用Q表示,即:
Q(b,c,d)
因此S簡化為:
S=(Δx,Δy,Δz,Q)
在該步驟中,用P0表示當前跟隨物的三維中心坐標,即:
P0(x0,y0,z0)
其中x0、y0、z0分別表示x、y、z三個坐標軸的坐標。設運動目標的運動速度為v,即:
v(vx,vy,vz)
設實時更新後跟隨物的中心三維坐標為p,則在六自由度參數中,更新六自由度參數為:
Δx=vx*cos(b)+Fx
Δy=vy*cos(c)+Fy
Δz=vz*cos(d)*sin(d)+Fz
所以,更新後運動目標的三維中心坐標為:
p(x,y,z)=(x0+Δx,y0+Δy,z0+Δz)
S4)計算相機的運動姿態變化,同步更新相機的運動:
在該步驟中,設更新前系統相機的三維坐標為Pm0,即:
Pm0(xm0,ym0,zm0)
設更新後系統相機坐標為Pm,即:
Pm(xm,ym,zm)
則更新後系統相機坐標變換為:
Pm=(xm+Δx,ym+Δy,zm+Δz)
S5)通過鍵盤及外設控制器等裝置改變跟隨目標的運動狀態,控制跟隨目標的運動。
在該步驟中,通過設置鍵盤及外設控制器映射碼值控制跟隨目標運動狀態及運動參數。通過鍵盤按鍵及外設操縱器實時向虛擬仿真系統傳入系統,實時改變外部作用力參數Fn、運動速度v、四元數Q與六自由度S,再執行步驟S3)、S4)的操作,完成外設裝置對跟隨目標的控制。
以上所述僅為本發明的較佳實施例而已,並不用以限制本發明,凡在本發明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發明的保護範圍之內。