Exemplo n.º 1
0
void UserPointCloud::update() {
	
    if (user->getTrackedUsers().size()>0) {
		if(!bBonesInit) initBones();
		else updateBones();
	}
}
Exemplo n.º 2
0
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);
        }
    }
   
}