Home People Research Blog Courses Links Search Download
NCHC

Blog

Blog 最新文章

  1. 提供新版 Edge 的 HoloLens 2 Insider Preview
    2021/01/20 08:55
  2. Facebook Oculus Quest 2 開箱文
    2021/01/13 14:19
  3. GitLab 手動執行 pipeline 的預輸入變數
    2021/01/04 11:14

Blog 最新回應

  1. 謝謝你提供的資訊...
    2021/01/17 17:40
  2. MSVC 也是有在進步的 XD...
    2020/12/24 15:55
  3. “如果不想另外定義一個 struct 的........
    2020/12/24 15:49

Keyword 關鍵字

WebGL OpenGL C++14 Java 資訊地圖 3d print CUDA GitLab C++ 3D立體 OpenCL PHP Pandas HoloLens 2 MR CubeX 開放資料 Kinect C++14 svn Vulkan HTC Vive Pro C++17 Windows MR OpenVR Docker ASUS Xtion 資料視覺化 Python Pandas Oculus Oculus Quest 2 OpenNI OpenCV Python 開放資料 xml NiTE2 C++20 HTC Vive Focus Valve Index OpenNI2 HTC Vive git Qt javascript Docker VR OpenXR Boost iFlyover OpenMP Oculus Rift S C++11 VR

類別:技術相關 » 技術研究
文章發表|我要回應|RSS訂閱

OpenNI Application: Viewer Tracking Display

影片是透過Xtion Pro進行Head Tracking的簡單展示.

現在透過Kinnect 或是Xtion Pro這類體感裝置,加上OpenNI的人體辨識功能,可以很容易的取得人眼的位置,並且將資訊回饋至3D的程式裡進行計算.不過一般的3D程式是假設人眼在螢幕正中間垂直看向螢幕,並且以此來設定投影矩陣. 進行Head tracking的時候,人眼位置不在正中間,因此投影矩陣的計算方式也得變化,下面是計算方式的推導過程.(OpenNI取得頭部位置的方法請參照人體骨架這篇文章)

首先假設螢幕的三個角落為Pa,Pb,Pc,

而人眼的位置為Pe.

透過Pa,Pb,Pc可以計算出螢幕的座標系統的單位向量Vr, Vu Vn,

,

與座標轉換矩陣 M.

而人眼Pe到螢幕的位置如圖也可以得到三個向量Va,Vb,Vc,

並且計算出人眼到螢幕的距離 d.

接著透過螢幕大小與 Near Plane距離等比例的關係可以計算出l,r,b,t ,

結合Near plane與Far plane距離的值便可以透過OpenGL的glFrustum設定出投影矩陣P.

不過螢幕與視線沒有正交時,還需要將螢幕的座標系統轉換成世界座標系統M-1,

並且加上人眼的位移矩陣 T,

所以最後投影矩陣的計算方式為:

參考資料:

Generalized Perspective Projection, Robert Kooima. August 2008, revised June 2009.

張貼者:柏穎於2012/03/26 16:20 下午有0則回應,瀏覽次數:3,158次

-- TOP --

我要回應
* 身份  訪客 (暱稱:)
 本篇文章作者 (帳號:密碼:)
* 內容      
很高興 悲傷 震驚 疑惑 大笑 發瘋 傷心
* 留言密碼 (請輸入下方圖片中去除前、後位數的數字,共五碼。)
說明 1. * 表示必填欄位。
2. 不支援HTML Tag。
   

-- TOP --

© Visualization and Interactive Media Laboratory of NCHC, 2007 - 2021, All Rights Reserved. Contact E-mail