int main(int argc, char **argv) { sender.setup(HOST, PORT); XnStatus rc = XN_STATUS_OK; rc = g_Context.InitFromXmlFile(SAMPLE_XML_PATH); CHECK_RC(rc, "InitFromXml"); rc = g_Context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); CHECK_RC(rc, "Find depth generator"); rc = g_Context.FindExistingNode(XN_NODE_TYPE_USER, g_UserGenerator); CHECK_RC(rc, "Find user generator"); XnCallbackHandle h; g_UserGenerator.RegisterUserCallbacks(NewUser, LostUser, NULL, h); g_UserGenerator.GetSkeletonCap().SetSkeletonProfile(XN_SKEL_PROFILE_ALL); XnCallbackHandle hCalib; XnCallbackHandle hPose; g_UserGenerator.GetSkeletonCap().RegisterCalibrationCallbacks(&CalibrationStart, &CalibrationEnd, NULL, hCalib); g_UserGenerator.GetPoseDetectionCap().RegisterToPoseCallbacks(&PoseDetected, NULL, NULL, hPose); rc = g_Context.StartGeneratingAll(); CHECK_RC(rc, "StartGenerating"); xn::DepthMetaData depthMD; g_DepthGenerator.GetMetaData(depthMD); fXRes = depthMD.XRes(); fYRes = depthMD.YRes(); fMaxDepth = depthMD.ZRes(); nCutOffMin = 0; nCutOffMax = fMaxDepth; nPointerX = fXRes / 2; nPointerY = fXRes / 2; nPointerDiffX = (WIN_SIZE_X / fXRes / 2) + 1; nPointerDiffY = (WIN_SIZE_Y / fXRes / 2) + 1; if (argc == 2) { nCutOffMax = atol(argv[1]); } srand(XnUInt32(time(NULL))); glutInit(&argc, argv); glutInitDisplayString("stencil depth>16 double rgb samples=0"); glutInitWindowSize(WIN_SIZE_X, WIN_SIZE_Y); glutCreateWindow("Prime Sense Stick Figure Sample"); glutSetCursor(GLUT_CURSOR_NONE); init_opengl(); glut_helpers_initialize(); cb.passive_motion_function = MotionCallback; cb.keyboard_function = key; camera.configure_buttons(0); camera.set_camera_mode(true); camera.set_parent_rotation( & camera.trackball.r); camera.enable(); object.configure_buttons(1); object.translator.t[2] = -1; object.translator.scale *= .1f; object.trackball.r = rotationf(vec3f(2.0,0.01,0.01), to_radians(180)); object.set_parent_rotation( & camera.trackball.r); object.disable(); light.configure_buttons(0); light.translator.t = vec3f(.5, .5, -1); light.set_parent_rotation( & camera.trackball.r); light.disable(); reshaper.zNear = 1; reshaper.zFar = 100; // make sure all interactors get glut events glut_add_interactor(&cb); glut_add_interactor(&camera); glut_add_interactor(&reshaper); glut_add_interactor(&light); glut_add_interactor(&object); camera.translator.t = vec3f(0, 0, 0); camera.trackball.r = rotationf(vec3f(0, 0, 0), to_radians(0)); light.translator.t = vec3f (0, 1.13, -2.41); light.trackball.r = rotationf(vec3f(0.6038, -0.1955, -0.4391), to_radians(102)); glutIdleFunc(idle); glutDisplayFunc(display); // Per frame code is in display glutMainLoop(); return (0); }
int main(int argc, char **argv) { XnBool bChooseDevice = false; const char* csRecordingName = NULL; if (argc > 1) { if (strcmp(argv[1], "-devices") == 0) { bChooseDevice = TRUE; } else { csRecordingName = argv[1]; } } if (csRecordingName != NULL) { // check if running from a different directory. If so, we need to change directory // to the real one, so that path to INI file will be OK (for log initialization, for example) if (0 != changeDirectory(argv[0])) { return(ERR_DEVICE); } } // Xiron Init XnStatus rc = XN_STATUS_OK; EnumerationErrors errors; if (csRecordingName != NULL) { xnLogInitFromXmlFile(SAMPLE_XML_PATH); rc = openDeviceFile(argv[1]); } else if (bChooseDevice) { rc = openDeviceFromXmlWithChoice(SAMPLE_XML_PATH, errors); } else { rc = openDeviceFromXml(SAMPLE_XML_PATH, errors); } if (rc == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); printf("%s\n", strError); closeSample(ERR_DEVICE); return (rc); } else if (rc != XN_STATUS_OK) { printf("Open failed: %s\n", xnGetStatusString(rc)); closeSample(ERR_DEVICE); } audioInit(); captureInit(); statisticsInit(); reshaper.zNear = 1; reshaper.zFar = 100; glut_add_interactor(&reshaper); cb.mouse_function = MouseCallback; cb.motion_function = MotionCallback; cb.passive_motion_function = MotionCallback; cb.keyboard_function = KeyboardCallback; cb.reshape_function = ReshapeCallback; glut_add_interactor(&cb); glutInit(&argc, argv); glutInitDisplayString("stencil double rgb"); glutInitWindowSize(WIN_SIZE_X, WIN_SIZE_Y); glutCreateWindow("OpenNI Viewer"); glutFullScreen(); glutSetCursor(GLUT_CURSOR_NONE); init_opengl(); glut_helpers_initialize(); camera.configure_buttons(0); camera.set_camera_mode(true); camera.set_parent_rotation( & camera.trackball.r); camera.enable(); object.configure_buttons(1); object.translator.t[2] = -1; object.translator.scale *= .1f; object.trackball.r = rotationf(vec3f(2.0,0.01,0.01), to_radians(180)); object.set_parent_rotation( & camera.trackball.r); object.disable(); light.configure_buttons(0); light.translator.t = vec3f(.5, .5, -1); light.set_parent_rotation( & camera.trackball.r); light.disable(); // make sure all interactors get glut events glut_add_interactor(&camera); glut_add_interactor(&light); glut_add_interactor(&object); camera.translator.t = vec3f(0, 0, 0); camera.trackball.r = rotationf(vec3f(0, 0, 0), to_radians(0)); light.translator.t = vec3f (0, 1.13, -2.41); light.trackball.r = rotationf(vec3f(0.6038, -0.1955, -0.4391), to_radians(102)); glutIdleFunc(IdleCallback); glutDisplayFunc(drawFrame); drawInit(); createKeyboardMap(); createMenu(); atexit(onExit); // Per frame code is in drawFrame() glutMainLoop(); audioShutdown(); closeSample(ERR_OK); return (ERR_OK); }