void UserPointCloud::update() { if (user->getTrackedUsers().size()>0) { if(!bBonesInit) initBones(); else updateBones(); } }
void Skeleton::loadSkeleton(Common::SeekableReadStream *data) { _numJoints = data->readUint32LE(); _joints = new Joint[_numJoints]; char inString[32]; for (int i = 0; i < _numJoints; i++) { data->read(inString, 32); _joints[i]._name = inString; data->read(inString, 32); _joints[i]._parent = inString; _joints[i]._trans.readFromStream(data); _joints[i]._quat.readFromStream(data); _joints[i]._parentIndex = findJointIndex(_joints[i]._parent, i); } initBones(); resetAnim(); }
void NCAssimpModel::setup(string pathtomodel){ string filepath = ofToDataPath(pathtomodel); bool optimize =false; // only ever give us triangles. aiSetImportPropertyInteger(AI_CONFIG_PP_SBP_REMOVE, aiPrimitiveType_LINE | aiPrimitiveType_POINT ); aiSetImportPropertyInteger(AI_CONFIG_PP_PTV_NORMALIZE, true); // aiProcess_FlipUVs is for VAR code. Not needed otherwise. Not sure why. unsigned int flags = aiProcessPreset_TargetRealtime_MaxQuality | aiProcess_OptimizeGraph | aiProcess_Triangulate | aiProcess_FlipUVs | aiProcess_CalcTangentSpace | aiProcess_JoinIdenticalVertices | aiProcess_SortByPType; if(optimize) flags |= aiProcess_ImproveCacheLocality | aiProcess_OptimizeGraph | aiProcess_OptimizeMeshes | aiProcess_JoinIdenticalVertices | aiProcess_RemoveRedundantMaterials; if (scene) { for(int i = 0; i < 100; i++) { jointlabels[i] = ""; } bones.clear(); delete scene; } scene = aiImportFile(filepath.c_str(), flags); if(scene){ meshes.clear(); initBones(); for (int i=0;i<scene->mNumMeshes;i++) { NCAIMesh mesh; mesh.setup(scene->mMeshes[i], scene); meshes.push_back(mesh); } } }