void vrlib_wand_posvec (float wand_pos[], float wand_vec[], int virt_world) { vrPoint pos; vrVector vec; if (virt_world) { vrPointGetVWFromUser6sensor (&pos, 0, WAND_SENSOR); wand_pos[VR_X] = pos.v[VR_X]; wand_pos[VR_Y] = pos.v[VR_Y]; wand_pos[VR_Z] = pos.v[VR_Z]; vrVectorGetVWFromUser6sensorDir (&vec, 0, WAND_SENSOR, VRDIR_FORE); wand_vec[VR_X] = vec.v[VR_X]; wand_vec[VR_Y] = vec.v[VR_Y]; wand_vec[VR_Z] = vec.v[VR_Z]; } else { vrPointGetRWFrom6sensor (&pos, WAND_SENSOR); wand_pos[VR_X] = pos.v[VR_X]; wand_pos[VR_Y] = pos.v[VR_Y]; wand_pos[VR_Z] = pos.v[VR_Z]; vrVectorGetRWFrom6sensorDir (&vec, WAND_SENSOR, VRDIR_FORE); wand_vec[VR_X] = vec.v[VR_X]; wand_vec[VR_Y] = vec.v[VR_Y]; wand_vec[VR_Z] = vec.v[VR_Z]; } return; }
void FreeVRTracker::update() { // FreeVR Wand is sensor 1 #define WAND_SENSOR 1 vrPoint wand_location; vrPointGetRWFrom6sensor(&wand_location, WAND_SENSOR); pos[0] = wand_location.v[0]; pos[1] = wand_location.v[1]; pos[2] = wand_location.v[2]; /* get Euler angles for wand orientation */ vrEuler wand_orientation; vrEulerGetRWFrom6sensor(&wand_orientation, WAND_SENSOR); orient->identity(); orient->rot(wand_orientation.r[0],'x'); orient->rot(wand_orientation.r[1],'y'); orient->rot(wand_orientation.r[2],'z'); orient->rot(90,'y'); // to face forward (-z) }
/* 24Aug07 Phil McDonald TODO: include vw functions in CaveLib */ void vrlib_head_pos (float head_pos[], int virt_world) { vrPoint pos; if (virt_world) { vrPointGetVWFromUser6sensor (&pos, 0, HEAD_SENSOR); head_pos[VR_X] = pos.v[VR_X]; head_pos[VR_Y] = pos.v[VR_Y]; head_pos[VR_Z] = pos.v[VR_Z]; } else { vrPointGetRWFrom6sensor (&pos, HEAD_SENSOR); head_pos[VR_X] = pos.v[VR_X]; head_pos[VR_Y] = pos.v[VR_Y]; head_pos[VR_Z] = pos.v[VR_Z]; } return; }