国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      實現同時響應陀螺儀與手勢拖拽交互的方法和裝置及手機與流程

      文檔序號:11063244閱讀:541來源:國知局
      實現同時響應陀螺儀與手勢拖拽交互的方法和裝置及手機與制造工藝

      本發(fā)明涉及全景視頻播放技術領域,特別是涉及一種實現Android平臺全景視頻播放同時響應陀螺儀與手勢拖拽交互的方法和裝置。



      背景技術:

      近兩年,虛擬現實技術得到了飛速的發(fā)展,例如國外的Oculus、Google、三星都發(fā)布了自己的VR產品,包括虛擬現實硬件設備和開發(fā)使用的SDK。目前主要的VR設備有三大類。一類是VR眼鏡,這類產品需要配合手機使用,將手機插入到VR眼睛中,配合VR應用來體驗虛擬現實效果,VR應用運行于手機之上,比較有代表性的是Google的Cardboard和DayDreamView;另一類是VR頭顯,這類需要和電腦或者游戲主機配合使用,應用在電腦或者主機中,VR頭顯只負責展示從主機或者電腦傳輸過來的影像信號,例如HTCVIVE;最后一類稱為VR一體機,也就是不需要借助其他設備,用戶只需要帶上這個設備,在任何地方都能體驗VR效果。

      目前這些VR設備上主流的應用形式有兩大類,一類是游戲應用,而另一類就是全景視頻應用。全景視頻不同于傳統(tǒng)視頻,提供了一種全新的交互方式和體驗。如何為用戶提供更逼真的虛擬現實體驗成為我們首先需要解決的問題。

      目前國內外也有不少研究全景視頻技術的公司,比如Google公司發(fā)布的DayDreamSDK(前身是Carboard SDK),該SDK提供了一種根據陀螺儀數據變化變換觀看角度來實現全景視頻播放的方式。

      國內的有些公司也研發(fā)了自己的實現全景視頻播放的產品。大致分為兩類,一類是基于Cardboard SDK進行開發(fā),另一類是使用自己的算法實現。根據陀螺儀變化調整視頻視角。也有的公司針對手機端的產品開發(fā)了使用戶可以通過手勢拖拽來調整觀看視角的功能。

      Google的DayDreamSDK或Cardboard SDK的全景播放的方案因為使用簡單,被廣泛應用,但是它存在兩處不足:一是它只支持根據陀螺儀數據變化來調整觀看視角;二是由于該項目不開放源代碼且采用了谷歌自家的播放器,因此全景播放器無法進行一些定制化修改,遇到了bug也只能等待google來解決。這對于那些對播放器有定制化需求的產品而言存在一定使用上的局限性。

      而國內的產品主要存在兩類問題:一是他們中的大部分的只支持單一的交互方式,即根據陀螺儀數據變化來調整視角的方式。部分產品雖然也支持手勢拖拽和陀螺儀兩者,但是并不能對兩者同時進行響應,只能在陀螺儀模式和手勢拖拽模式間切換,如UtoVR等;二是大部分產品在響應陀螺儀時都是利用陀螺儀的原始數據直接處理,而有些手機陀螺儀數據往往是不夠精確的,而且陀螺儀旋轉數據變化經常會存在一定的抖動現象,即手機靜止時,陀螺儀返回的數據有時也會發(fā)生一定的變化,就導致最終在播放視頻時移動手機可能會導致視頻抖動,用戶體驗較差。



      技術實現要素:

      本發(fā)明的目的是針對現有技術中存在的技術缺陷,而提供一種實現Android平臺全景視頻播放同時響應陀螺儀與手勢拖拽交互的方法和裝置。

      為實現本發(fā)明的目的所采用的技術方案是:

      一種實現同時響應陀螺儀與手勢拖拽交互的方法,包括,

      在Android視頻圖像繪制的目標視圖上建立一個球面模型,創(chuàng)建一個用于控制視角的相機并放置在球面模型的球心位置;

      播放器對全景視頻進行解碼操作并生成視頻紋理,然后將視頻紋理附著在所述的球面模型的內表面,

      同時監(jiān)聽手機的陀螺儀變化和手機屏幕上的手勢拖拽操作,當獲取到陀螺儀的原始數據并將它轉換成旋轉矩陣的形式,然后將旋轉矩陣應用到放置于球心的相機上使其做同樣的旋轉變換,當監(jiān)聽獲取到用戶在屏幕上橫向拖拽的距離和方向并控制球面模型繞相機自身坐標系的X軸或Y軸按拖拽的方向進行旋轉;

      在視角旋轉同時渲染層利用圖形庫進行模型和畫面的渲染。

      將陀螺儀旋轉矩陣中的每一個數據項采用低通濾波器進行過濾以把過高的變化值濾掉,得以消除陀螺儀的抖動使得旋轉變換更平滑更連貫。

      所述的低通過濾器的處理方法為,

      R[n]=R[n-1]+a*(X[n]-R[n-1])

      其中X[n]代表當前陀螺儀采集到的旋轉矩陣中的某一元素值,R[n-1]代表上一次計算完后真正用于旋轉變換的旋轉矩陣中的某一元素值,R[n]代表矯正后的結果值,a是矯正因子。

      獲取到用戶在屏幕上橫向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的Y軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應;獲取到用戶在屏幕上縱向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的X軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應。

      利用OpenGL ES創(chuàng)建所述的球面模型和相機,所述的圖形庫為OpenGL ES。

      一種實現同時響應陀螺儀與手勢拖拽交互的裝置,包括,

      建模模塊,用以在Android視頻圖像繪制的目標視圖上建立一個球面模型,創(chuàng)建一個用于控制視角的相機并放置在球面模型的球心位置;

      播放模塊,用以對全景視頻進行解碼操作并生成視頻紋理,然后將視頻紋理附著在所述的球面模型的內表面,

      旋轉模塊,同時監(jiān)聽手機的陀螺儀變化和手機屏幕上的手勢拖拽操作,當獲取到陀螺儀的原始數據并將它轉換成旋轉矩陣的形式,然后將旋轉矩陣應用到放置于球心的相機上使其做同樣的旋轉變換,當監(jiān)聽獲取到用戶在屏幕上橫向拖拽的距離和方向并控制球面模型繞相機自身坐標系的X軸或Y軸按拖拽的方向進行旋轉;

      渲染模塊,用以在視角旋轉同時利用圖形庫進行模型和畫面的渲染。

      還包括低通濾波器,用以將陀螺儀旋轉矩陣中的每一個數據項進行過濾以把過高的變化值濾掉,得以消除陀螺儀的抖動使得旋轉變換更平滑更連貫。

      所述的低通過濾器的處理方法為,

      R[n]=R[n-1]+a*(X[n]-R[n-1])

      其中X[n]代表當前陀螺儀采集到的旋轉矩陣中的某一元素值,R[n-1]代表上一次計算完后真正用于旋轉變換的旋轉矩陣中的某一元素值,R[n]代表矯正后的結果值,a是矯正因子。

      利用OpenGL ES創(chuàng)建所述的球面模型和相機,所述的圖形庫為OpenGL ES。

      一種具有所述的裝置的手機。

      與現有技術相比,本發(fā)明的有益效果是:

      (1)本發(fā)明實現了全景視頻播放時可以同時通過陀螺儀和手勢拖拽來調整視頻視角的功能。

      (2)本發(fā)明針對原始的陀螺儀數據采用低通濾波器進行預處理,降低了由于陀螺儀精度問題導致的旋轉變換不平滑甚至不連貫的問題,解決了陀螺儀精度不夠導致視頻抖動的問題。

      (3)本發(fā)明將全景視頻視角變換的渲染層邏輯與播放器隔離開來,播放器可以自由選擇,靈活度較高。不像Cardboard SDK兩者綁定在一起,無法定制播放器。

      附圖說明

      圖1所示為本發(fā)明的實現Android平臺全景視頻播放同時響應陀螺儀與手勢拖拽交互的方法和裝置的流程示意圖。

      具體實施方式

      以下結合附圖和具體實施例對本發(fā)明作進一步詳細說明。應當理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。

      全景視頻:又稱720度或者360度全景視頻(以下簡稱“全景視頻”)。不同于傳統(tǒng)的普通視頻,全景視頻可以在拍攝角度左右上下360度的任意觀看動態(tài)視頻,讓我們有一種真正意義上身臨其境的感覺,而它將不受時間、空間和地域的限制。全景視頻它不在是單一的靜態(tài)全景圖片形式,而是具有景深、動態(tài)圖像、聲音等包羅萬象,同時具備聲畫對位、聲畫同步。

      OpenGL(Open Graphics Library):OpenGL(全寫Open Graphics Library)是指定義了一個跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)的圖形程序接口。它用于三維圖像(二維的亦可),是一個功能強大,調用方便的底層圖形庫。OpenGL是行業(yè)領域中最為廣泛接納的2D/3D圖形API,其自誕生至今已催生了各種計算機平臺及設備上的數千優(yōu)秀應用程序。OpenGL是獨立于視窗操作系統(tǒng)或其它操作系統(tǒng)的,亦是網絡透明的。在包含CAD、內容創(chuàng)作、能源、娛樂、游戲開發(fā)、制造業(yè)、制藥業(yè)及虛擬現實等行業(yè)領域中,OpenGL幫助程序員實現在PC、工作站、超級計算機等硬件設備上的高性能、極具沖擊力的高視覺表現力圖形處理軟件的開發(fā)。

      OpenGL ES(OpenGL for Embedded Systems):是OpenGL三維圖形API的子集,針對手機、PDA和游戲主機等嵌入式設備而設計。

      為提高控制的細粒度,本發(fā)明實現Android平臺全景視頻播放同時響應陀螺儀與手勢拖拽交互的方法,包括,

      步驟101,在Android視頻圖像繪制的目標視圖上建立一個球面模型,創(chuàng)建一個用于控制視角的相機并放置在球面模型的球心位置;

      在該步驟中,可以利用利用OpenGL ES創(chuàng)建所述的球面模型和相機,具體的球模型大小可以根據自己的展示需要進行調整。

      步驟102,播放器對全景視頻進行解碼操作并生成視頻紋理,然后附著在所述的球面模型的內表面并用相機進行觀看,

      隨著播放器對全景視頻進行解碼操作,會不斷得取到新的視頻圖像,然后將這些視頻圖像轉換成視頻紋理,然后附著在上一步驟中創(chuàng)建的球面模型的內表面,并隨著視頻的解碼操作進行,不斷更新附著在球面上的視頻紋理。

      步驟103,同時監(jiān)聽手機的陀螺儀變化和手機屏幕上的手勢拖拽操作,當獲取到陀螺儀的原始數據并將它轉換成旋轉矩陣的形式,然后將旋轉矩陣應用到放置于球心的相機上使其做同樣的旋轉變換;當監(jiān)聽獲取到用戶在屏幕上橫向拖拽的距離和方向并控制球面模型繞相機自身坐標系的X軸或Y軸按拖拽的方向進行旋轉;具體地,獲取到用戶在屏幕上橫向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的Y軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應;獲取到用戶在屏幕上縱向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的X軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應。當兩個動作同時發(fā)生時分別單獨控制對應模型旋轉即可,兩者的動作控制上相互獨立,直接是將最后的結果相疊加,減少運算量,控制更為直接便利簡潔。

      步驟104,在視角旋轉同時利用圖形庫,如OpenGL ES或opengl進行模型和畫面的渲染。渲染是一直不斷在進行的一個操作,即邊旋轉邊渲染。實際渲染的內容根據旋轉的角度進行調整的。用戶可以隨時通過手勢拖拽和移動旋轉手機來調整視頻觀看的視角。從上述步驟也可以看出,所有的操作都是視頻渲染層的邏輯,OPENGLES只是一個圖形庫,渲染的處理邏輯還是由渲染層實現,將VR的渲染處理和傳統(tǒng)的播放器邏輯剝離開來,兩者分離,沒有耦合,播放器可以自由選擇,靈活度較高。因此項目可以根據實際的需要靈活選擇播放器,不存在Cardboard SDK那一類的限制。

      為了同時響應陀螺儀的數據變化和手勢拖拽,在用戶進行手勢拖拽時,按照手勢拖拽的距離和方向,對球面模型做相應的旋轉變換,這種變化會使相機視角所看到的內容發(fā)生變化;陀螺儀的處理也是類似的,而當陀螺儀數據發(fā)生變化時,使相機的旋轉矩陣保持與陀螺儀旋轉方向一致。因為兩種動作控制的旋轉對象不同,當兩個動作同時發(fā)生時,運算也不會發(fā)生疊加,但是動作會直接體現在視角上,采用該方式的兩種作用疊加實現了既能高速響應陀螺儀旋轉,同時也能通過手勢拖拽調整視角的交互方式。

      優(yōu)選地,將陀螺儀旋轉矩陣中的每一個數據項采用低通濾波器進行過濾,把過高的變化值濾掉,從而消除陀螺儀的抖動使得旋轉變換更平滑更連貫。

      低通濾波器的具體設置方式如下,根據從陀螺儀采集到的數據,形成一個旋轉矩陣,這個矩陣不直接應用到相機上進行旋轉變化。針對旋轉矩陣中的每一個元素的值,按照如下公式進行修正:

      R[n]=R[n-1]+a*(X[n]-R[n-1])

      其中X[n]代表當前陀螺儀采集到的旋轉矩陣中的某一元素值,R[n-1]代表上一次計算完后真正用于旋轉變換的旋轉矩陣中的某一元素值,R[n]代表矯正后的結果值,a矯正因子,a的取值范圍為0.1-1.2,本發(fā)明采用的是0.15。根據矯正后得到的旋轉矩陣將被真正用于旋轉變化。本發(fā)明針對原始的陀螺儀數據采用低通濾波器進行預處理,降低了由于陀螺儀精度問題導致的旋轉變換不平滑甚至不連貫的問題,也解決了陀螺儀精度不夠導致視頻抖動的問題。另外實現方案不依賴于具體的播放器,靈活度較高。

      同時,本發(fā)明還公開了一種實現Android平臺全景視頻播放同時響應陀螺儀與手勢拖拽交互的裝置,包括,

      建模模塊,用以利用OpenGL ES在Android視頻圖像繪制的目標視圖上建立一個球面模型,創(chuàng)建一個用于控制視角的相機并放置在球面模型的球心位置;

      播放模塊,用以對全景視頻進行解碼操作并生成視頻紋理,然后將視頻紋理附著在所述的球面模型的內表面,

      旋轉模塊,同時監(jiān)聽手機的陀螺儀變化和手機屏幕上的手勢拖拽操作,當獲取到陀螺儀的原始數據并將它轉換成旋轉矩陣的形式,然后將旋轉矩陣應用到放置于球心的相機上使其做同樣的旋轉變換,當監(jiān)聽獲取到用戶在屏幕上橫向拖拽的距離和方向并控制球面模型繞相機自身坐標系的X軸或Y軸按拖拽的方向進行旋轉;即,獲取到用戶在屏幕上橫向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的Y軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應;獲取到用戶在屏幕上縱向拖拽的距離和方向,然后使得球面模型繞相機自身坐標系的X軸按拖拽的方向進行旋轉,旋轉的角度大小與拖拽的距離相對應。

      渲染模塊,用以在視角旋轉同時利用圖形庫,如opengl進行模型和畫面的渲染。

      所述的旋轉模塊還包括低通濾波器,用以將陀螺儀旋轉矩陣中的每一個數據項進行過濾以把過高的變化值濾掉,得以消除陀螺儀的抖動使得旋轉變換更平滑更連貫。所述的低通過濾器的處理方法為,

      R[n]=R[n-1]+a*(X[n]-R[n-1])

      其中X[n]代表當前陀螺儀采集到的旋轉矩陣中的某一元素值,R[n-1]代表上一次計算完后真正用于旋轉變換的旋轉矩陣中的某一元素值,R[n]代表矯正后的結果值,a是矯正因子。

      本發(fā)明提供了一種在Android平臺上實現同時響應陀螺儀與手勢拖拽交互進行全景視頻播放的裝置,該裝置適用于支持觸屏操作且含有陀螺儀的智能手機。同時響應手機陀螺儀和手機屏幕上的拖拽手勢實現了更靈活的交互方式。用戶只需要通過手勢將視角拖拽到指定方向即可,如果在觀看過程中想隨時變化視角也可以隨時利用陀螺儀變化視角。兩種方式同時作用,用戶可以根據需要靈活操作。

      以上所述僅是本發(fā)明的優(yōu)選實施方式,應當指出的是,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明的保護范圍。

      當前第1頁1 2 3 
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1