本文整理汇总了C++中UserGenerator::GetCoM方法的典型用法代码示例。如果您正苦于以下问题:C++ UserGenerator::GetCoM方法的具体用法?C++ UserGenerator::GetCoM怎么用?C++ UserGenerator::GetCoM使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类UserGenerator
的用法示例。
在下文中一共展示了UserGenerator::GetCoM方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
/**
* Draw the scores over the users in the game (openGL).
*/
void SuperFiremanBrothers :: drawGameInfo ()
{
float y;
int score;
char strLabel[20] = "";
char strLevel[20] = "";
char strStart[20] = "Calibrate to begin";
char strEnd[20] = "Game Over";
UserGenerator uGen;
DepthGenerator dGen;
XnUserID player;
XnPoint3D com;
map <XnUserID, int> :: iterator iter;
float amb[3] = {1.0, 1.0, 1.0};
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT, amb);
glDisable(GL_LIGHTING);
y = -768;
uGen = userDetector -> retUserGenerator();
dGen = userDetector -> retDepthGenerator();
for (iter = players.begin(); iter != players.end(); iter++) {
player = iter -> first;
score = iter -> second;
sprintf(strLabel, "Score: %d", score);
uGen.GetCoM(player, com);
dGen.ConvertRealWorldToProjective(1, &com, &com);
glRasterPos3f( com.X + 100, com.Y - 300, com.Z);
glPrintString(GLUT_BITMAP_HELVETICA_18, strLabel);
y += 150;
}
sprintf(strLevel, "Level %d", level);
glRasterPos2f( 500, -768);
glPrintString(GLUT_BITMAP_HELVETICA_18, strLevel);
if (gameStatus == NOT_STARTED) {
glRasterPos2f( 500, 0);
glPrintString(GLUT_BITMAP_HELVETICA_18, strStart);
}
else if (gameStatus > STARTED) {
glRasterPos2f( 500, 0);
glPrintString(GLUT_BITMAP_HELVETICA_18, strEnd);
}
glEnable(GL_LIGHTING);
}
示例2: if
//.........这里部分代码省略.........
glPushMatrix();
orientMatrix(joint[LELBOW],joint[LHAND]);
glTranslatef( 0.0, 0.0, 80.0);
glScalef(300.0, 300.0, 300.0);
glRotatef(90, -1.0, 0.0, 0.0);
glRotatef(-ax, 0.0,-1.0, 0.0);
glmDraw(zamusModelParts.cannon, mode);
glPopMatrix();
}
else if ((stage == 4) || (stage == 5)) {
glPushMatrix();
glTranslatef(joint[LSHOULDER].X,
joint[LSHOULDER].Y,
joint[LSHOULDER].Z);
glRotatef(-ax, 0.0,-2.0, 0.0);
glScalef(500.0,-500.0, 500.0);
glmDraw(linqModelParts.shoulder, mode);
glPopMatrix();
glPushMatrix();
orientMatrix(joint[LSHOULDER],joint[LELBOW]);
glTranslatef( 0.0, 0.0, 50.0);
glScalef(-180.0, 180.0, 180.0);
glRotatef(90, -1.0, 0.0, 0.0);
glRotatef(-ax, 0.0,-1.0, 0.0);
glmDraw(linqModelParts.thigh, mode);
glPopMatrix();
glPushMatrix();
orientMatrix(joint[LELBOW],joint[LHAND]);
glTranslatef( 0.0, 0.0, 50.0);
glScalef(-80.0, 80.0, 80.0);
glRotatef(90, -1.0, 0.0, 0.0);
glRotatef(-ax, 0.0,-1.0, 0.0);
glmDraw(linqModelParts.leg, mode);
glPopMatrix();
}
else {
drawLimp(joint[LSHOULDER],joint[LELBOW]);
drawLimp(joint[LELBOW],joint[LHAND]);
}
if (stage == 5) {
glPushMatrix();
glTranslatef(joint[RSHOULDER].X,
joint[RSHOULDER].Y,
joint[RSHOULDER].Z);
glRotatef(-ax, 0.0,-1.0, 0.0);
glScalef(500.0,-500.0, 500.0);
glmDraw(linqModelParts.shoulder, mode);
glPopMatrix();
glPushMatrix();
orientMatrix(joint[RSHOULDER],joint[RELBOW]);
glTranslatef( 0.0, 0.0, 50.0);
glScalef(350.0, 350.0, 350.0);
glRotatef(90, -1.0, 0.0, 0.0);
glRotatef(ax, 0.0,-1.0, 0.0);
glmDraw(linqModelParts.arm, mode);
glPopMatrix();
glPushMatrix();
orientMatrix(joint[RELBOW],joint[RHAND]);
glTranslatef( 0.0, 0.0, 60.0);
glScalef(250.0, 250.0, 250.0);
glRotatef(90, -1.0, 0.0, 0.0);
glRotatef(-ax, 0.0,-1.0, 0.0);
glmDraw(linqModelParts.forearm, mode);
glPopMatrix();
}
else {
drawLimp(joint[RSHOULDER],joint[RELBOW]);
drawLimp(joint[RELBOW],joint[RHAND]);
}
// Draw head.
drawHead();
}
// Draws a diamond in the player's center of mass.
else {
userGen.GetCoM(player, com);
nm_DepthGenerator.ConvertRealWorldToProjective(1, &com, &com);
glPushMatrix();
glTranslatef(com.X, com.Y, com.Z);
glutSolidSphere(60.0, 4, 2);
glPopMatrix();
}
}
示例3: getPlayers
void getPlayers()
{
XnUserID aUsers[MAX_USERS];
XnUInt16 nUsers = MAX_USERS;
_userGenerator.GetUsers(aUsers, nUsers);
for (int i = 0; i < nUsers; ++i)
{
XnUserID player;
player = aUsers[i];
// Track each player.
XnPoint3D com;
_userGenerator.GetCoM(player, com);
memcpy(g_ucPlayersBuffer[i].player_id, &player, 4);
copyNIData(g_ucPlayersBuffer[i].player_data, com.X, com.Y, com.Z);
//if(_printUserTracking) printf("AS3OpenNI :: User Tracking: %f, %f, %f\n", com.X, com.Y, com.Z);
// If a user is being tracked then do this.
if(_userGenerator.GetSkeletonCap().IsTracking(player))
{
memcpy(g_ucSkeletonsBuffer[i].player_id, &player, 4);
if(_convertRealWorldToProjective)
{
getJointPosition(player, XN_SKEL_HEAD, g_ucSkeletonsBuffer[i].head);
getJointPosition(player, XN_SKEL_NECK, g_ucSkeletonsBuffer[i].neck);
getJointPosition(player, XN_SKEL_TORSO, g_ucSkeletonsBuffer[i].torso);
getJointPosition(player, XN_SKEL_LEFT_SHOULDER, g_ucSkeletonsBuffer[i].lshoulder);
getJointPosition(player, XN_SKEL_LEFT_ELBOW, g_ucSkeletonsBuffer[i].lelbow);
getJointPosition(player, XN_SKEL_LEFT_HAND, g_ucSkeletonsBuffer[i].lhand);
getJointPosition(player, XN_SKEL_RIGHT_SHOULDER, g_ucSkeletonsBuffer[i].rshoulder);
getJointPosition(player, XN_SKEL_RIGHT_ELBOW, g_ucSkeletonsBuffer[i].relbow);
getJointPosition(player, XN_SKEL_RIGHT_HAND, g_ucSkeletonsBuffer[i].rhand);
getJointPosition(player, XN_SKEL_LEFT_HIP, g_ucSkeletonsBuffer[i].lhip);
getJointPosition(player, XN_SKEL_LEFT_KNEE, g_ucSkeletonsBuffer[i].lknee);
getJointPosition(player, XN_SKEL_LEFT_FOOT, g_ucSkeletonsBuffer[i].lfoot);
getJointPosition(player, XN_SKEL_RIGHT_HIP, g_ucSkeletonsBuffer[i].rhip);
getJointPosition(player, XN_SKEL_RIGHT_KNEE, g_ucSkeletonsBuffer[i].rknee);
getJointPosition(player, XN_SKEL_RIGHT_FOOT, g_ucSkeletonsBuffer[i].rfoot);
}
else
{
XnSkeletonJointPosition head, neck, left_shoulder, left_elbow, left_hand, right_shoulder, right_elbow, right_hand;
XnSkeletonJointPosition torso, left_hip, left_knee, left_foot, right_hip, right_knee, right_foot;
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_HEAD, head);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_NECK, neck);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_TORSO, torso);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_SHOULDER, left_shoulder);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_ELBOW, left_elbow);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_HAND, left_hand);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_SHOULDER, right_shoulder);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_ELBOW, right_elbow);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_HAND, right_hand);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_HIP, left_hip);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_KNEE, left_knee);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_LEFT_FOOT, left_foot);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_HIP, right_hip);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_KNEE, right_knee);
_userGenerator.GetSkeletonCap().GetSkeletonJointPosition(player, XN_SKEL_RIGHT_FOOT, right_foot);
copyNIData(g_ucSkeletonsBuffer[i].head, head.position.X, head.position.Y, head.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].neck, neck.position.X, neck.position.Y, neck.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].torso, torso.position.X, torso.position.Y, torso.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lshoulder, left_shoulder.position.X, left_shoulder.position.Y, left_shoulder.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lelbow, left_elbow.position.X, left_elbow.position.Y, left_elbow.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lhand, left_hand.position.X, left_hand.position.Y, left_hand.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].rshoulder, right_shoulder.position.X, right_shoulder.position.Y, right_shoulder.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].relbow, right_elbow.position.X, right_elbow.position.Y, right_elbow.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].rhand, right_hand.position.X, right_hand.position.Y, right_hand.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lhip, left_hip.position.X, left_hip.position.Y, left_hip.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lknee, left_knee.position.X, left_knee.position.Y, left_knee.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].lfoot, left_foot.position.X, left_foot.position.Y, left_foot.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].rhip, right_hip.position.X, right_hip.position.Y, right_hip.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].rknee, right_knee.position.X, right_knee.position.Y, right_knee.position.Z);
copyNIData(g_ucSkeletonsBuffer[i].rfoot, right_foot.position.X, right_foot.position.Y, right_foot.position.Z);
}
}
}
}
示例4: updatePixels
void OpenNIUser::updatePixels()
{
// Get device generators
DepthGenerator* depth = _device->getDepthGenerator();
UserGenerator* user = _device->getUserGenerator();
// Get metadata
//xn::DepthMetaData depthMetaData;
//depth->GetMetaData( depthMetaData );
xn::DepthMetaData* depthMetaData = _device->getDepthMetaData();
xn::SceneMetaData* sceneMetaData = _device->getUserMetaData();
// Get Center Of Mass
XnPoint3D com;
user->GetCoM( mId, com );
// Convert to screen coordinates
depth->ConvertRealWorldToProjective( 1, &com, &com );
mCenter[0] = com.X;
mCenter[1] = com.Y;
mCenter[2] = com.Z;
if( _enablePixels )
{
// Get user pixels
user->GetUserPixels( mId, *sceneMetaData );
//xn::SceneMetaData sceneMetaData;
//user->GetUserPixels( mId, sceneMetaData );
// Get labels
const XnLabel* labels = sceneMetaData->Data();
if( labels )
{
//
// Generate a bitmap with the user pixels colored
//
uint16_t* pDepth = _device->getDepthMap();
int depthWidth = depthMetaData->XRes();
int depthHeight = depthMetaData->YRes();
if( !_userPixels || (mWidth != depthWidth) || (mHeight != depthHeight) )
{
mWidth = depthWidth;
mHeight = depthHeight;
allocate( depthWidth, depthHeight );
}
xnOSMemSet( _backUserPixels, 0, depthWidth*depthHeight*3 );
uint8_t* pixels = _backUserPixels;
int index = 0;
for( int j=0; j<depthHeight; j++ )
{
for( int x=0; x<depthWidth; x++ )
{
// Only fill bitmap with current user's data
/*if( *labels != 0 && *labels == mId )
{
// Pixel is not empty, deal with it.
uint32_t nValue = *pDepth;
mColor[0] = g_Colors[mId][0];
mColor[1] = g_Colors[mId][1];
mColor[2] = g_Colors[mId][2];
if( nValue != 0 )
{
int nHistValue = _device->getDepthMap24()[nValue];
pixels[index+0] = 0xff & static_cast<uint8_t>(nHistValue * mColor[0]);//g_Colors[nColorID][0]);
pixels[index+1] = 0xff & static_cast<uint8_t>(nHistValue * mColor[1]);//g_Colors[nColorID][1]);
pixels[index+2] = 0xff & static_cast<uint8_t>(nHistValue * mColor[2]);//g_Colors[nColorID][2]);
}
}****/
// Check out for every user visible and fill bitmap with correct coloring
// NOTE! This should be removed in the future. User should only know about its own data and not all
if( *labels != 0 )
{
// Pixel is not empty, deal with it.
uint32_t nValue = *pDepth;
XnLabel label = *labels;
XnUInt32 nColorID = label % nColors;
if( label == 0 )
{
nColorID = nColors;
}
mColor[0] = g_Colors[mId][0];
mColor[1] = g_Colors[mId][1];
mColor[2] = g_Colors[mId][2];
if( nValue != 0 )
{
int nHistValue = _device->getDepthMap24()[nValue];
pixels[index+0] = 0xff & static_cast<uint8_t>(nHistValue * g_Colors[nColorID][0]);
pixels[index+1] = 0xff & static_cast<uint8_t>(nHistValue * g_Colors[nColorID][1]);
pixels[index+2] = 0xff & static_cast<uint8_t>(nHistValue * g_Colors[nColorID][2]);
}
}
//.........这里部分代码省略.........