|
|
@ -68,18 +68,18 @@ void ofApp::setup(){ |
|
|
|
font.load("MaziusDisplay-Bold.otf", 180); |
|
|
|
ofLog() << font.getLineHeight(); |
|
|
|
|
|
|
|
ORTCHAR_T* modelPath = "/home/cailean/Desktop/openframeworks/of_v0.12.0_linux64gcc6_release/apps/myApps/image-to-mesh/bin/data/models/depth_anything_v2_vits.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Small = "/home/cailean/Desktop/openframeworks/of_v0.12.0_linux64gcc6_release/apps/myApps/image-to-mesh/bin/data/models/depth_anything_v2_vitb.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Yolo = "/home/cailean/Desktop/openframeworks/of_v0.12.0_linux64gcc6_release/apps/myApps/image-to-mesh/bin/data/models/yolov5s-face.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Indoor_Dynamic = "/home/cailean/Desktop/openframeworks/of_v0.12.0_linux64gcc6_release/apps/myApps/image-to-mesh/bin/data/models/depth_anything_v2_vitl.onnx"; |
|
|
|
ORTCHAR_T* modelPath = L"C:/Users/caile/of_v20250417_msys2_mingw64_release/apps/myApps/sv-map/bin/data/models/depth_anything_v2_vits.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Small = L"C:/Users/caile/of_v20250417_msys2_mingw64_release/apps/myApps/sv-map/bin/data/models/depth_anything_v2_vitb.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Yolo = L"C:/Users/caile/of_v20250417_msys2_mingw64_release/apps/myApps/sv-map/bin/data/models/yolov5s-face.onnx"; |
|
|
|
ORTCHAR_T* modelPath_Indoor_Dynamic = L"C:/Users/caile/of_v20250417_msys2_mingw64_release/apps/myApps/sv-map/bin/data/models/depth_anything_v2_vitl.onnx"; |
|
|
|
|
|
|
|
bullet.setup(); |
|
|
|
|
|
|
|
/* pi mapper setup */ |
|
|
|
mapper.registerFboSource(projection_src); |
|
|
|
mapper.setup(); |
|
|
|
projection_src.setFbo(&comp_fbo); |
|
|
|
projection_src.setFbo(&mapper_black); |
|
|
|
// mapper.registerFboSource(projection_src);
|
|
|
|
// mapper.setup();
|
|
|
|
// projection_src.setFbo(&comp_fbo);
|
|
|
|
// projection_src.setFbo(&mapper_black);
|
|
|
|
|
|
|
|
/* onnx setup */ |
|
|
|
depth_onnx.Setup(modelPath, false, true); |
|
|
@ -125,7 +125,7 @@ void ofApp::setup(){ |
|
|
|
portrait_camera.setScale(current_cp.scale); |
|
|
|
updateCurrentCameraMode(); |
|
|
|
|
|
|
|
createNodes("data/json/sv_embeddings.json"); |
|
|
|
createNodes("json/sv_embeddings.json"); |
|
|
|
|
|
|
|
buildMeshes(); |
|
|
|
|
|
|
@ -203,6 +203,16 @@ void ofApp::update(){ |
|
|
|
mapper.update(); |
|
|
|
bullet.update(server->is_active, n, nn_nodes); |
|
|
|
|
|
|
|
if(tsne_update_complete) { |
|
|
|
tsne_update_complete = false; |
|
|
|
onTSNEUpdateComplete(); |
|
|
|
} |
|
|
|
|
|
|
|
if(ofGetElapsedTimef() > tsne_start_time + TNSE_DURATION) { |
|
|
|
tsne_iter_idx = (tsne_iter_idx + 1) % 3; |
|
|
|
updateTSNEPositions(nodes); |
|
|
|
} |
|
|
|
|
|
|
|
updateCurrentCameraMode(); |
|
|
|
|
|
|
|
if(bullet.getRandomWalkTime() > 60){ |
|
|
@ -232,11 +242,12 @@ void ofApp::draw(){ |
|
|
|
|
|
|
|
esp_comp_fbo.begin(); |
|
|
|
|
|
|
|
esp_shader.begin(); |
|
|
|
esp_shader.setUniformTexture("tex0", model_esp_out_fbo.getTexture(), 0); |
|
|
|
model_esp_out_fbo.draw(0, 0); |
|
|
|
//esp_shader.begin();
|
|
|
|
//esp_shader.setUniformTexture("tex0", model_esp_out_fbo.getTexture(), 0);
|
|
|
|
//model_esp_out_fbo.draw(0, 0);
|
|
|
|
model_image_esp.draw(0, 0); |
|
|
|
esp_comp_fbo.end(); |
|
|
|
esp_shader.end(); |
|
|
|
//esp_shader.end();
|
|
|
|
|
|
|
|
portrait_fbo.begin(); |
|
|
|
|
|
|
@ -275,7 +286,7 @@ void ofApp::draw(){ |
|
|
|
|
|
|
|
ofTranslate(0, 0); |
|
|
|
comp_fbo.draw(0, 0); |
|
|
|
mapper.draw(); |
|
|
|
//mapper.draw();
|
|
|
|
|
|
|
|
|
|
|
|
if(bullet.print_debug) |
|
|
@ -873,3 +884,40 @@ void ofApp::drawText(){ |
|
|
|
ofPopStyle(); |
|
|
|
text_display.end(); |
|
|
|
} |
|
|
|
|
|
|
|
void ofApp::updateTSNEPositions(vector<Node>& _nodes){ |
|
|
|
if(tsne_updating) { |
|
|
|
ofLog() << "TSNE update already in progress"; |
|
|
|
return; |
|
|
|
} |
|
|
|
tsne_updating = true; |
|
|
|
tsne_update_complete = false; // Reset flag
|
|
|
|
tsne_thread = std::thread(&ofApp::updateTSNEPositionsThreaded, this, std::ref(_nodes)); |
|
|
|
tsne_thread.detach(); |
|
|
|
} |
|
|
|
|
|
|
|
void ofApp::updateTSNEPositionsThreaded(vector<Node>& _nodes){ |
|
|
|
ofLog() << "Starting TSNE update in thread"; |
|
|
|
{ |
|
|
|
std::lock_guard<std::mutex> lock(nodes_mutex); |
|
|
|
for(size_t i = 0; i < point_iterations[tsne_iter_idx].size(); i++) { |
|
|
|
const auto& vec = point_iterations[tsne_iter_idx][i]; |
|
|
|
nodes[i].tsne_position = glm::vec3( |
|
|
|
((vec[0] * 2) - 1) * tsne_scale, |
|
|
|
((vec[1] * 2) - 1) * tsne_scale, |
|
|
|
-5.0f |
|
|
|
); |
|
|
|
} |
|
|
|
} |
|
|
|
tsne_updating = false; |
|
|
|
tsne_update_complete = true; // Set completion flag
|
|
|
|
ofLog() << "TSNE update complete"; |
|
|
|
} |
|
|
|
|
|
|
|
void ofApp::onTSNEUpdateComplete() { |
|
|
|
// Do whatever you need to do after TSNE update
|
|
|
|
// This will run on the main thread
|
|
|
|
bullet.updateTSNEPosition(nodes); |
|
|
|
tsne_start_time = ofGetElapsedTimef(); |
|
|
|
ofLog() << "Handling TSNE update completion on main thread"; |
|
|
|
} |
|
|
|