// References globals: markersNFTCount // Modifies globals: threadHandle, surfaceSet[], surfaceSetCount, markersNFT[] static int loadNFTData(void) { int i; KpmRefDataSet *refDataSet; // If data was already loaded, stop KPM tracking thread and unload previously loaded data. if (threadHandle) { ARLOGi("Reloading NFT data.\n"); unloadNFTData(); } else { ARLOGi("Loading NFT data.\n"); } refDataSet = NULL; for (i = 0; i < markersNFTCount; i++) { // Load KPM data. KpmRefDataSet *refDataSet2; ARLOGi("Reading %s.fset3\n", markersNFT[i].datasetPathname); if (kpmLoadRefDataSet(markersNFT[i].datasetPathname, "fset3", &refDataSet2) < 0 ) { ARLOGe("Error reading KPM data from %s.fset3\n", markersNFT[i].datasetPathname); markersNFT[i].pageNo = -1; continue; } markersNFT[i].pageNo = surfaceSetCount; ARLOGi(" Assigned page no. %d.\n", surfaceSetCount); if (kpmChangePageNoOfRefDataSet(refDataSet2, KpmChangePageNoAllPages, surfaceSetCount) < 0) { ARLOGe("Error: kpmChangePageNoOfRefDataSet\n"); exit(-1); } if (kpmMergeRefDataSet(&refDataSet, &refDataSet2) < 0) { ARLOGe("Error: kpmMergeRefDataSet\n"); exit(-1); } ARLOGi(" Done.\n"); // Load AR2 data. ARLOGi("Reading %s.fset\n", markersNFT[i].datasetPathname); if ((surfaceSet[surfaceSetCount] = ar2ReadSurfaceSet(markersNFT[i].datasetPathname, "fset", NULL)) == NULL ) { ARLOGe("Error reading data from %s.fset\n", markersNFT[i].datasetPathname); } ARLOGi(" Done.\n"); surfaceSetCount++; if (surfaceSetCount == PAGES_MAX) break; } if (kpmSetRefDataSet(kpmHandle, refDataSet) < 0) { ARLOGe("Error: kpmSetRefDataSet\n"); exit(-1); } kpmDeleteRefDataSet(&refDataSet); // Start the KPM tracking thread. threadHandle = trackingInitInit(kpmHandle); if (!threadHandle) exit(-1); ARLOGi("Loading of NFT data complete.\n"); return (TRUE); }
void ofxArtool5::cleanup(){ if(artMode==ART_PATTERN){ arPattDetach(gARHandle); arPattDeleteHandle(gARPattHandle); ar3DDeleteHandle(&gAR3DHandle); arDeleteHandle(gARHandle); arParamLTFree(&gCparamLT); }else if(artMode==ART_NFT){ if(markersNFT)deleteMarkers(&markersNFT, &markersNFTCount); unloadNFTData(); ar2DeleteHandle(&ar2Handle); kpmDeleteHandle(&kpmHandle); arParamLTFree(&gCparamLT); } }
static void cleanup(void) { VirtualEnvironmentFinal(); if (markersNFT) deleteMarkers(&markersNFT, &markersNFTCount); // NFT cleanup. unloadNFTData(); ARLOGd("Cleaning up ARToolKit NFT handles.\n"); ar2DeleteHandle(&ar2Handle); kpmDeleteHandle(&kpmHandle); arParamLTFree(&gCparamLT); // OpenGL cleanup. arglCleanup(gArglSettings); gArglSettings = NULL; // Camera cleanup. arVideoCapStop(); arVideoClose(); }
static void cleanup(void) { if (markersNFT) deleteMarkers(&markersNFT, &markersNFTCount); // NFT cleanup. unloadNFTData(); ARLOGd("Cleaning up ARToolKit NFT handles.\n"); ar2DeleteHandle(&ar2Handle); kpmDeleteHandle(&kpmHandle); arParamLTFree(&gCparamLT); // OpenGL cleanup. arglCleanup(gArglSettings); gArglSettings = NULL; // Camera cleanup. arVideoCapStop(); arVideoClose(); #ifdef _WIN32 CoUninitialize(); #endif }