flagflag  If you want to see English page, please click "English" Button at Left.
1: 2011-11-05 (土) 18:31:19 iseki ソース 2: 2011-11-11 (金) 15:34:38 iseki ソース
Line 1: Line 1:
-*** convertRot2SLData (of SLKinect-v1.0.0) [#c6a2d789] +*** convertRot2SLData (of SLKinect-v1.0.1) [#c6a2d789] 
- void CExKinectWnd::convertRot2SLData(int uid)+ 
 + void   CExKinectWnd::convertRot2SLData(int uid)
 {  {
-    for (int j=1; j<OPENNI_MAX_JOINT_NUM; j++) { +    for (int j=1; j<OPENNI_MAX_JOINT_NUM; j++) { 
-        int n = OpenNI2SLJointNum[j]; +        int n = OpenNI2SLJointNum[j]; 
-        if (n>=0) { +        if (n>=0) { 
-            XnMatrix3X3 rot = jointRotationData((XnSkeletonJoint)j);+            XnMatrix3X3 rot = jointRotationData((XnSkeletonJoint)j)
 + 
 +             double m11 = rot.elements[0]; 
 +             double m12 = rot.elements[1]; 
 +             double m13 = rot.elements[2]; 
 +             double m21 = rot.elements[3]; 
 +             double m31 = rot.elements[6]; 
 +             double m32 = rot.elements[7]; 
 +             double m33 = rot.elements[8]; 
 +             Vector<double> eul = RotMatrixElements2EulerXYZ(m11, m12, m13, m21, m31, m32, m33); 
 +             Vector<double> vct; 
 + 
 +             if (j==3) { 
 +                 vct.set(0.0, -eul.y/2, 0.0); 
 +                 rotQuat[0].setEulerYZX(vct); 
 +                 vct.set(-eul.x, -eul.y/2, eul.z); 
 +             } 
 +             else { 
 +                 vct.set(-eul.x, -eul.y, eul.z); 
 +             } 
 +             rotQuat[j].setEulerYZX(vct); 
 +         } 
 +     } 
 + 
 +     XnVector3D  pos = jointPositionData((XnSkeletonJoint)3); 
 +     Vector<double> vect(-pos.Z, pos.X, pos.Y); 
 +     if (!isCalibrated) setStartPosData(vect); 
 + 
 +     // 
 +     //rotQuat[ 3] = ~rotQuat[ 0]*rotQuat[ 3]; 
 +     rotQuat[ 2] = ~rotQuat[ 3]*rotQuat[ 2]; 
 + 
 +     rotQuat[ 6] = ~rotQuat[ 2]*rotQuat[ 6]; 
 +     rotQuat[ 7] = ~rotQuat[ 6]*rotQuat[ 7];
-            double m11 = rot.elements[0]+    rotQuat[12] = ~rotQuat[ 2]*rotQuat[12]; 
-           double m12 = rot.elements[1]; +    rotQuat[13] = ~rotQuat[12]*rotQuat[13];
-           double m13 = rot.elements[2]+
-           double m21 = rot.elements[3]; +
-            double m31 = rot.elements[6]+
-           double m32 = rot.elements[7]+
-           double m33 = rot.elements[8]; +
-           Vector<double> eul = RotMatrixElements2EulerXYZ(m11, m12, m13, m21, m31, m32, m33); +
-           Vector<double> vct(-eul.x, -eul.y, eul.z); +
-           rotQuat[j].setEulerYZX(vct); +
-       } +
- ;   }+
-    XnVector3D  pos = jointPositionData((XnSkeletonJoint)3)+    //rotQuat[17] = ~rotQuat[ 3]*rotQuat[17]
-    Vector<double> vect(-pos.Z, pos.X, pos.Y); +    rotQuat[18] = ~rotQuat[17]*rotQuat[18];
-   if (!isCalibrated) setStartPosData(vect);+
-    // +    //rotQuat[21] = ~rotQuat[ 3]*rotQuat[21]; 
-   rotQuat[ 2] = ~rotQuat[ 3]*rotQuat[ 2]; +    rotQuat[22] = ~rotQuat[21]*rotQuat[22];
-   rotQuat[ 6] = ~rotQuat[ 2]*rotQuat[ 6]; +
-   rotQuat[ 7] = ~rotQuat[ 6]*rotQuat[ 7]; +
-   rotQuat[12] = ~rotQuat[ 2]*rotQuat[12]; +
-   rotQuat[13] = ~rotQuat[12]*rotQuat[13]; +
-   rotQuat[18] = ~rotQuat[17]*rotQuat[18]; +
-    rotQuat[22] = ~rotQuat[21]*rotQuat[22];+
-    // Set to Shared Memory +    // Set to Shared Memory 
-    for (int j=1; j<OPENNI_MAX_JOINT_NUM; j++) { +    for (int j=1; j<OPENNI_MAX_JOINT_NUM; j++) { 
-        int n = OpenNI2SLJointNum[j]; +        int n = OpenNI2SLJointNum[j]; 
-        if (n>=0) { +        if (n>=0) { 
-            double* shm = theApp.ptrShm[n]; +            double* shm = theApp.ptrShm[n]; 
-            if (shm!=NULL) { +            if (shm!=NULL) { 
-                shm[4] = rotQuat[j].x; +                shm[4] = rotQuat[j].x; 
-                shm[5] = rotQuat[j].y; +                shm[5] = rotQuat[j].y; 
-                shm[6] = rotQuat[j].z; +                shm[6] = rotQuat[j].z; 
-                shm[7] = rotQuat[j].s; +                shm[7] = rotQuat[j].s; 
-            +           
-        +       
-    }+    }
-    // Position Data from XN_SKEL_TORSO(3) to mPelvis(0) +    // Position Data from XN_SKEL_TORSO(3) to mPelvis(0) 
-    double* shm = theApp.ptrShm[0]; +    double* shm = theApp.ptrShm[0]; 
-    if (shm!=NULL) { +    if (shm!=NULL) { 
-        shm[1] = (vect.x - startPos.x)/1000.; +        shm[1] = (vect.x - startPos.x)/1000.; 
-        shm[2] = (vect.y - startPos.y)/1000.; +        shm[2] = (vect.y - startPos.y)/1000.; 
-        shm[3] = (vect.z - startPos.z)/1000.; +        shm[3] = (vect.z - startPos.z)/1000.; 
-    }+        shm[4] = rotQuat[0].x; 
 +         shm[5] = rotQuat[0].y; 
 +         shm[6] = rotQuat[0].z; 
 +         shm[7] = rotQuat[0].s; 
 +     }
 }  }


トップ   新規 ページ一覧 単語検索 最終更新   ヘルプ   最終更新のRSS 1.0 最終更新のRSS 2.0 最終更新のRSS Atom

サイト内 検索

ログイン

ユーザー名:

パスワード:


パスワード紛失
新規登録

サブ メニュー

ミニカレンダー

前月2024年 11月翌月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<今日>

オンライン状況

107 人のユーザが現在オンラインです。 (46 人のユーザが xpwiki を参照しています。)

登録ユーザ: 0
ゲスト: 107

もっと...

アクセスカウンタ

今日 : 1520152015201520
昨日 : 3947394739473947
総計 : 2446540324465403244654032446540324465403244654032446540324465403
Powered by XOOPS Cube 2.1© 2001-2006 XOOPS Cube Project
Design by XoopsDesign.com