例如,您可以将每个关节位置数据写入任意文件,例如每个帧的 .txt。像这样的东西:
void WriteSkeletonToFile(const nite::UserData& user, std::string filename) {
std::ofstream skeletonFile;
skeletonFile.open(filename + ".txt", std::fstream::out | std::fstream::app);
auto writeJointCoordinates = [&skeletonFile](const nite::SkeletonJoint& joint) {
skeletonFile << joint.getPosition().x << ",";
skeletonFile << joint.getPosition().y << ",";
skeletonFile << joint.getPosition().z << ",";
};
//Center body parts
writeJointCoordinates(user.getSkeleton().getJoint(nite::JOINT_HEAD));
writeJointCoordinates(user.getSkeleton().getJoint(nite::JOINT_NECK));
... continue for each joint
skeletonFile << "\n";
skeletonFile.close();
之后您可以再次阅读并随意使用它。但是在将其与存储的位置进行比较时,请记住将其与您的活动骨架位置相匹配。你当然可以保存额外的关节数据,比如旋转(这些都是用位置计算的,所以不是真的必要),ID等,但我会推荐一个更光滑的文件格式;)