サブタイトル:「mer2のマイノリティ・レポート(笑)」 --- 最近忍者ブログの仕様が変わったようで、一部の画像が見えなくなってますが、画像のURLコピペで見られます。(どうしよう困ったな) --- ご用件など、ございましたらtwitterまでどうぞ。
色々と期待していたz800SDKのヘッドトラッキングサンプルですが、得られるデータはYaw、Pitch、Rollのみです。どうなってんのよ。話が違うぢゃないの。まあ落ち着いてソースを読みましょう。
main.cpp内の38行目、GetHeadsetData()でヘッドトラッキングなデータを得ています。ヘッドトラッキングデータはEMADeviceDataという構造体に一気に入っているようです。EMADevice.hを見てみましょう。129行目。
typedef struct _EMADeviceData
{
float AccX ;
float AccY ;
float AccZ ;
float AngX ;
float AngY ;
float AngZ ;
float North ;
float Yaw ;
float Pitch ;
float Roll ;
#ifdef __cplusplus
public:
void ToDirectX ( )
{
// Convert to DirectX coordinate system
float placeHolder ;
placeHolder = AccX ;
AccX = AccY ;
AccY = - AccZ ;
AccZ = - placeHolder ;
placeHolder = AngX ;
AngX = AngY ;
AngY = - AngZ ;
AngZ = - placeHolder ;
Yaw = - Yaw ;
Pitch = - Pitch ;
Roll = - Roll ;
}
#endif
} EMADeviceData ;
有りました。スペックどおりに9軸データが取れそうです。
Yaw、Pitch、Roll - ジャイロ
AccX、AccY、AccZ - 加速度
AngX、AngY、AngZ - 地磁気
ってかんじでしょうか。あれ?1個多いぞ?Northって何よ。
何はともあれ表示させてみましょう。「Sample_YawPitchRoll」をいじってみました。どうぞ(z800ユーザー限定)。
こんなんなります。
各データを表示しただけではさっぱりなので、差分も表示させてみました。それでも分かりづらいですが。グラフィカルに表示すると分かりやすくなりそうですが、私にはそんな事ほえっとできる程のスキルはございません。ご了承下さい。
分かりづらいなりにも、しばらくいじっていると傾向は掴めます。
・ Yaw、Pitch、Roll
お馴染みのYaw、Pitch、Rollです。これだけ絶対座標で出力されています。
Yawだけはプログラム起動時(new EMADevice ( )した時)の正面方向が0になります。Pitch、Rollはプログラム起動時の状態に関わらず水平な位置が0になるようです。
・ AccX、AccY、AccZ
プログラム起動時の向きに対して、上下(AccX)、左右(AccY)、前後(AccZ)の瞬間的な(多分)加速度を出しています。動きが無い時は0近辺で安定します。
X,Y,Z軸の絶対座標は取れないみたい。なるほど、3D LauncherにおけるX,Y,Z方向への移動に関する挙動の謎が解せました。
・ AngX、AngY、AngZ
500を基準にして、Yaw、Pitch、Roll方向の瞬間的な変化量(?)を出しています。動きが無い時は500近辺で安定します。
AngX - Pitch、AngY - Yawに対応しているのがちょっと謎です。EMADeviceData定義内のToDirectX ( )で謎の変換してるのよね。
・ Northっていうのは方位磁石のようです。0で北、+-3.0で南、-1.5(?)で東、+1.5(?)で西。
もしかしてYawデータの代わりにNorthデータを使ったほうが正確なYaw方向のヘッドトラッキングデータが取れるんじゃないか?既にやっているなら別だが。
z800に関する謎のベールが剥がされてかなりすっきりしましたが、またやりたい事が増えちゃいました。ああ困った。
今回、何度もz800をPCと通信させて気が付いたのですが、z800はゴーグル部分を垂直に立てておくと確実に接続できるみたいです。あっという間に繋がります。ゴーグル部分が水平になってると接続に失敗してしまうみたいです。
main.cpp内の38行目、GetHeadsetData()でヘッドトラッキングなデータを得ています。ヘッドトラッキングデータはEMADeviceDataという構造体に一気に入っているようです。EMADevice.hを見てみましょう。129行目。
typedef struct _EMADeviceData
{
float AccX ;
float AccY ;
float AccZ ;
float AngX ;
float AngY ;
float AngZ ;
float North ;
float Yaw ;
float Pitch ;
float Roll ;
#ifdef __cplusplus
public:
void ToDirectX ( )
{
// Convert to DirectX coordinate system
float placeHolder ;
placeHolder = AccX ;
AccX = AccY ;
AccY = - AccZ ;
AccZ = - placeHolder ;
placeHolder = AngX ;
AngX = AngY ;
AngY = - AngZ ;
AngZ = - placeHolder ;
Yaw = - Yaw ;
Pitch = - Pitch ;
Roll = - Roll ;
}
#endif
} EMADeviceData ;
有りました。スペックどおりに9軸データが取れそうです。
Yaw、Pitch、Roll - ジャイロ
AccX、AccY、AccZ - 加速度
AngX、AngY、AngZ - 地磁気
ってかんじでしょうか。あれ?1個多いぞ?Northって何よ。
何はともあれ表示させてみましょう。「Sample_YawPitchRoll」をいじってみました。どうぞ(z800ユーザー限定)。
こんなんなります。
各データを表示しただけではさっぱりなので、差分も表示させてみました。それでも分かりづらいですが。グラフィカルに表示すると分かりやすくなりそうですが、私にはそんな事ほえっとできる程のスキルはございません。ご了承下さい。
分かりづらいなりにも、しばらくいじっていると傾向は掴めます。
・ Yaw、Pitch、Roll
お馴染みのYaw、Pitch、Rollです。これだけ絶対座標で出力されています。
Yawだけはプログラム起動時(new EMADevice ( )した時)の正面方向が0になります。Pitch、Rollはプログラム起動時の状態に関わらず水平な位置が0になるようです。
・ AccX、AccY、AccZ
プログラム起動時の向きに対して、上下(AccX)、左右(AccY)、前後(AccZ)の瞬間的な(多分)加速度を出しています。動きが無い時は0近辺で安定します。
X,Y,Z軸の絶対座標は取れないみたい。なるほど、3D LauncherにおけるX,Y,Z方向への移動に関する挙動の謎が解せました。
・ AngX、AngY、AngZ
500を基準にして、Yaw、Pitch、Roll方向の瞬間的な変化量(?)を出しています。動きが無い時は500近辺で安定します。
AngX - Pitch、AngY - Yawに対応しているのがちょっと謎です。EMADeviceData定義内のToDirectX ( )で謎の変換してるのよね。
・ Northっていうのは方位磁石のようです。0で北、+-3.0で南、-1.5(?)で東、+1.5(?)で西。
もしかしてYawデータの代わりにNorthデータを使ったほうが正確なYaw方向のヘッドトラッキングデータが取れるんじゃないか?既にやっているなら別だが。
z800に関する謎のベールが剥がされてかなりすっきりしましたが、またやりたい事が増えちゃいました。ああ困った。
今回、何度もz800をPCと通信させて気が付いたのですが、z800はゴーグル部分を垂直に立てておくと確実に接続できるみたいです。あっという間に繋がります。ゴーグル部分が水平になってると接続に失敗してしまうみたいです。
PR
この記事にコメントする
最新記事
(04/20)
(11/21)
(01/01)
(06/12)
(06/12)
(05/29)
(05/22)
(05/21)
(12/25)
(12/20)
最新コメント
[08/27 BernardSr]
[08/27 BernardSr]
[08/27 BernardSr]
[12/29 GroverIcow]
[12/26 gayenKinesl]
[12/25 gayenKincfv]
[12/25 geRoesonokp]
[12/24 geRoesonmxu]
[06/30 LindsayDom]
[06/24 Ayukupim]
[06/22 francinerj2]
[06/21 Karsewis]
[06/17 Porsulik]
[06/16 Porsulik]
[06/16 Porsulik]
[06/16 Amimior]
[06/15 WilfordMof]
[06/11 lakeishatb1]
[06/04 Mathewlomi]
[05/31 tiopomWarriorvrp]
[05/31 Lasdumor]
[05/29 Aredorer]
[05/27 IMPUCKICT]
[05/26 Asosans]
[05/24 RaymondZice]
カテゴリー
リンク
アーカイブ
アクセス解析
カウンター
カレンダー
10 | 2024/11 | 12 |
S | M | T | W | T | F | S |
---|---|---|---|---|---|---|
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 |
プロフィール
HN:
mer2
性別:
男性
趣味:
野良猫の餌付け