diff --git a/Application/Rulr.sln b/Application/Rulr.sln index 864b00c2c2..afb27ebcbd 100644 --- a/Application/Rulr.sln +++ b/Application/Rulr.sln @@ -14,23 +14,23 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Rulr", "Rulr.vcxproj", "{7F EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\..\addons\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\..\addons\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\..\addons\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxGraycodeLib", "..\..\ofxGraycode\ofxGraycodeLib\ofxGraycodeLib.vcxproj", "{BA65A9DD-2BE2-4FF8-A9C6-6AC6624CDDC3}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxGraycodeLib", "..\..\..\addons\ofxGraycode\ofxGraycodeLib\ofxGraycodeLib.vcxproj", "{BA65A9DD-2BE2-4FF8-A9C6-6AC6624CDDC3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxEdsdkLib", "..\..\ofxEdsdk\ofxEdsdkLib\ofxEdsdkLib.vcxproj", "{630936F8-C65F-4AB9-92AD-80569EAA7782}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxEdsdkLib", "..\..\..\addons\ofxEdsdk\ofxEdsdkLib\ofxEdsdkLib.vcxproj", "{630936F8-C65F-4AB9-92AD-80569EAA7782}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\..\addons\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\..\addons\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxUeyeLib", "..\..\ofxUeye\ofxUeyeLib\ofxUeyeLib.vcxproj", "{8D6B518C-D891-4907-8BC1-3232914BAB97}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxUeyeLib", "..\..\..\addons\ofxUeye\ofxUeyeLib\ofxUeyeLib.vcxproj", "{8D6B518C-D891-4907-8BC1-3232914BAB97}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxBlackmagicLib", "..\..\ofxBlackmagic2\ofxBlackmagicLib\ofxBlackmagicLib.vcxproj", "{E57BE93F-5BA0-4165-8861-DF6653F11A37}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxBlackmagicLib", "..\..\..\addons\ofxBlackmagic2\ofxBlackmagicLib\ofxBlackmagicLib.vcxproj", "{E57BE93F-5BA0-4165-8861-DF6653F11A37}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "..\Core\Core.vcxproj", "{9201D4E8-8B5A-44D4-BAA6-23229A1871A7}" EndProject @@ -43,13 +43,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nodes", "..\Nodes\Nodes.vcx EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Addons", "Addons", "{16F575BF-69CD-4DE7-886A-F1E871E4D5B1}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\..\addons\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Application", "Application", "{B60F2E08-1FFC-406D-99B2-D446B968362D}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "KinectForWindows2", "KinectForWindows2", "{E02D4FA5-079D-4D3F-805D-AB62A37E77FA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxSingleton", "..\..\ofxSingleton\ofxSingletonLib\ofxSingleton.vcxproj", "{4D3BCFDD-E65D-4247-B303-E0839CAEC6A6}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxSingleton", "..\..\..\addons\ofxSingleton\ofxSingletonLib\ofxSingleton.vcxproj", "{4D3BCFDD-E65D-4247-B303-E0839CAEC6A6}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "EnttecUsbPro", "EnttecUsbPro", "{8A40CBDF-2E1C-40FA-8CF6-B5E4C8904278}" EndProject @@ -58,7 +58,7 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_EnttecUsbPro", "..\P {C400D413-78E4-4F60-B5E2-7965FCAC0EEC} = {C400D413-78E4-4F60-B5E2-7965FCAC0EEC} EndProjectSection EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxNonLinearFit", "..\..\ofxNonLinearFit\ofxNonLinearFitLib\ofxNonLinearFit.vcxproj", "{C087079E-2A0E-4B85-A479-C28E2D01A048}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxNonLinearFit", "..\..\..\addons\ofxNonLinearFit\ofxNonLinearFitLib\ofxNonLinearFit.vcxproj", "{C087079E-2A0E-4B85-A479-C28E2D01A048}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "BlackMagic", "BlackMagic", "{5ED22A72-EE8F-4D92-BA9D-0C8FD342A5D9}" EndProject diff --git a/Core/Core.vcxproj b/Core/Core.vcxproj index 6396ce0e9f..4dd0a28c59 100644 --- a/Core/Core.vcxproj +++ b/Core/Core.vcxproj @@ -99,16 +99,16 @@ - + {6f0ddb4f-4014-4433-919b-9d956c034bad} - + {faa73572-fd12-41fa-8fbe-cb47482d2d87} - + {68b9239b-5ae6-45c0-b1cb-6fc6b58bb6ee} - + {4d3bcfdd-e65d-4247-b303-e0839caec6a6} @@ -138,13 +138,13 @@ - + - + diff --git a/Core/src/ofxRulr/Graph/Editor/NodeHost.cpp b/Core/src/ofxRulr/Graph/Editor/NodeHost.cpp index d0bb53155a..2591932167 100644 --- a/Core/src/ofxRulr/Graph/Editor/NodeHost.cpp +++ b/Core/src/ofxRulr/Graph/Editor/NodeHost.cpp @@ -101,7 +101,7 @@ namespace ofxRulr { this->outputPinPosition = ofVec2f(this->getWidth(), this->getHeight() / 2.0f); const auto iconSize = 48; - outputPinView->setBounds(ofRectangle(this->getOutputPinPosition() - ofVec2f(iconSize + 16, iconSize / 2), iconSize, iconSize)); + outputPinView->setBounds(ofRectangle(this->getOutputPinPosition() - ofVec2f(iconSize + 20, iconSize / 2), iconSize, iconSize)); auto & resizeImage = image("ofxRulr::resizeHandle"); resizeHandle->setBounds(ofRectangle(args.localBounds.width - resizeImage.getWidth(), args.localBounds.height - resizeImage.getHeight(), resizeImage.getWidth(), resizeImage.getHeight())); diff --git a/Core/src/ofxRulr/Nodes/Base.h b/Core/src/ofxRulr/Nodes/Base.h index 8af00a8215..cb15594036 100644 --- a/Core/src/ofxRulr/Nodes/Base.h +++ b/Core/src/ofxRulr/Nodes/Base.h @@ -4,6 +4,7 @@ #include "../Utils/Constants.h" #include "../Utils/Serializable.h" #include "../Exception.h" +#include "../Version.h" #include "../../../addons/ofxCvGui/src/ofxCvGui/InspectController.h" @@ -174,5 +175,11 @@ namespace ofxRulr { uint64_t lastFrameUpdate; bool updateAllInputsFirst; }; + + template + class Gives : public Base { + public: + virtual void get(What &) const { }; + }; } } \ No newline at end of file diff --git a/Example_KinectProjector/exampleLoadKinectProjector.sln b/Example_KinectProjector/exampleLoadKinectProjector.sln index b72b4d4723..61500693e9 100644 --- a/Example_KinectProjector/exampleLoadKinectProjector.sln +++ b/Example_KinectProjector/exampleLoadKinectProjector.sln @@ -6,9 +6,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "exampleLoadKinectProjector" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\..\addons\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\..\addons\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Example_KinectProjector/exampleLoadKinectProjector.vcxproj b/Example_KinectProjector/exampleLoadKinectProjector.vcxproj index da1e638597..b8cd0ba4cc 100644 --- a/Example_KinectProjector/exampleLoadKinectProjector.vcxproj +++ b/Example_KinectProjector/exampleLoadKinectProjector.vcxproj @@ -178,10 +178,10 @@ {5837595d-aca9-485c-8e76-729040ce4b0b} - + {f6008d6a-6d39-4b68-840e-e7ac8ed855da} - + {048e1ec4-64fe-4aac-b524-1bd56a1fc726} diff --git a/Nodes/Nodes.vcxproj b/Nodes/Nodes.vcxproj index 750bbda270..9fd2f17b4b 100644 --- a/Nodes/Nodes.vcxproj +++ b/Nodes/Nodes.vcxproj @@ -37,14 +37,14 @@ - + - + @@ -222,6 +222,12 @@ + + + + + + @@ -237,6 +243,7 @@ + @@ -249,6 +256,7 @@ + @@ -269,6 +277,18 @@ NotUsing NotUsing + + NotUsing + NotUsing + + + NotUsing + NotUsing + + + NotUsing + NotUsing + NotUsing NotUsing @@ -287,6 +307,7 @@ + @@ -297,6 +318,7 @@ + @@ -415,16 +437,16 @@ - + {ba65a9dd-2be2-4ff8-a9c6-6ac6624cddc3} - + {cd4455e0-0454-4c3c-bb42-9d15d16a34dd} - + {c087079e-2a0e-4b85-a479-c28e2d01a048} - + {048e1ec4-64fe-4aac-b524-1bd56a1fc726} diff --git a/Nodes/Nodes.vcxproj.filters b/Nodes/Nodes.vcxproj.filters index 650bfedf99..3212378133 100644 --- a/Nodes/Nodes.vcxproj.filters +++ b/Nodes/Nodes.vcxproj.filters @@ -106,6 +106,27 @@ {8f8ef269-fbcf-420a-9cb9-1ce43874f795} + + {369c51fb-316f-4036-99cc-3af25830ccee} + + + {7a315213-f9a9-4305-8cb8-0e4ae538dac5} + + + {572dca21-efbb-413b-8518-6b4ddf0a74ee} + + + {4b9b3a92-f225-4f51-9bd7-6402f7b8f820} + + + {e43da1d4-c1e0-4510-80e9-682df1106e54} + + + {983f696e-bb63-42b2-9bb5-109a870fab75} + + + {9468ac5a-1db1-4d7f-9a59-ed867c37a682} + @@ -591,6 +612,28 @@ src\ofxRulr\Nodes\Data\Channels\Generator + + + addons\ofxTriangle\src + + + addons\ofxTriangle\libs\Triangle\include + + + addons\ofxTriangle\libs\Triangle\include + + + addons\ofxTriangle\libs\Triangle\include + + + addons\ofxTriangle\libs\Triangle\include + + + addons\ofxTriangle\libs\Triangle\include + + + src\ofxRulr\Nodes\Export + @@ -704,6 +747,19 @@ src\ofxRulr\Nodes\Data\Channels\Generator + + src\ofxRulr\Nodes\Procedure\Calibrate + + + addons\ofxTriangle\src + + + addons\ofxTriangle\libs\Triangle\src + + + addons\ofxTriangle\libs\Triangle\src + + diff --git a/Nodes/ofxRulr_Nodes.props b/Nodes/ofxRulr_Nodes.props index 2935c9cd96..ecbe12e10f 100644 --- a/Nodes/ofxRulr_Nodes.props +++ b/Nodes/ofxRulr_Nodes.props @@ -10,7 +10,7 @@ - ..\..\..\addons\ofxTriangulate\src;..\..\..\addons\ofxSpinCursor\src;..\..\..\addons\ofxGLM\src;..\..\..\addons\ofxRulr\Nodes\src;..\..\..\addons\ofxAssimpModelLoader\libs\assimp\include;..\..\..\addons\ofxAssimpModelLoader\src;%(AdditionalIncludeDirectories) + ..\..\..\addons\ofxTriangle\libs\triangle\include;..\..\..\addons\ofxTriangle\src;..\..\..\addons\ofxTriangulate\src;..\..\..\addons\ofxSpinCursor\src;..\..\..\addons\ofxGLM\src;..\..\..\addons\ofxRulr\Nodes\src;..\..\..\addons\ofxAssimpModelLoader\libs\assimp\include;..\..\..\addons\ofxAssimpModelLoader\src;%(AdditionalIncludeDirectories) diff --git a/Nodes/src/ofxRulr/Nodes/DeclareNodes.cpp b/Nodes/src/ofxRulr/Nodes/DeclareNodes.cpp index b77d668a5a..43b1c100b3 100644 --- a/Nodes/src/ofxRulr/Nodes/DeclareNodes.cpp +++ b/Nodes/src/ofxRulr/Nodes/DeclareNodes.cpp @@ -10,6 +10,8 @@ #include "ofxRulr/Nodes/DMX/Sharpy.h" #include "ofxRulr/Nodes/DMX/AimMovingHeadAt.h" +#include "ofxRulr/Nodes/Export/Mesh.h" + #include "ofxRulr/Nodes/Item/Board.h" #include "ofxRulr/Nodes/Item/Camera.h" //#include "Nodes/Item/Model.h" @@ -19,6 +21,7 @@ #include "ofxRulr/Nodes/Procedure/Calibrate/CameraIntrinsics.h" #include "ofxRulr/Nodes/Procedure/Calibrate/HomographyFromGraycode.h" +#include "ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.h" #include "ofxRulr/Nodes/Procedure/Calibrate/ViewToVertices.h" #include "ofxRulr/Nodes/Procedure/Calibrate/MovingHeadToWorld.h" #include "ofxRulr/Nodes/Procedure/Calibrate/ProjectorFromDepthCamera.h" @@ -47,6 +50,8 @@ namespace ofxRulr { RULR_DECLARE_NODE(DMX::Sharpy); RULR_DECLARE_NODE(DMX::AimMovingHeadAt); + RULR_DECLARE_NODE(Export::Mesh); + RULR_DECLARE_NODE(Item::Board); RULR_DECLARE_NODE(Item::Camera); //RULR_DECLARE_NODE(Item::Model); @@ -56,6 +61,7 @@ namespace ofxRulr { RULR_DECLARE_NODE(Procedure::Calibrate::CameraIntrinsics); RULR_DECLARE_NODE(Procedure::Calibrate::HomographyFromGraycode); + RULR_DECLARE_NODE(Procedure::Calibrate::Mesh2DFromGraycode); RULR_DECLARE_NODE(Procedure::Calibrate::ViewToVertices); RULR_DECLARE_NODE(Procedure::Calibrate::MovingHeadToWorld); RULR_DECLARE_NODE(Procedure::Calibrate::ProjectorFromDepthCamera); diff --git a/Nodes/src/ofxRulr/Nodes/Export/Mesh.cpp b/Nodes/src/ofxRulr/Nodes/Export/Mesh.cpp new file mode 100644 index 0000000000..84b018736b --- /dev/null +++ b/Nodes/src/ofxRulr/Nodes/Export/Mesh.cpp @@ -0,0 +1,117 @@ +#include "pch_RulrNodes.h" +#include "Mesh.h" + +namespace ofxRulr { + namespace Nodes { + namespace Export { + //---------- + Mesh::Mesh() { + RULR_NODE_INIT_LISTENER; + } + + //---------- + string Mesh::getTypeName() const { + return "Export::Mesh"; + } + + //---------- + void Mesh::init() { + RULR_NODE_INSPECTOR_LISTENER; + + this->addInput>(); + } + + //---------- + void Mesh::populateInspector(ofxCvGui::InspectArguments & args) { + auto inspector = args.inspector; + + inspector->addButton("Export OBJ...", [this]() { + try { + this->exportOBJ(); + } + RULR_CATCH_ALL_TO_ALERT; + }); + + inspector->addButton("Export PLY...", [this]() { + try { + this->exportPLY(); + } + RULR_CATCH_ALL_TO_ALERT; + }); + } + + //---------- + void Mesh::exportOBJ() { + this->throwIfMissingAnyConnection(); + + auto result = ofSystemSaveDialog("mesh.obj", "Mesh file name"); + if (result.bSuccess) { + auto node = this->getInput>(); + ofMesh mesh; + node->get(mesh); + + auto file = ofstream(result.filePath, ios::out); + + file << "# Mesh exported from Rulr v" << RULR_VERSION_STRING << endl; + file << "# Source node \"" << node->getName() << "\" of type [" << node->getTypeName() << "]" << endl; + + file << endl; + + //vertices + if (mesh.hasVertices()) { + file << "# " << mesh.getNumVertices() << " vertices" << endl; + for (const auto & vertex : mesh.getVertices()) { + file << "v " << vertex.x << " " << vertex.y << " " << vertex.z << endl; + } + file << endl; + } + + //texture coordinates + if (mesh.hasTexCoords()) { + file << "# " << mesh.getNumTexCoords() << " texture coordinates" << endl; + for (const auto & textureCoordinate : mesh.getTexCoords()) { + file << "vt " << textureCoordinate.x << " " << textureCoordinate.y << " 0" << endl; + } + file << endl; + } + + //faces + if (mesh.hasIndices() && mesh.getMode() == ofPrimitiveMode::OF_PRIMITIVE_TRIANGLES) { + file << "# " << mesh.getNumIndices() / 3 << " faces" << endl; + auto indexPtr = mesh.getIndexPointer(); + + bool hasTextureCoordinates = mesh.hasTexCoords(); + for (int i = 0; i < mesh.getNumIndices(); i += 3) { + + file << "f"; + for (int j = 0; j < 3; j++) { + file << " v" << indexPtr[j]; + if (hasTextureCoordinates) { + file << "/vt" << indexPtr[j]; + } + } + file << endl; + + indexPtr += 3; + } + } + + file.close(); + } + } + + //---------- + void Mesh::exportPLY() { + this->throwIfMissingAnyConnection(); + + auto result = ofSystemSaveDialog("mesh.ply", "Mesh file name"); + if (result.bSuccess) { + auto node = this->getInput>(); + ofMesh mesh; + node->get(mesh); + mesh.save(result.filePath); + } + } + } + } +} \ No newline at end of file diff --git a/Nodes/src/ofxRulr/Nodes/Export/Mesh.h b/Nodes/src/ofxRulr/Nodes/Export/Mesh.h new file mode 100644 index 0000000000..d4d5e8ae56 --- /dev/null +++ b/Nodes/src/ofxRulr/Nodes/Export/Mesh.h @@ -0,0 +1,22 @@ +#pragma once + +#include "ofxRulr/Nodes/Base.h" + +namespace ofxRulr { + namespace Nodes { + namespace Export { + class Mesh : public Nodes::Base { + public: + Mesh(); + string getTypeName() const override; + + void init(); + + void populateInspector(ofxCvGui::InspectArguments &); + + void exportOBJ(); + void exportPLY(); + }; + } + } +} \ No newline at end of file diff --git a/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.cpp b/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.cpp new file mode 100644 index 0000000000..2637fcad5b --- /dev/null +++ b/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.cpp @@ -0,0 +1,170 @@ +#include "pch_RulrNodes.h" +#include "Mesh2DFromGraycode.h" + +#include "ofxRulr/Nodes/Procedure/Scan/Graycode.h" + +#include "ofxTriangle.h" + +namespace ofxRulr { + namespace Nodes { + namespace Procedure { + namespace Calibrate { + //---------- + Mesh2DFromGraycode::Mesh2DFromGraycode() { + RULR_NODE_INIT_LISTENER; + } + + //---------- + string Mesh2DFromGraycode::getTypeName() const { + return "Nodes::Procedure::Calibrate::MeshFrom2DGraycode"; + } + + //---------- + void Mesh2DFromGraycode::init() { + RULR_NODE_INSPECTOR_LISTENER; + RULR_NODE_SERIALIZATION_LISTENERS; + + auto graycodeInput = this->addInput(); + + auto view = make_shared(); + view->onDrawCropped += [this](ofxCvGui::Panels::BaseImage::DrawCroppedArguments & args) { + this->mesh.drawWireframe(); + }; + graycodeInput->onNewConnection += [this, view](shared_ptr graycodeNode) { + view->setDrawObject(graycodeNode->getDecoder().getCameraInProjector()); + }; + graycodeInput->onDeleteConnection += [this, view](shared_ptr graycodeNode) { + view->clearDrawObject(); + }; + this->view = view; + } + + //---------- + ofxCvGui::PanelPtr Mesh2DFromGraycode::getView() { + return this->view; + } + + //---------- + void Mesh2DFromGraycode::get(ofMesh & mesh) const { + mesh = this->mesh; + } + + //---------- + void Mesh2DFromGraycode::populateInspector(ofxCvGui::InspectArguments & args) { + auto inspector = args.inspector; + + inspector->addButton("Triangulate", [this]() { + try { + this->triangulate(); + } + RULR_CATCH_ALL_TO_ALERT; + }); + } + + //---------- + void Mesh2DFromGraycode::serialize(Json::Value & json) { + } + + //---------- + void Mesh2DFromGraycode::deserialize(const Json::Value & json) { + } + + //---------- + //from http://flassari.is/2008/11/line-line-intersection-in-cplusplus/ + ofVec2f * line_line_intersection(ofVec2f p1, ofVec2f p2, ofVec2f p3, ofVec2f p4) { + + // Store the values for fast access and easy + // equations-to-code conversion + float x1 = p1.x, x2 = p2.x, x3 = p3.x, x4 = p4.x; + float y1 = p1.y, y2 = p2.y, y3 = p3.y, y4 = p4.y; + + float d = (x1 - x2) * (y3 - y4) - (y1 - y2) * (x3 - x4); + // If d is zero, there is no intersection + if (d == 0) return NULL; + + // Get the x and y + float pre = (x1*y2 - y1*x2), post = (x3*y4 - y3*x4); + float x = (pre * (x3 - x4) - (x1 - x2) * post) / d; + float y = (pre * (y3 - y4) - (y1 - y2) * post) / d; + + // Check if the x and y coordinates are within both lines + if (x < min(x1, x2) || x > max(x1, x2) || + x < min(x3, x4) || x > max(x3, x4)) return NULL; + if (y < min(y1, y2) || y > max(y1, y2) || + y < min(y3, y4) || y > max(y3, y4)) return NULL; + + // Return the point of intersection + ofVec2f * ret = new ofVec2f(); + ret->x = x; + ret->y = y; + return ret; + } + + //---------- + void Mesh2DFromGraycode::triangulate() { + this->throwIfMissingAnyConnection(); + + auto dataSet = this->getInput()->getDataSet(); + if (!dataSet.getHasData()) { + throw(Exception("No scan data available")); + } + + //get camera coords in projector space map + const auto & cameraInProjector = dataSet.getDataInverse(); + const auto & active = dataSet.getActive(); + + const auto projectorWidth = cameraInProjector.getWidth(); + const auto projectorHeight = cameraInProjector.getHeight(); + + const auto cameraWidth = active.getWidth(); + + auto getCameraPixelPosition = [&cameraInProjector, projectorWidth, cameraWidth](int i, int j) { + const auto cameraPixelIndex = cameraInProjector.getData()[i + j * projectorWidth]; + return ofVec2f(cameraPixelIndex % cameraWidth, cameraPixelIndex / cameraWidth); + }; + auto isActive = [& cameraInProjector, &active, projectorWidth](int i, int j) { + const auto cameraPixelIndex = cameraInProjector.getData()[i + j * projectorWidth]; + const auto isActive = active.getData()[cameraPixelIndex]; + return isActive; + }; + + vector projectorSpaceActivePoints; + + //find all active pixels + for (int j = 0; j < projectorHeight; j++) { + for (int i = 0; i < projectorWidth; i++) { + if (isActive(i, j)) { + projectorSpaceActivePoints.emplace_back(ofVec2f(i, j)); + } + } + } + + //triangulate + ofMesh mesh; + { + //make vertices and tex coords + Delaunay::Point tempP; + vector delauneyPoints; + for (const auto & projectorSpaceActivePoint : projectorSpaceActivePoints) { + delauneyPoints.emplace_back(projectorSpaceActivePoint.x, projectorSpaceActivePoint.y); + mesh.addVertex(projectorSpaceActivePoint); + mesh.addTexCoord(getCameraPixelPosition(projectorSpaceActivePoint.x, projectorSpaceActivePoint.y)); + } + + //triangulate + auto delauney = make_shared(delauneyPoints); + delauney->Triangulate(); + + //apply indices + for (auto it = delauney->fbegin(); it != delauney->fend(); ++it) { + mesh.addIndex(delauney->Org(it)); + mesh.addIndex(delauney->Dest(it)); + mesh.addIndex(delauney->Apex(it)); + } + } + swap(this->mesh, mesh); + } + } + } + } +} diff --git a/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.h b/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.h new file mode 100644 index 0000000000..28fb3087a9 --- /dev/null +++ b/Nodes/src/ofxRulr/Nodes/Procedure/Calibrate/Mesh2DFromGraycode.h @@ -0,0 +1,31 @@ +#pragma once + +#include "ofxRulr/Nodes/Base.h" + +namespace ofxRulr { + namespace Nodes { + namespace Procedure { + namespace Calibrate { + class Mesh2DFromGraycode : public Nodes::Gives { + public: + Mesh2DFromGraycode(); + string getTypeName() const override; + + void init(); + ofxCvGui::PanelPtr getView() override; + + void get(ofMesh &) const override; + + void populateInspector(ofxCvGui::InspectArguments &); + void serialize(Json::Value &); + void deserialize(const Json::Value &); + + void triangulate(); + protected: + ofMesh mesh; + ofxCvGui::PanelPtr view; + }; + } + } + } +} \ No newline at end of file diff --git a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/ListProjects.cpp b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/ListProjects.cpp index d3026473b3..613b30ca5b 100644 --- a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/ListProjects.cpp +++ b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/ListProjects.cpp @@ -134,7 +134,7 @@ namespace ofxRulr { } else { auto extension = ofToLower(path.extension().string()); - if (extension == ".vcxproj") { + if (extension == ".sln") { this->projects.insert(make_pair(path, make_shared(path, locationType, relativePath))); ofxCvGui::Utils::drawProcessingNotice("Found " + ofToString(this->projects.size()) + " projects..."); } diff --git a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.cpp b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.cpp index d086eb5399..ce2c9d6548 100644 --- a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.cpp +++ b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.cpp @@ -6,6 +6,15 @@ using namespace ofxCvGui; namespace ofxRulr { namespace Nodes { namespace AppTester{ + //---------- + Project::BuildConfiguration::BuildConfiguration(Platform platform, Configuration configuration) { + this->platform = platform; + this->configuration = configuration; + + this->errors.push_back("Test error"); + this->warnings.push_back("Test error"); + } + //---------- Project::Project() { this->onDraw += [this](DrawArguments & args) { @@ -25,22 +34,13 @@ namespace ofxRulr { ofPopStyle(); //title - ofxCvGui::Utils::drawText(this->relativePath.string(), 90, 5, false); + ofxCvGui::Utils::drawText(this->relativePath.string(), 5, 5, false); }; this->elements = make_shared(); this->elements->addListenersToParent(this, true); - auto buildButton = ofxCvGui::Widgets::makeButton("Build", [this]() { - this->build(); - }); - this->elements->add(buildButton); - - this->onBoundsChange += [this, buildButton](BoundsChangeArguments & args) { - buildButton->setBounds(ofRectangle(0, 0, 80, args.localBounds.height)); - }; - - this->setHeight(50.0f); + this->rebuildGui(); } //---------- @@ -50,10 +50,12 @@ namespace ofxRulr { this->locationType = locationType; this->relativePath = relativePath; - this->configurations.insert(make_pair(Platform::Win32, Configuration::Debug)); - this->configurations.insert(make_pair(Platform::Win32, Configuration::Release)); - this->configurations.insert(make_pair(Platform::x64, Configuration::Debug)); - this->configurations.insert(make_pair(Platform::x64, Configuration::Release)); + this->buildConfigurations.push_back(make_shared(Platform::Win32, Configuration::Debug)); + this->buildConfigurations.push_back(make_shared(Platform::Win32, Configuration::Release)); + this->buildConfigurations.push_back(make_shared(Platform::x64, Configuration::Debug)); + this->buildConfigurations.push_back(make_shared(Platform::x64, Configuration::Release)); + + this->rebuildGui(); } //---------- @@ -65,20 +67,21 @@ namespace ofxRulr { void Project::build() { auto buildExe = Project::getMSBuildLocation().get(); - for (auto configuration : this->configurations) { + for (auto buildConfiguration : this->buildConfigurations) { stringstream execString; - execString << "cmd /S /c \"" << buildExe << "\" \"" << this->path.string() << "\""; - - switch (configuration.first) { + execString << "cmd /c"; + execString << " \"" << buildExe << "\""; + + switch (buildConfiguration->platform) { case Win32: - execString << " /pPlatform=Win32"; + execString << " /p:Platform=Win32"; break; case x64: - execString << " /pPlatform=x64"; + execString << " /p:Platform=x64"; break; } - switch (configuration.second) { + switch (buildConfiguration->configuration) { case Debug: execString << " /p:Configuration=Debug"; break; @@ -86,14 +89,36 @@ namespace ofxRulr { execString << " /p:Configuration=Release"; break; } - + + execString << " /verbosity:Quiet"; + + execString << " " << this->path.string(); + cout << execString << endl; - ofSystem(execString.str().c_str()); - } - + ofxCvGui::Utils::drawProcessingNotice("Building [" + this->relativePath.string() + "] " + toString(buildConfiguration->platform) + "|" + toString(buildConfiguration->configuration)); + { +#ifdef TARGET_WIN32 + auto handle = _popen(execString.str().c_str(), "r"); +#else + auto handle = popen(execString.str().c_str(), "r"); +#endif + if (!handle) { + throw(Exception("Failed to execute command [" + execString.str() + "]")); + } - system(buildExe.c_str()); + auto charachter = fgetc(handle); + while (charachter != EOF) { + cout << (char) charachter; + charachter = fgetc(handle); + } +#ifdef TARGET_WIN32 + _pclose(handle); +#else + pclose(handle); +#endif + } + } } //---------- @@ -105,29 +130,125 @@ namespace ofxRulr { //---------- void Project::serialize(Json::Value & json) { json["LocationType"] = this->locationType; + json["path"] = this->path.string(); json["relativePath"] = this->relativePath.string(); - auto & jsonConfigurations = json["configurations"]; + auto & jsonConfigurations = json["buildConfigurations"]; int i = 0; - for (const auto & configuration : this->configurations) { + for (const auto & buildConfiguration : this->buildConfigurations) { auto & jsonConfiguration = jsonConfigurations[i++]; - jsonConfiguration["Platform"] = configuration.first; - jsonConfiguration["Configuration"] = configuration.second; + jsonConfiguration["platform"] = buildConfiguration->platform; + jsonConfiguration["configuration"] = buildConfiguration->configuration; + + auto warningIndex = 0; + for (auto warning : buildConfiguration->warnings) { + jsonConfiguration["warnings"][warningIndex] = warning; + } + + auto errorIndex = 0; + for (auto error : buildConfiguration->errors) { + jsonConfiguration["errors"][errorIndex] = error; + } + + jsonConfiguration["enabled"] = buildConfiguration->enabled; } } //---------- void Project::deserialize(const Json::Value & json) { this->locationType = (LocationType) json["LocationType"].asInt(); + this->path = filesystem::path(json["path"].asString()); this->relativePath = filesystem::path(json["relativePath"].asString()); - this->configurations.clear(); - const auto & jsonConfigurations= json["configurations"]; + this->buildConfigurations.clear(); + const auto & jsonConfigurations= json["buildConfigurations"]; for (auto & jsonConfiguration : jsonConfigurations) { - auto platform = (Platform) jsonConfiguration["Platform"].asInt(); - auto configuration = (Configuration) jsonConfiguration["Configuration"].asInt(); - this->configurations.insert(make_pair(platform, configuration)); + auto platform = (Platform) jsonConfiguration["platform"].asInt(); + auto configuration = (Configuration) jsonConfiguration["configuration"].asInt(); + auto buildConfiguration = make_shared(platform, configuration); + buildConfiguration->enabled = jsonConfiguration["enabled"].asBool(); + + for (const auto & jsonWarning : jsonConfiguration["warnings"]) { + buildConfiguration->warnings.push_back(jsonWarning.asString()); + } + for (const auto & jsonError : jsonConfiguration["errors"]) { + buildConfiguration->errors.push_back(jsonError.asString()); + } } + + this->rebuildGui(); + } + + //---------- + string Project::toString(Platform platform) { + switch (platform) { + case Win32: + return "Win32"; + case x64: + return "x64"; + default: + return "Unsupported"; + } + } + + //---------- + string Project::toString(Configuration configuration) { + switch (configuration) { + case Release: + return "Release"; + case Debug: + return "Debug"; + default: + return "Unsupported"; + } + } + + //---------- + void Project::rebuildGui() { + this->elements->clear(); + + auto height = 20.0f; + + auto buildButton = ofxCvGui::Widgets::makeButton("Build", [this]() { + this->build(); + }); + this->elements->add(buildButton); + + for (auto buildConfiguration : this->buildConfigurations) { + auto element = ofxCvGui::makeElement(); + + element->onDraw += [buildConfiguration](ofxCvGui::DrawArguments & args) { + ofxCvGui::Utils::drawText(toString(buildConfiguration->platform), 0, 0, false); + ofxCvGui::Utils::drawText(toString(buildConfiguration->configuration), 50, 0, false); + + if (!buildConfiguration->warnings.empty()) { + ofxAssets::image("ofxRulr::AppTester::warning").draw(100, 20, 20); + ofxCvGui::Utils::drawText(toString(buildConfiguration->platform), 120, 0, false); + } + + if (!buildConfiguration->errors.empty()) { + ofxAssets::image("ofxRulr::AppTester::error").draw(160, 20, 20); + ofxCvGui::Utils::drawText(toString(buildConfiguration->platform), 180, 0, false); + } + }; + element->setHeight(20.0f); + height += 20.0f; + } + + this->onBoundsChange += [this, buildButton](BoundsChangeArguments & args) { + buildButton->setBounds(ofRectangle(0, 20, 80, args.localBounds.height - 20)); + auto y = 20.0f; + for (auto buildConfigurationElement : this->buildConfigurationElements) { + auto bounds = buildConfigurationElement->getBounds(); + bounds.x = buildButton->getWidth(); + bounds.width = args.localBounds.width - bounds.x; + bounds.y = y; + buildConfigurationElement->setBounds(bounds); + y += bounds.height; + } + }; + + this->setHeight(height); } } } diff --git a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.h b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.h index 95e991fcc0..3d985d24a5 100644 --- a/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.h +++ b/Plugin_AppTester/src/ofxRulr/Nodes/AppTester/Project.h @@ -19,6 +19,15 @@ namespace ofxRulr { Debug }; + struct BuildConfiguration { + BuildConfiguration(Platform, Configuration); + Platform platform; + Configuration configuration; + vector warnings; + vector errors; + bool enabled = true; + }; + enum LocationType { Addons = 0, Apps @@ -35,16 +44,21 @@ namespace ofxRulr { void serialize(Json::Value &); void deserialize(const Json::Value &); + + static string toString(Platform); + static string toString(Configuration); protected: + void rebuildGui(); + filesystem::path path; LocationType locationType; filesystem::path relativePath; - bool ignore = false; - set> configurations; + vector> buildConfigurations; ofxCvGui::ElementGroupPtr elements; + ofxCvGui::ElementSet buildConfigurationElements; }; } } diff --git a/Plugin_BlackMagic/Plugin_BlackMagic.vcxproj b/Plugin_BlackMagic/Plugin_BlackMagic.vcxproj index 252323bf06..54e4cafe07 100644 --- a/Plugin_BlackMagic/Plugin_BlackMagic.vcxproj +++ b/Plugin_BlackMagic/Plugin_BlackMagic.vcxproj @@ -56,25 +56,25 @@ - + - + - + - + @@ -141,7 +141,7 @@ - + {e57be93f-5ba0-4165-8861-df6653f11a37} diff --git a/Plugin_EnttecUsbPro/Plugin_EnttecUsbPro.sln b/Plugin_EnttecUsbPro/Plugin_EnttecUsbPro.sln index ed02156260..af30c0f389 100644 --- a/Plugin_EnttecUsbPro/Plugin_EnttecUsbPro.sln +++ b/Plugin_EnttecUsbPro/Plugin_EnttecUsbPro.sln @@ -5,15 +5,15 @@ VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_KinectForWindows2", "Plugin_KinectForWindows2.vcxproj", "{CBFC3D47-1E57-4291-90B6-C344B836B8DA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\..\addons\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\..\addons\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\..\addons\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\..\addons\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "addons", "addons", "{C7676CC7-DB5A-42C0-962F-ADB6A0FD6179}" EndProject @@ -23,9 +23,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "..\Core\Core.vcxpro EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nodes", "..\Nodes\Nodes.vcxproj", "{33D577F9-86E9-4F15-81F1-256A00BBE3EA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\..\addons\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\..\addons\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Plugin_KinectForWindows2/Plugin_KinectForWindows2.sln b/Plugin_KinectForWindows2/Plugin_KinectForWindows2.sln index 1aebb988cc..03578cc9b0 100644 --- a/Plugin_KinectForWindows2/Plugin_KinectForWindows2.sln +++ b/Plugin_KinectForWindows2/Plugin_KinectForWindows2.sln @@ -5,15 +5,15 @@ VisualStudioVersion = 14.0.23107.0 MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Plugin_KinectForWindows2", "Plugin_KinectForWindows2.vcxproj", "{CBFC3D47-1E57-4291-90B6-C344B836B8DA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxKinectForWindows2Lib", "..\..\..\addons\ofxKinectForWindows2\ofxKinectForWindows2Lib\ofxKinectForWindows2Lib.vcxproj", "{F6008D6A-6D39-4B68-840E-E7AC8ED855DA}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "openframeworksLib", "..\..\..\libs\openFrameworksCompiled\project\vs\openframeworksLib.vcxproj", "{5837595D-ACA9-485C-8E76-729040CE4B0B}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvGuiLib", "..\..\..\addons\ofxCvGui\ofxCvGuiLib\ofxCvGuiLib.vcxproj", "{6F0DDB4F-4014-4433-919B-9D956C034BAD}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxPluginLib", "..\..\..\addons\ofxPlugin\ofxPluginLib\ofxPluginLib.vcxproj", "{68B9239B-5AE6-45C0-B1CB-6FC6B58BB6EE}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxMachineVisionLib", "..\..\..\addons\ofxMachineVision\ofxMachineVisionLib\ofxMachineVisionLib.vcxproj", "{CD4455E0-0454-4C3C-BB42-9D15D16A34DD}" EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "addons", "addons", "{C7676CC7-DB5A-42C0-962F-ADB6A0FD6179}" EndProject @@ -23,9 +23,9 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Core", "..\Core\Core.vcxpro EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Nodes", "..\Nodes\Nodes.vcxproj", "{33D577F9-86E9-4F15-81F1-256A00BBE3EA}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxCvMinLib", "..\..\..\addons\ofxCvMin\ofxCvMinLib\ofxCvMinLib.vcxproj", "{FAA73572-FD12-41FA-8FBE-CB47482D2D87}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ofxRayLib", "..\..\..\addons\ofxRay\ofxRayLib\ofxRayLib.vcxproj", "{048E1EC4-64FE-4AAC-B524-1BD56A1FC726}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution diff --git a/Plugin_KinectForWindows2/Plugin_KinectForWindows2.vcxproj b/Plugin_KinectForWindows2/Plugin_KinectForWindows2.vcxproj index 99ae48c141..471f92d669 100644 --- a/Plugin_KinectForWindows2/Plugin_KinectForWindows2.vcxproj +++ b/Plugin_KinectForWindows2/Plugin_KinectForWindows2.vcxproj @@ -56,20 +56,20 @@ - + - + - + @@ -77,7 +77,7 @@ - + @@ -167,7 +167,7 @@ - + {f6008d6a-6d39-4b68-840e-e7ac8ed855da} diff --git a/Plugin_MultiTrack/Plugin_MultiTrack.vcxproj b/Plugin_MultiTrack/Plugin_MultiTrack.vcxproj index cc4723d3d0..d9de49e329 100644 --- a/Plugin_MultiTrack/Plugin_MultiTrack.vcxproj +++ b/Plugin_MultiTrack/Plugin_MultiTrack.vcxproj @@ -57,25 +57,25 @@ - + - + - + - + @@ -164,7 +164,7 @@ - + {f6008d6a-6d39-4b68-840e-e7ac8ed855da} diff --git a/RulrLibrary/RulrLibrary.vcxproj b/RulrLibrary/RulrLibrary.vcxproj index 721707d63e..6f3c5e28e3 100644 --- a/RulrLibrary/RulrLibrary.vcxproj +++ b/RulrLibrary/RulrLibrary.vcxproj @@ -105,7 +105,7 @@ {5837595d-aca9-485c-8e76-729040ce4b0b} - + {630936f8-c65f-4ab9-92ad-80569eaa7782} @@ -115,5 +115,9 @@ {33d577f9-86e9-4f15-81f1-256a00bbe3ea} + + + + \ No newline at end of file