Esempio n. 1
0
// ctor
//--------------------------------------------------------------
ofxHandGenerator::ofxHandGenerator(){
	// set defaults
	setMinDistBetweenHands(100);
	setMaxNumHands(2);
	setSmoothing(1);
	setMinTimeBetweenHands(1000);
}
//--------------------------------------------------------------
bool ofxHandGenerator::setup(ofxOpenNIContext* pContext, int number_of_hands) {
	
	context = pContext;
	context->getDepthGenerator(&depth_generator);
	
	XnStatus result = XN_STATUS_OK;	
	
	// setup a gesture generator using our ofxGestureGenerator wrapper
	gesture_generator.setup(context);
	ofAddListener(gesture_generator.gestureRecognized, this, &ofxHandGenerator::gestureRecognized); 
	
	// Try to fetch hands generator before creating one
	if(pContext->getHandsGenerator(&hands_generator)) {
		// found the hands generator - for do nothing		
	} else {
		result = hands_generator.Create(context->getXnContext());
		CHECK_RC(result, "Creating hand generator");
		hands_generator.StartGenerating();
	}
	
	// pre-generate the tracked users.
	setMaxNumHands(number_of_hands);
	
	found_hands = 0;
	
	isFiltering = false;
	
	printf("Hands generator inited\n");
	
	startTrackHands();
	
	return true;
}