diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..1c8e96d --- /dev/null +++ b/.gitignore @@ -0,0 +1,14 @@ +CMakeLists.txt.user +CMakeCache.txt +CMakeFiles +CMakeScripts +Testing +Makefile +cmake_install.cmake +install_manifest.txt +compile_commands.json +CTestTestfile.cmake +_deps +CMakeUserPresets.json +build + diff --git a/CMakeLists.txt b/CMakeLists.txt index f2e3191..87d4c1d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,11 +1,9 @@ cmake_minimum_required(VERSION 3.13 FATAL_ERROR) -find_package(CUDAToolkit 11 REQUIRED) - project(TinyVBD LANGUAGES CXX) ## Use C++11 -set (CMAKE_CXX_STANDARD 11) +set (CMAKE_CXX_STANDARD 17) find_package(Eigen3 REQUIRED) include_directories(${EIGEN3_INCLUDE_DIR}) diff --git a/README.md b/README.md index 71d5157..64803e2 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,12 @@ A tiny version of VBD, focused on mass spring strand simulation. This code is a tiny demo of our Siggraph 2024 paper:
[Vertex Block Descent](https://arxiv.org/abs/2403.06321 "The NEXT simulator") -The only dependency is Eigen3. +The only dependency is Eigen3. https://eigen.tuxfamily.org/index.php?title=Main_Page -If you compile and run it, it will output the simulation results as a series of JSON files to C:\Data\Test_20Verts_30degree_withSkip_stiffness1e8. -You can use the VisualizeStrand.blend to convert them to obj files for visualization. +If you compile and run it, it will output the simulation results as a series of JSON files to a subdirectory of where it is run. + +You can use the VisualizeStrand.blend to convert those to fbx files for visualization. This is a Blender python scripting file that is used to convert the JSON output of the program into geometry. The default configuration will run the high mass ratio experiment. -Except for the default configuration, there are other experiment configs that you can try, all you need is to uncomment those options. \ No newline at end of file +Except for the default configuration, there are other experiment configs that you can try, all you need is to uncomment those options. + diff --git a/VisualizeStrand.blend b/VisualizeStrand.blend index a8d2ccb..5272ab7 100644 Binary files a/VisualizeStrand.blend and b/VisualizeStrand.blend differ diff --git a/main.cpp b/main.cpp index a4c4278..b0414dd 100644 --- a/main.cpp +++ b/main.cpp @@ -10,7 +10,12 @@ #endif inline bool saveJson(std::string filePath, nlohmann::json& j, int indent = -1) { + std::filesystem::path path(filePath); + + std::filesystem::create_directories(path.parent_path()); + std::ofstream ofs(filePath); + if (ofs.is_open()) { try @@ -120,7 +125,7 @@ struct StrandSim std::vector ls; float m0 = 1; float m1 = 1000; - params.outPath = "C:\\Data\\Test4_20Verts_30degree_withSkip_stiffness1e8"; + params.outPath = "Test4_20Verts_30degree_withSkip_stiffness1e8"; // this is a multi-platform toy app, let the files land where they do std::vector ms; @@ -159,7 +164,7 @@ struct StrandSim bool addSkipSpring = true; float skipSpringStrength = 100; float tanAngle = 0.57735f; // 30 deg - params.outPath = "C:\\Data\\Test4_20Verts_30degree_withSkip_stiffness1e8"; + params.outPath = "Test4_20Verts_30degree_withSkip_stiffness1e8"; // this is a multi-platform toy app, let the files land where they do params.useAcceleration = false; params.accelerationRho = 0.5;