Home People Research Blog Courses Links Search Download
NCHC

Blog

Blog 最新文章

  1. Visual Studio 的遠端偵錯:Windows
    2021/03/24 14:45
  2. Visual Studio 2019 16.9 支援使用 OpenMP LLVM
    2021/03/03 13:52
  3. Valve 推出完全支援 OpenXR 的 SteamVR 1.16.8
    2021/02/25 09:43

Blog 最新回應

  1. 加入斜體文字...
    2021/02/07 21:06
  2. 加入斜體文字...
    2021/02/07 21:06
  3. 加入斜體文字...
    2021/02/07 21:06

Keyword 關鍵字

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

類別:技術相關 » 技術研究
文章發表|我要回應|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,181次

-- TOP --

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

-- TOP --

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