# HG changeset patch # User John Tsiombikas # Date 1379209632 -10800 # Node ID bb81990dc7c853b52543a48b2d2f5565ff28833c # Parent b069a5c273885b6a5e9781dfa0104c50196b3c87 getting sensor input diff -r b069a5c27388 -r bb81990dc7c8 src/main.cc --- a/src/main.cc Sun Sep 15 04:10:05 2013 +0300 +++ b/src/main.cc Sun Sep 15 04:47:12 2013 +0300 @@ -75,14 +75,20 @@ static void disp() { + unsigned int msec = glutGet(GLUT_ELAPSED_TIME); + // test rift sensor float quat[4], euler[3]; vr_get_rotation(quat); vr_get_rotation_euler(euler); - printf("q(%.3f + %.3fi + %.3fj %.3fk)", quat[3], quat[0], quat[1], quat[2]); - printf(" - euler(%.3f %.3f %.3f)\n", euler[0], euler[1], euler[2]); + static unsigned int prev_print; + if(msec - prev_print > 1000) { + printf("q(%.3f + %.3fi + %.3fj %.3fk)", quat[3], quat[0], quat[1], quat[2]); + printf(" - euler(%.3f %.3f %.3f)\n", euler[0], euler[1], euler[2]); + prev_print = msec; + } glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); diff -r b069a5c27388 -r bb81990dc7c8 src/vr.cc --- a/src/vr.cc Sun Sep 15 04:10:05 2013 +0300 +++ b/src/vr.cc Sun Sep 15 04:47:12 2013 +0300 @@ -22,54 +22,59 @@ static bool init_ovr() { // initialize Oculus SDK - System::Init(); + System::Init(Log::ConfigureDefaultLog(LogMask_All)); if(!(vr_ctx.ovr_devman = DeviceManager::Create())) { fprintf(stderr, "failed to create OVR device manager\n"); return false; } // create the display device + HMDInfo info; if(!(vr_ctx.ovr_hmd_dev = vr_ctx.ovr_devman->EnumerateDevices().CreateDevice())) { fprintf(stderr, "no oculus rift devices found\n"); - return false; - } + } else { + if(vr_ctx.ovr_hmd_dev->GetDeviceInfo(&info)) { + printf("oculus device info:\n"); + printf(" name: %s\n", info.DisplayDeviceName); + printf(" ipd: %f\n", info.InterpupillaryDistance); + printf(" distortion: %f %f %f %f\n", info.DistortionK[0], + info.DistortionK[1], info.DistortionK[2], info.DistortionK[3]); + } - HMDInfo info; - if(vr_ctx.ovr_hmd_dev->GetDeviceInfo(&info)) { - printf("oculus device info:\n"); - printf(" name: %s\n", info.DisplayDeviceName); - printf(" ipd: %f\n", info.InterpupillaryDistance); - printf(" distortion: %f %f %f %f\n", info.DistortionK[0], - info.DistortionK[1], info.DistortionK[2], info.DistortionK[3]); + // calculate and store viewing parameters + float vhalfsz = info.VScreenSize * 0.5; + vr_ctx.info.fov = 2.0 * atan(vhalfsz / info.EyeToScreenDistance); + + vr_ctx.info.width = info.HResolution; + vr_ctx.info.height = info.VResolution; + vr_ctx.info.aspect = (float)vr_ctx.info.width / (float)vr_ctx.info.height; + + vr_ctx.info.ipd = info.InterpupillaryDistance; + for(int i=0; i<4; i++) { + vr_ctx.info.distort[i] = info.DistortionK[i]; + } } // get the sensor device - if(!(vr_ctx.ovr_sensor_dev = vr_ctx.ovr_hmd_dev->GetSensor())) { - fprintf(stderr, "failed to get oculus sensor device\n"); - return false; + if(vr_ctx.ovr_hmd_dev) { + if(!(vr_ctx.ovr_sensor_dev = vr_ctx.ovr_hmd_dev->GetSensor())) { + fprintf(stderr, "failed to get oculus sensor device\n"); + } + } else { + if(!(vr_ctx.ovr_sensor_dev = vr_ctx.ovr_devman->EnumerateDevices().CreateDevice())) { + fprintf(stderr, "failed to get oculus sensor device\n"); + } } - SensorInfo sinfo; - if(vr_ctx.ovr_sensor_dev->GetDeviceInfo(&sinfo)) { - printf("oculus sensor device info:\n"); - printf(" name: %s\n", sinfo.ProductName); + if(vr_ctx.ovr_sensor_dev) { + SensorInfo sinfo; + if(vr_ctx.ovr_sensor_dev->GetDeviceInfo(&sinfo)) { + printf("oculus sensor device info:\n"); + printf(" name: %s\n", sinfo.ProductName); + } + + vr_ctx.ovr_sfusion.AttachToSensor(vr_ctx.ovr_sensor_dev); } - - vr_ctx.ovr_sfusion.AttachToSensor(vr_ctx.ovr_sensor_dev); - - // calculate and store viewing parameters - float vhalfsz = info.VScreenSize * 0.5; - vr_ctx.info.fov = 2.0 * atan(vhalfsz / info.EyeToScreenDistance); - - vr_ctx.info.width = info.HResolution; - vr_ctx.info.height = info.VResolution; - vr_ctx.info.aspect = (float)vr_ctx.info.width / (float)vr_ctx.info.height; - - vr_ctx.info.ipd = info.InterpupillaryDistance; - for(int i=0; i<4; i++) { - vr_ctx.info.distort[i] = info.DistortionK[i]; - } - return true; }