void AllocateAllGlobals() { // Configure XnStatus rc = g_Context.InitFromXmlFile(SAMPLE_XML_FILE, g_ScriptNode); if (rc != XN_STATUS_OK) { printf("Error initializing: %s\n", xnGetStatusString(rc)); CleanupExit(); } if(NULL == g_pSessionManager) { g_pSessionManager = new XnVSessionManager(); } if(NULL == g_pSessionManager) { printf("Couldn't create PointTracker!! (out of memory)\n"); CleanupExit(); } if(NULL == g_pTrackPad) { g_pTrackPad = new XnVSelectableSlider2D(g_TP_XDim, g_TP_YDim); } if(NULL == g_pTrackPad) { printf("Couldn't create TrackPad!! (out of memory)\n"); CleanupExit(); } g_Context.StartGeneratingAll(); }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); case 'b': // Draw background? g_bDrawBackground = !g_bDrawBackground; break; case 'x': // Draw pixels at all? g_bDrawPixels = !g_bDrawPixels; break; case 's': // Draw Skeleton? g_bDrawSkeleton = !g_bDrawSkeleton; break; case 'i': // Print label? g_bPrintID = !g_bPrintID; break; case 'l': // Print ID & state as label, or only ID? g_bPrintState = !g_bPrintState; break; case'p': g_bPause = !g_bPause; break; } }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: // Exit CleanupExit(); case 'd': // Toggle drawing of the depth map g_bDrawDepthMap = !g_bDrawDepthMap; g_pDrawer->SetDepthMap(g_bDrawDepthMap); break; case 'f': g_bPrintFrameID = !g_bPrintFrameID; g_pDrawer->SetFrameID(g_bPrintFrameID); break; case 's': // Toggle smoothing if (g_fSmoothing == 0) g_fSmoothing = 0.1; else g_fSmoothing = 0; g_HandsGenerator.SetSmoothing(g_fSmoothing); break; case 'e': // end current session g_pSessionManager->EndSession(); break; } }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); case'p': g_bPause = !g_bPause; break; case 'l': g_bPause = false; g_bStep = true; break; case 'c': g_bDrawCoM = !g_bDrawCoM; break; case 'f': g_bPrintFrameID = !g_bPrintFrameID; break; case 'k': if (g_pRecorder == NULL) StartCapture(); else StopCapture(); printf("Record turned %s\n", g_pRecorder ? "on" : "off"); break; } }
int main(int argc, char **argv) { XnStatus rc = XN_STATUS_OK; xn::EnumerationErrors errors; rc = g_Context.InitFromXmlFile(SAMPLE_XML_PATH); CHECK_ERRORS(rc, errors, "InitFromXmlFile"); 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_SCENE, g_SceneAnalyzer); CHECK_RC(rc, "Find scene analyzer"); rc = g_Context.StartGeneratingAll(); CHECK_RC(rc, "StartGenerating"); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #elif defined(USE_GLES) if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); // glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); } }
void glutIdle (void) { if (g_bQuit) { CleanupExit(); } // Display the frame glutPostRedisplay(); }
void glutIdle (void) { ros::spinOnce(); // This is needed to get our subscription. if (g_bQuit) { CleanupExit(); } // Display the frame glutPostRedisplay(); }
osaOpenNI::~osaOpenNI() { if (this->Data){ CleanupExit(); delete this->Data; this->Data = 0; } if (ProjectivePointsBuffer) delete ProjectivePointsBuffer; if (WorldPointsBuffer) delete WorldPointsBuffer; }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); break; case 'v': //Enable/Disable Value Change presentation on screen g_isPrintValueChange = !g_isPrintValueChange; break; case 'h': //Enable/Disable Item Hover presentation on screen g_isPrintItemHover = !g_isPrintItemHover; break; case 't': //Toggle between Value Change and Item Hover presentation on screen if(FALSE == g_isPrintItemHover) { g_isPrintValueChange = FALSE; g_isPrintItemHover = TRUE; } else { g_isPrintValueChange = TRUE; g_isPrintItemHover = FALSE; } break; case 'r': // Remove a row from the TrackPad if(XN_MIN_X_DIM >= g_TP_YDim) //Check if we have reached minimum size return; --g_TP_YDim; InitiateTrackPad(); break; case 'R': // Add a row to the TrackPad if(XN_MAX_X_DIM <= g_TP_YDim) //Check if we have reached maximum size return; ++g_TP_YDim; InitiateTrackPad(); break; case 'c': // Remove a column from the TrackPad if(XN_MIN_Y_DIM >= g_TP_XDim) //Check if we have reached minimum size return; --g_TP_XDim; InitiateTrackPad(); break; case 'C': // Add a column to the TrackPad if(XN_MAX_Y_DIM <= g_TP_XDim) //Check if we have reached maximum size return; ++g_TP_XDim; InitiateTrackPad(); break; } }
void Processor::glutDisplay (void) { XnUInt32 nFrame, nFrameTot; instance->gen->player.GetNumFrames(instance->strNodeName,nFrameTot); instance->gen->player.TellFrame(instance->strNodeName,nFrame); //finish at end of movie if(nFrame == nFrameTot -1){ CleanupExit(); return; } glClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Setup the OpenGL viewpoint glMatrixMode(GL_PROJECTION); glPushMatrix(); glLoadIdentity(); xn::SceneMetaData sceneMD; xn::DepthMetaData depthMD; instance->gen->depth.GetMetaData(depthMD); glOrtho(0, depthMD.XRes(), depthMD.YRes(), 0, -1.0, 1.0); glDisable(GL_TEXTURE_2D); bool display = false; if (!g_bPause) { if (g_bStep) { g_bStep = false; g_bPause = true; } display = true; // Read next available data instance->context.WaitAndUpdateAll(); } // Process the data instance->gen->depth.GetMetaData(depthMD); instance->gen->user.GetUserPixels(0, sceneMD); DrawDepthMap(depthMD, sceneMD, 0); if(display) { if (instance->hasUserInSight) instance->sequence->update(); } glutSwapBuffers(); }
void glutKeyboard (unsigned char key, int /*x*/, int /*y*/) { switch (key) { case 27: CleanupExit(); case 'b': // Draw background? g_bDrawBackground = !g_bDrawBackground; break; case 'x': // Draw pixels at all? g_bDrawPixels = !g_bDrawPixels; break; case 's': // Draw Skeleton? g_bDrawSkeleton = !g_bDrawSkeleton; break; case 'i': // Print label? g_bPrintID = !g_bPrintID; break; case 'l': // Print ID & state as label, or only ID? g_bPrintState = !g_bPrintState; break; case 'f': // Print FrameID g_bPrintFrameID = !g_bPrintFrameID; break; case 'j': // Mark joints g_bMarkJoints = !g_bMarkJoints; break; case'p': g_bPause = !g_bPause; break; case 'S': SaveCalibration(); break; case 'L': LoadCalibration(); break; } }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); case'p': g_bPause = !g_bPause; break; case 'k': if (g_pRecorder == NULL) StartCapture(); else StopCapture(); printf("Record turned %s\n", g_pRecorder ? "on" : "off"); break; } }
void Processor::glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); break; case 'd': if (g_bPause) playNextFrame(); break; case 'a': if (g_bPause) playPrevFrame(); break; case 'p': g_bPause = !g_bPause; break; } }
void glutKeyboard (unsigned char key, int /*x*/, int /*y*/) { switch (key) { case 27: CleanupExit(); case 'b': // Draw background? g_bDrawBackground = !g_bDrawBackground; break; case 'x': // Draw pixels at all? g_bDrawPixels = !g_bDrawPixels; break; case 'l': // Print ID & state as label, or only ID? g_bPrintState = !g_bPrintState; break; case 'f': // Print FrameID g_bPrintFrameID = !g_bPrintFrameID; break; case'p': g_bPause = !g_bPause; break; case 'P': print_COM(COM_tracker); break; case 'B': print_Box_Pos(Bounding_Box); break; case '1': Show_Image = FALSE; changeRegistration(0); break; case '2': Show_Image = TRUE; changeRegistration(1); break; } }
int main(int argc, char **argv) { XnStatus nRetVal = XN_STATUS_OK; if (argc > 1) { nRetVal = g_Context.Init(); CHECK_RC(nRetVal, "Init"); nRetVal = g_Context.OpenFileRecording(argv[1], g_Player); if (nRetVal != XN_STATUS_OK) { printf("Can't open recording %s: %s\n", argv[1], xnGetStatusString(nRetVal)); return 1; } } else { xn::EnumerationErrors errors; nRetVal = g_Context.InitFromXmlFile(SAMPLE_XML_PATH, g_scriptNode, &errors); if (nRetVal == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); printf("%s\n", strError); return (nRetVal); } else if (nRetVal != XN_STATUS_OK) { printf("Open failed: %s\n", xnGetStatusString(nRetVal)); return (nRetVal); } } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); CHECK_RC(nRetVal, "Find depth generator"); nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_USER, g_UserGenerator); if (nRetVal != XN_STATUS_OK) { nRetVal = g_UserGenerator.Create(g_Context); CHECK_RC(nRetVal, "Find user generator"); } XnCallbackHandle hUserCallbacks, hCalibrationStart, hCalibrationComplete, hPoseDetected, hCalibrationInProgress, hPoseInProgress; if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_SKELETON)) { printf("Supplied user generator doesn't support skeleton\n"); return 1; } nRetVal = g_UserGenerator.RegisterUserCallbacks(User_NewUser, User_LostUser, NULL, hUserCallbacks); CHECK_RC(nRetVal, "Register to user callbacks"); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationStart(UserCalibration_CalibrationStart, NULL, hCalibrationStart); CHECK_RC(nRetVal, "Register to calibration start"); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationComplete(UserCalibration_CalibrationComplete, NULL, hCalibrationComplete); CHECK_RC(nRetVal, "Register to calibration complete"); if (g_UserGenerator.GetSkeletonCap().NeedPoseForCalibration()) { g_bNeedPose = TRUE; if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_POSE_DETECTION)) { printf("Pose required, but not supported\n"); return 1; } nRetVal = g_UserGenerator.GetPoseDetectionCap().RegisterToPoseDetected(UserPose_PoseDetected, NULL, hPoseDetected); CHECK_RC(nRetVal, "Register to Pose Detected"); g_UserGenerator.GetSkeletonCap().GetCalibrationPose(g_strPose); } g_UserGenerator.GetSkeletonCap().SetSkeletonProfile(XN_SKEL_PROFILE_ALL); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationInProgress(MyCalibrationInProgress, NULL, hCalibrationInProgress); CHECK_RC(nRetVal, "Register to calibration in progress"); nRetVal = g_UserGenerator.GetPoseDetectionCap().RegisterToPoseInProgress(MyPoseInProgress, NULL, hPoseInProgress); CHECK_RC(nRetVal, "Register to pose in progress"); nRetVal = g_Context.StartGeneratingAll(); CHECK_RC(nRetVal, "StartGenerating"); #ifndef USE_GLES glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initializing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while (!g_bQuit) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
void glutIdle (void) { if (g_bQuit) { CleanupExit(); } glutPostRedisplay(); }
void cleanup_exit(int code) { CleanupExit(code); }
int Processor::start(int argc, char **argv) { //get the path of exe dir path = argv[0]; int pos = path.find_last_of("/")+1; if (pos > 0 ){ path = path.substr(0, pos); }else{ path = ""; } fileName = argv[1]; //ONI file bool isDisplay = false; //display or not the depth scene if(argc>2) isDisplay=true; //get the name of file without path pos = fileName.find_last_of("/") +1; if (pos < 0 ) pos = 0; fileName = fileName.substr(pos); dateStart = fileName.substr(0,fileName.find(".")); //Get the config std::string tmp = path + "config.xml"; const char *filename = tmp.c_str(); TiXmlDocument config(filename); if (!config.LoadFile()) { printf("Error while loading config!\n"); return 1; } TiXmlElement *root, *video, *faceDetection; root = config.FirstChildElement( "config" ); int fps = 24; bool active = false; const char* cascadeFile; if (root) { video = root->FirstChildElement("video"); fps = atoi(video->Attribute("fps2d")); faceDetection = root->FirstChildElement("faceDetection"); active = faceDetection->Attribute("active"); cascadeFile = faceDetection->Attribute("cascadeFile"); tmp = path + cascadeFile; cascadeFile = tmp.c_str(); } MovingObject::init(active, cascadeFile); //create directory for media instance->dir = "movieData/"+fileName.substr(0,fileName.find_last_of(".")); mkdir("movieData", 0777); mkdir((dir).c_str(), 0777); mkdir((dir+"/2D").c_str(), 0777); mkdir((dir+"/3D").c_str(), 0777); XnStatus rc = XN_STATUS_OK; xn::DepthGenerator g_DepthGenerator; xn::UserGenerator g_UserGenerator; xn::ImageGenerator g_image; //Init context and all Node/Generator rc = context.Init(); CHECK_RC(rc, "Init"); context.SetGlobalMirror(true); //mirror image rc = context.OpenFileRecording(argv[1]); CHECK_RC(rc, "InitFromONI"); rc = context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); CHECK_RC(rc, "Find depth generator"); rc = context.FindExistingNode(XN_NODE_TYPE_USER, g_UserGenerator); if(rc!=XN_STATUS_OK){ rc = g_UserGenerator.Create(context); CHECK_RC(rc, "UserGenerator"); } rc = context.FindExistingNode(XN_NODE_TYPE_IMAGE, g_image); CHECK_RC(rc, "Find image generator"); initGenerator(g_UserGenerator, g_DepthGenerator); if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_SKELETON) || !g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_POSE_DETECTION)) { printf("User generator doesn't support either skeleton or pose detection.\n"); return XN_STATUS_ERROR; } XnBool isSupported = g_DepthGenerator.IsCapabilitySupported("AlternativeViewPoint"); if(TRUE == isSupported) { XnStatus res = g_DepthGenerator.GetAlternativeViewPointCap().SetViewPoint(g_image); if(XN_STATUS_OK != res) { printf("Getting and setting AlternativeViewPoint failed: %s\n", xnGetStatusString(res)); } } else { printf("AlternativeViewPoint not supported\n"); } g_UserGenerator.GetSkeletonCap().SetSkeletonProfile(XN_SKEL_PROFILE_ALL); //Init Player xn::Player player; xn::NodeInfoList list; rc = context.EnumerateExistingNodes(list); if (rc == XN_STATUS_OK) { for (xn::NodeInfoList::Iterator it = list.Begin(); it != list.End(); ++it) { switch ((*it).GetDescription().Type) { case XN_NODE_TYPE_PLAYER: (*it).GetInstance(player); } } }else{ printf("Player error: %s\n", xnGetStatusString(rc)); } //Create a Generators contains all generators gen = new Generators(g_UserGenerator, g_DepthGenerator, g_image, player); strNodeName = g_image.GetName(); createXML(); //Create a XMLDocument //Start the Nodes/Generators rc = context.StartGeneratingAll(); CHECK_RC(rc, "StartGenerating"); //Set callbacks functions : NewUser & LostUser XnCallbackHandle hUserCBs; g_UserGenerator.RegisterUserCallbacks(Processor::NewUser, Processor::LostUser, NULL, hUserCBs); XnUInt32 nFrame, nFrameTot; instance->gen->player.GetNumFrames(instance->strNodeName, nFrameTot); //Loop each frames with windows output or not if (!isDisplay){ while(nFrame != nFrameTot -2){ //update current frame id instance->gen->player.TellFrame(instance->strNodeName,nFrame); // Read next available data instance->context.WaitAndUpdateAll(); //Update sequence if there is someone in the scene if (instance->hasUserInSight) instance->sequence->update(); } CleanupExit(); }else{ //Start the GL to display Depth image glInit(&argc, argv); glutMainLoop(); } }
int main(int argc, char ** argv) { XnStatus rc = XN_STATUS_OK; xn::EnumerationErrors errors; // Configure rc = g_Context.InitFromXmlFile(SAMPLE_XML_FILE, g_ScriptNode, &errors); if (rc == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); printf("%s\n", strError); return (rc); } if (rc != XN_STATUS_OK) { printf("Couldn't initialize from file: %s\n", xnGetStatusString(rc)); return 1; } // Create and initialize point tracker g_pSessionManager = new XnVSessionManager(); rc = g_pSessionManager->Initialize(&g_Context, "Wave", "RaiseHand"); if (rc != XN_STATUS_OK) { printf("Couldn't initialize the Session Manager: %s\n", xnGetStatusString(rc)); CleanupExit(); } g_pSessionManager->RegisterSession(NULL, &SessionStart, &SessionEnd); // Start catching signals for quit indications CatchSignals(&g_bQuit); // init and register circle control g_pCircle = new XnVCircleDetector; g_pCircle->RegisterCircle(NULL, &CircleCB); g_pCircle->RegisterNoCircle(NULL, &NoCircleCB); g_pCircle->RegisterPrimaryPointCreate(NULL, &Circle_PrimaryCreate); g_pCircle->RegisterPrimaryPointDestroy(NULL, &Circle_PrimaryDestroy); g_pSessionManager->AddListener(g_pCircle); SetCircle(true, 0); SetCircleColor(1,1,1); SetCircleLineColor(0.7,0.7,0.7); g_Context.StartGeneratingAll(); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); //glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
int main(int argc, char ** argv) { XnStatus rc = XN_STATUS_OK; xn::EnumerationErrors errors; // Initialize OpenNI rc = g_Context.InitFromXmlFile(SAMPLE_XML_PATH, g_ScriptNode, &errors); CHECK_ERRORS(rc, errors, "InitFromXmlFile"); CHECK_RC(rc, "InitFromXmlFile"); rc = g_Context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); CHECK_RC(rc, "Find depth generator"); rc = g_Context.FindExistingNode(XN_NODE_TYPE_HANDS, g_HandsGenerator); CHECK_RC(rc, "Find hands generator"); rc = g_Context.FindExistingNode(XN_NODE_TYPE_GESTURE, g_GestureGenerator); CHECK_RC(rc, "Find gesture generator"); XnCallbackHandle h; if (g_HandsGenerator.IsCapabilitySupported(XN_CAPABILITY_HAND_TOUCHING_FOV_EDGE)) { g_HandsGenerator.GetHandTouchingFOVEdgeCap().RegisterToHandTouchingFOVEdge(TouchingCallback, NULL, h); } XnCallbackHandle hGestureIntermediateStageCompleted, hGestureProgress, hGestureReadyForNextIntermediateStage; g_GestureGenerator.RegisterToGestureIntermediateStageCompleted(GestureIntermediateStageCompletedHandler, NULL, hGestureIntermediateStageCompleted); g_GestureGenerator.RegisterToGestureReadyForNextIntermediateStage(GestureReadyForNextIntermediateStageHandler, NULL, hGestureReadyForNextIntermediateStage); g_GestureGenerator.RegisterGestureCallbacks(NULL, GestureProgressHandler, NULL, hGestureProgress); // Create NITE objects g_pSessionManager = new XnVSessionManager; rc = g_pSessionManager->Initialize(&g_Context, "Click,Wave", "RaiseHand"); CHECK_RC(rc, "SessionManager::Initialize"); g_pSessionManager->RegisterSession(NULL, SessionStarting, SessionEnding, FocusProgress); g_pDrawer = new XnVPointDrawer(20, g_DepthGenerator); g_pFlowRouter = new XnVFlowRouter; g_pFlowRouter->SetActive(g_pDrawer); g_pSessionManager->AddListener(g_pFlowRouter); g_pDrawer->RegisterNoPoints(NULL, NoHands); g_pDrawer->SetDepthMap(g_bDrawDepthMap); // Initialization done. Start generating rc = g_Context.StartGeneratingAll(); CHECK_RC(rc, "StartGenerating"); // Mainloop #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #elif defined(USE_GLES) if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initializing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
int main(int argc, char ** argv) { AllocateAllGlobals(); init_eventsocket("EVENT_SERVER_IP",8000); // Initialize the point tracker XnStatus rc = g_pSessionManager->Initialize(&g_Context, "Wave", "RaiseHand"); if (rc != XN_STATUS_OK) { printf("Couldn't initialize the Session Manager: %s\n", xnGetStatusString(rc)); CleanupExit(); } g_pSessionManager->RegisterSession(NULL, &SessionStart, &SessionEnd); // init & register wave control XnVWaveDetector wc; wc.RegisterWave(NULL, OnWaveCB); g_pSessionManager->AddListener(&wc); // Add TrackPad to the point tracker g_TrackPadHandle = g_pSessionManager->AddListener(g_pTrackPad); // Register for the Hover event of the TrackPad g_nItemHoverHandle = g_pTrackPad->RegisterItemHover(NULL, &TrackPad_ItemHover); // Register for the Value Change event of the TrackPad g_nValueChangeHandle = g_pTrackPad->RegisterValueChange(NULL, &TrackPad_ValueChange); // Register for the Select event of the TrackPad g_nItemSelectHandle = g_pTrackPad->RegisterItemSelect(NULL, &TrackPad_ItemSelect); // Register for Input Start event of the TrackPad g_nPrimaryCreateHandle = g_pTrackPad->RegisterPrimaryPointCreate(NULL, &TrackPad_PrimaryCreate); // Register for Input Stop event of the TrackPad g_nPrimaryDestroyHandle = g_pTrackPad->RegisterPrimaryPointDestroy(NULL, &TrackPad_PrimaryDestroy); // Start catching signals for quit indications CatchSignals(&g_bQuit); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); // glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
int main(int argc, char **argv) { setup(argc, argv, &g_UserGenerator); XnStatus nRetVal = XN_STATUS_OK; std::string configFilename = ros::package::getPath("user_tracker") + "/config/SamplesConfig.xml"; xn::EnumerationErrors errors; nRetVal = g_Context.InitFromXmlFile(configFilename.c_str(), g_scriptNode, &errors); if (nRetVal == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); ROS_INFO("%s\n", strError); return (nRetVal); } else if (nRetVal != XN_STATUS_OK) { ROS_INFO("Open failed: %s\n", xnGetStatusString(nRetVal)); return (nRetVal); } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); if (nRetVal != XN_STATUS_OK) { ROS_INFO("No depth generator found. Using a default one..."); xn::MockDepthGenerator mockDepth; nRetVal = mockDepth.Create(g_Context); CHECK_RC(nRetVal, "Create mock depth"); // set some defaults XnMapOutputMode defaultMode; defaultMode.nXRes = 320; defaultMode.nYRes = 240; defaultMode.nFPS = 30; nRetVal = mockDepth.SetMapOutputMode(defaultMode); CHECK_RC(nRetVal, "set default mode"); // set FOV XnFieldOfView fov; fov.fHFOV = 1.0225999419141749; fov.fVFOV = 0.79661567681716894; nRetVal = mockDepth.SetGeneralProperty(XN_PROP_FIELD_OF_VIEW, sizeof(fov), &fov); CHECK_RC(nRetVal, "set FOV"); XnUInt32 nDataSize = defaultMode.nXRes * defaultMode.nYRes * sizeof(XnDepthPixel); XnDepthPixel* pData = (XnDepthPixel*)xnOSCallocAligned(nDataSize, 1, XN_DEFAULT_MEM_ALIGN); nRetVal = mockDepth.SetData(1, 0, nDataSize, pData); CHECK_RC(nRetVal, "set empty depth map"); g_DepthGenerator = mockDepth; } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_USER, g_UserGenerator); if (nRetVal != XN_STATUS_OK) { nRetVal = g_UserGenerator.Create(g_Context); CHECK_RC(nRetVal, "Find user generator"); } XnCallbackHandle hUserCallbacks, hCalibrationStart, hCalibrationComplete, hPoseDetected, hCalibrationInProgress, hPoseInProgress; if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_SKELETON)) { ROS_INFO("Supplied user generator doesn't support skeleton\n"); return 1; } nRetVal = g_UserGenerator.RegisterUserCallbacks(User_NewUser, User_LostUser, NULL, hUserCallbacks); CHECK_RC(nRetVal, "Register to user callbacks"); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationStart(UserCalibration_CalibrationStart, NULL, hCalibrationStart); CHECK_RC(nRetVal, "Register to calibration start"); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationComplete(UserCalibration_CalibrationComplete, NULL, hCalibrationComplete); CHECK_RC(nRetVal, "Register to calibration complete"); if (g_UserGenerator.GetSkeletonCap().NeedPoseForCalibration()) { g_bNeedPose = TRUE; if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_POSE_DETECTION)) { ROS_INFO("Pose required, but not supported\n"); return 1; } nRetVal = g_UserGenerator.GetPoseDetectionCap().RegisterToPoseDetected(UserPose_PoseDetected, NULL, hPoseDetected); CHECK_RC(nRetVal, "Register to Pose Detected"); g_UserGenerator.GetSkeletonCap().GetCalibrationPose(g_strPose); } g_UserGenerator.GetSkeletonCap().SetSkeletonProfile(XN_SKEL_PROFILE_ALL); nRetVal = g_UserGenerator.GetSkeletonCap().RegisterToCalibrationInProgress(MyCalibrationInProgress, NULL, hCalibrationInProgress); CHECK_RC(nRetVal, "Register to calibration in progress"); nRetVal = g_UserGenerator.GetPoseDetectionCap().RegisterToPoseInProgress(MyPoseInProgress, NULL, hPoseInProgress); CHECK_RC(nRetVal, "Register to pose in progress"); nRetVal = g_Context.StartGeneratingAll(); CHECK_RC(nRetVal, "StartGenerating"); #ifndef USE_GLES glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { ROS_INFO("Error initializing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while (!g_bQuit) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
int main(int argc, char **argv) { XnStatus rc = XN_STATUS_OK; xn::EnumerationErrors errors; rc = g_Context.InitFromXmlFile(SAMPLE_XML_PATH); CHECK_ERRORS(rc, errors, "InitFromXmlFile"); 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"); if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_SKELETON) || !g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_POSE_DETECTION)) { printf("User generator doesn't support either skeleton or pose detection.\n"); return XN_STATUS_ERROR; } g_UserGenerator.GetSkeletonCap().SetSkeletonProfile(XN_SKEL_PROFILE_ALL); rc = g_Context.StartGeneratingAll(); CHECK_RC(rc, "StartGenerating"); XnCallbackHandle hUserCBs, hCalibrationCBs, hPoseCBs; g_UserGenerator.RegisterUserCallbacks(NewUser, LostUser, NULL, hUserCBs); g_UserGenerator.GetSkeletonCap().RegisterCalibrationCallbacks(CalibrationStarted, CalibrationEnded, NULL, hCalibrationCBs); g_UserGenerator.GetPoseDetectionCap().RegisterToPoseCallbacks(PoseDetected, NULL, NULL, hPoseCBs); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); // glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
void glutKeyboard (unsigned char key, int x, int y) { switch (key) { case 27: CleanupExit(); case 's': if(gameflag==0){ gameflag=2; t1 = clock(); } break; case 'r': gameflag=0; endcountflag=0; for(int i =0;i<9;i++) touchcount[i]=0; { int nbActors = gScene->getNbActors(); NxActor** actors = gScene->getActors(); for(int i=28;i<nbActors;i++){ gScene->releaseActor(*actors[i]);// オブジェクトリセット } panelcreate(); } break; case 't': t1 = clock(); break; case 'l': // Print ID & state as label, or only ID? g_bPrintState = !g_bPrintState; break; case'p': leg->setGlobalPosition(NxVec3(0.0,100.0,1000.0)); // 再配置位置 leg->setLinearVelocity(NxVec3(0, 0,0)); leg->setAngularVelocity(NxVec3(0,0,0)); endcountflag++; if(endcountflag>9) { gameflag = 1; } break; case'q': leg->setLinearVelocity(NxVec3(0, 0,10000)); break; case 'a': // ボール発射 if(gameflag==2){ if(btime>=balldire){ ballactor=CreateSphere(NxVec3(gEye.x,gEye.y,gEye.z+50), 50, 1); ballactor->setLinearVelocity(gDir * ballspeed*10.0); balltimer1 = clock(); } } break; case GLUT_KEY_UP: gEye += gDir*30.0f; break; case GLUT_KEY_DOWN: gEye -= gDir*30.0f; break; case GLUT_KEY_LEFT: gEye -= gViewY*30.0f; break; case GLUT_KEY_RIGHT: gEye += gViewY*30.0f; break; } }
int main(int argc, char **argv) { XnStatus nRetVal = XN_STATUS_OK; memset(COM_tracker,0,15*100*sizeof(float)); if (argc > 1) { nRetVal = g_Context.Init(); CHECK_RC(nRetVal, "Init"); nRetVal = g_Context.OpenFileRecording(argv[1], g_Player); if (nRetVal != XN_STATUS_OK) { printf("Can't open recording %s: %s\n", argv[1], xnGetStatusString(nRetVal)); return 1; } } else { xn::EnumerationErrors errors; nRetVal = g_Context.InitFromXmlFile(SAMPLE_XML_PATH, g_scriptNode, &errors); if (nRetVal == XN_STATUS_NO_NODE_PRESENT) { XnChar strError[1024]; errors.ToString(strError, 1024); printf("%s\n", strError); return (nRetVal); } else if (nRetVal != XN_STATUS_OK) { printf("Open failed: %s\n", xnGetStatusString(nRetVal)); return (nRetVal); } } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_DEPTH, g_DepthGenerator); if (nRetVal != XN_STATUS_OK) { printf("No depth generator found. Using a default one..."); xn::MockDepthGenerator mockDepth; nRetVal = mockDepth.Create(g_Context); CHECK_RC(nRetVal, "Create mock depth"); // set some defaults XnMapOutputMode defaultMode; defaultMode.nXRes = 320; defaultMode.nYRes = 240; defaultMode.nFPS = 30; nRetVal = mockDepth.SetMapOutputMode(defaultMode); CHECK_RC(nRetVal, "set default mode"); // set FOV XnFieldOfView fov; fov.fHFOV = 1.0225999419141749; fov.fVFOV = 0.79661567681716894; nRetVal = mockDepth.SetGeneralProperty(XN_PROP_FIELD_OF_VIEW, sizeof(fov), &fov); CHECK_RC(nRetVal, "set FOV"); XnUInt32 nDataSize = defaultMode.nXRes * defaultMode.nYRes * sizeof(XnDepthPixel); XnDepthPixel* pData = (XnDepthPixel*)xnOSCallocAligned(nDataSize, 1, XN_DEFAULT_MEM_ALIGN); nRetVal = mockDepth.SetData(1, 0, nDataSize, pData); CHECK_RC(nRetVal, "set empty depth map"); g_DepthGenerator = mockDepth; } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_IMAGE, g_ImageGenerator); if (nRetVal != XN_STATUS_OK) { printf("No image node exists! check your XML."); return 1; } nRetVal = g_Context.FindExistingNode(XN_NODE_TYPE_USER, g_UserGenerator); if (nRetVal != XN_STATUS_OK) { nRetVal = g_UserGenerator.Create(g_Context); CHECK_RC(nRetVal, "Find user generator"); } XnCallbackHandle hUserCallbacks; if (!g_UserGenerator.IsCapabilitySupported(XN_CAPABILITY_SKELETON)) { printf("Supplied user generator doesn't support skeleton\n"); return 1; } nRetVal = g_UserGenerator.RegisterUserCallbacks(User_NewUser, User_LostUser, NULL, hUserCallbacks); CHECK_RC(nRetVal, "Register to user callbacks"); nRetVal = g_Context.StartGeneratingAll(); CHECK_RC(nRetVal, "StartGenerating"); #ifndef USE_GLES glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initializing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while (!g_bQuit) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }
int main(int argc, char **argv) { 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"); // Create and initialize point tracker g_pSessionManager = new XnVSessionManager; rc = g_pSessionManager->Initialize(&g_Context, "Wave", "RaiseHand"); if (rc != XN_STATUS_OK) { printf("Couldn't initialize the Session Manager: %s\n", xnGetStatusString(rc)); delete g_pSessionManager; return rc; } g_pSessionManager->RegisterSession(NULL, &SessionStart, &SessionEnd); // Start catching signals for quit indications CatchSignals(&g_bQuit); // Create and initialize the main slider g_pMainSlider = new XnVSelectableSlider1D(3); g_pMainSlider->RegisterItemHover(NULL, &MainSlider_OnHover); g_pMainSlider->RegisterItemSelect(NULL, &MainSlider_OnSelect); g_pMainSlider->RegisterActivate(NULL, &MainSlider_OnActivate); g_pMainSlider->RegisterDeactivate(NULL, &MainSlider_OnDeactivate); g_pMainSlider->RegisterPrimaryPointCreate(NULL, &MainSlider_OnPrimaryCreate); g_pMainSlider->RegisterPrimaryPointDestroy(NULL, &MainSlider_OnPrimaryDestroy); g_pMainSlider->RegisterValueChange(NULL, &MainSlider_OnValueChange); g_pMainSlider->SetValueChangeOnOffAxis(true); // Creat the flow manager g_pMainFlowRouter = new XnVFlowRouter; // Connect flow manager to the point tracker g_pSessionManager->AddListener(g_pMainFlowRouter); // Create the MyBox objects XnPoint3D ptMax, ptMin; ptMax.Z = ptMin.Z = 0; ptMax.Y = GL_WIN_SIZE_Y-50; ptMin.Y = GL_WIN_SIZE_Y-300; ptMax.X = 50; ptMin.X = 240; g_pBox[0] = new MyBox(ptMax, ptMin); ptMax.X = 260; ptMin.X = 450; g_pBox[1] = new MyBox(ptMax, ptMin); ptMax.X = 470; ptMin.X = 650; g_pBox[2] = new MyBox(ptMax, ptMin); // Register callback to the MyBox objects for their Leave event. g_pBox[0]->RegisterLeave(NULL, &MyBox_Leave); g_pBox[1]->RegisterLeave(NULL, &MyBox_Leave); g_pBox[2]->RegisterLeave(NULL, &MyBox_Leave); g_Context.StartGeneratingAll(); #ifdef USE_GLUT glInit(&argc, argv); glutMainLoop(); #else if (!opengles_init(GL_WIN_SIZE_X, GL_WIN_SIZE_Y, &display, &surface, &context)) { printf("Error initing opengles\n"); CleanupExit(); } glDisable(GL_DEPTH_TEST); // glEnable(GL_TEXTURE_2D); glEnableClientState(GL_VERTEX_ARRAY); glDisableClientState(GL_COLOR_ARRAY); while ((!_kbhit()) && (!g_bQuit)) { glutDisplay(); eglSwapBuffers(display, surface); } opengles_shutdown(display, surface, context); CleanupExit(); #endif }