/* ------------------------------------------------------------------------------------ */
geXForm3d CCameraManager::ViewPoint()
{
	geXForm3d theViewPoint;

	TrackMotion();

// changed QD 10715/05
	//geXForm3d_SetIdentity(&theViewPoint);			// Clear the matrix
	//geXForm3d_RotateZ(&theViewPoint, Rotation.Z);	// Rotate then translate
	geXForm3d_SetZRotation(&theViewPoint, Rotation.Z);
// end change
	geXForm3d_RotateX(&theViewPoint, Rotation.X);
	geXForm3d_RotateY(&theViewPoint, Rotation.Y);
	geXForm3d_Translate(&theViewPoint, Translation.X, Translation.Y, Translation.Z);

	return theViewPoint;
}
예제 #2
0
bool CVisionPipeline::ProcessImage (CIplImage& image, float& xVel, float& yVel)
{
	AllocWorkingSpace (image);

	// TODO: fine grained synchronization
	m_imageCopyMutex.Enter();
	TrackMotion (image, xVel, yVel);

	// Store current image as previous
	m_imgPrev.Swap (&m_imgCurr);
	m_imageCopyMutex.Leave();

	// Notifies face detection thread when needed
	if (m_trackFace) {
		m_trackArea.SetDegradation(255 - m_trackAreaTimeout.PercentagePassed() * 255 / 100);
		m_condition.Signal();
	}
	
	if (m_trackFace && m_enableWhenFaceDetected && !IsFaceDetected())
		return false;
	else
		return true;
}