{"id":20859926,"url":"https://github.com/duxingyi-charles/robust-implicit-surface-networks","last_synced_at":"2025-05-12T08:32:50.260Z","repository":{"id":50730674,"uuid":"515710540","full_name":"duxingyi-charles/Robust-Implicit-Surface-Networks","owner":"duxingyi-charles","description":"The code of paper \"Robust Computation of Implicit Surface Networks for Piecewise Linear Functions\" (SIGGRAPH 2022)","archived":false,"fork":false,"pushed_at":"2024-05-21T21:55:03.000Z","size":806,"stargazers_count":12,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-05-22T16:42:31.746Z","etag":null,"topics":["computational-geometry","computer-graphics","geometry-processing","robustness"],"latest_commit_sha":null,"homepage":"https://duxingyi-charles.github.io/publication/robust-computation-of-implicit-surface-networks-for-piecewise-linear-functions/","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/duxingyi-charles.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-07-19T19:07:38.000Z","updated_at":"2024-05-28T20:08:54.799Z","dependencies_parsed_at":"2024-05-28T20:08:54.245Z","dependency_job_id":"a95f4e4f-9274-438d-9cdd-6b36c2adc52f","html_url":"https://github.com/duxingyi-charles/Robust-Implicit-Surface-Networks","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duxingyi-charles%2FRobust-Implicit-Surface-Networks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duxingyi-charles%2FRobust-Implicit-Surface-Networks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duxingyi-charles%2FRobust-Implicit-Surface-Networks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/duxingyi-charles%2FRobust-Implicit-Surface-Networks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/duxingyi-charles","download_url":"https://codeload.github.com/duxingyi-charles/Robust-Implicit-Surface-Networks/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225130695,"owners_count":17425506,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["computational-geometry","computer-graphics","geometry-processing","robustness"],"created_at":"2024-11-18T04:53:58.918Z","updated_at":"2024-11-18T04:53:59.595Z","avatar_url":"https://github.com/duxingyi-charles.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Robust Computation of Implicit Surface Networks for Piecewise Linear Functions\n\n![](https://user-images.githubusercontent.com/3606672/187550647-900c8e12-bd57-4270-97da-15a0180e0c39.png)\n\n[Xingyi Du](https://duxingyi-charles.github.io/), [Qingnan Zhou](https://research.adobe.com/person/qingnan-zhou/),  [Nathan Carr](https://research.adobe.com/person/nathan-carr/), [Tao Ju](https://www.cse.wustl.edu/~taoju/)\n\u003cbr/\u003e*ACM Transaction on Graphics (Proceedings of SIGGRAPH 2022)*\u003cbr/\u003e\n\n[`Project Page`](https://duxingyi-charles.github.io/publication/robust-computation-of-implicit-surface-networks-for-piecewise-linear-functions/)\n\n## Build\n\nUse the following commands to build on Mac.\n\n    mkdir build\n    cd build\n    cmake -DCMAKE_BUILD_TYPE=Release ..\n    make\n\nProgram `impl_arrangement` and `material_interface` will be generated in the `build` subdirectory.\n\n## Usage\n\n### `impl_arrangement`\n\nThe program creates a polygonal mesh discretization of the implicit arrangement of a collection of implicit functions on a given tetrahedron grid.\n\nUsage: \n\n    ./impl_arrangement [OPTIONS] config_file\n\nOptions:\n- -h,--help: Print help message and exit.\n- -T,--timing-only: When set, the program only records timing without saving results.\n- -R,--robust-test: When set, the program performs robustness test. The program will run twice with different ordering of input functions, and check if the results are consistent.\n\nPositionals:\n- `config_file` (REQUIRED): Configuration file, specifying input/output paths and algorithm parameters.\n\nThe `config_file` should be a JSON file with the following named parameters:\n- `tetMeshFile`: Path to the file storing input tetrahedral grid. It is a JSON file storing vertex coordinates and tetrahedrons. See `examples/tet_mesh/tet5_grid_10k.json` for a concrete example.\n- `funcFile`: Path to the file storing input implicit functions. See this [repo](https://github.com/duxingyi-charles/implicit_functions) for details about the file format.\n- `outputDir`: Path to the directory to store output files.\n- `useLookup`: Whether to use look-up tables to accelerate tetrahedron processing (section 6 of our paper). Default value is \"true\".\n- `useSecondaryLookup`: Whether to use look-up tables for tetrahedral with two active functions (section 6 of our paper). Default value is \"true\".\n- `useTopoRayShooting`: Whether to use topological ray shooting to compute the spatial decomposition induced by the arrangement (section 7 of our paper). Default value is \"true\".\n\nNote that `tetMeshFile`, `funcFile` and `outputDir` can be either absolute\nor relative paths.  In the case of relative paths, they are relative with\nrespect to the directory containing the configuration file.\n\nAn example config file is `examples/implicit_arrangement/config.json`.\n\nTest:\n\ncompute implicit arrangement\n\n    ./impl_arrangement ../examples/implicit_arrangement/config.json\n\nrecord timing without saving results\n\n    ./impl_arrangement -T ../examples/implicit_arrangement/config.json\n\nperform robustness test\n\n    ./impl_arrangement -R ../examples/implicit_arrangement/config.json\n\n### `material_interface`\n\nThe program creates a polygonal mesh discretization of the material interfaces of a collection of material functions on a given tetrahedron grid.\n\nUsage:\n\n    ./material_interface [OPTIONS] config_file\n\nOptions:\n- -h,--help: Print help message and exit.\n- -T,--timing-only: When set, the program only records timing without saving results.\n- -R,--robust-test: When set, the program performs robustness test. The program will run twice with different ordering of input functions, and check if the results are consistent.\n\nPositionals:\n- `config_file` (REQUIRED): Configuration file, specifying input/output paths and algorithm parameters.\n\nThe `config_file` should be a JSON file with the following named parameters:\n- `tetMeshFile`: Path to the file storing input tetrahedral grid. It is a JSON file storing vertex coordinates and tetrahedrons. See `examples/tet_mesh/tet5_grid_10k.json` for a concrete example.\n- `funcFile`: Path to the file storing input material functions. See this [repo](https://github.com/duxingyi-charles/implicit_functions) for details about the file format.\n- `outputDir`: Path to the directory to store output files.\n- `useLookup`: Whether to use look-up tables to accelerate tetrahedron processing (section 6 of our paper). Default value is \"true\".\n- `useSecondaryLookup`: Whether to use look-up tables for tetrahedral with three active functions (section 6 of our paper). Default value is \"true\".\n- `useTopoRayShooting`: Whether to use topological ray shooting to compute the spatial decomposition induced by the material interfaces (section 7 of our paper). Default value is \"true\".\n\nNote that `tetMeshFile`, `funcFile` and `outputDir` can be either absolute\nor relative paths.  In the case of relative paths, they are relative with\nrespect to the directory containing the configuration file.\n\nAn example config file is `examples/material_interface/config.json`.\n\nTest:\n\ncompute material interface\n\n    ./material_interface ../examples/material_interface/config.json\n\nrecord timing without saving results\n\n    ./material_interface -T ../examples/material_interface/config.json\n\nperform robustness test\n\n    ./material_interface -R ../examples/material_interface/config.json\n\n## Output\n\nThe complete set of output files include data files (`mesh.json`, `mesh_patches.msh`, `mesh_chains.msh` and `mesh_cells.msh`)\nand information files (`timings.json` and `stats.json`). In timing-only mode (`-T`), the program only generates information files.\nIn robustness test mode (`-R`), no output files are generated. The result of the robustness test is in command line output.\n\n### data files\n\n`mesh.json`:\nJSON file storing the following key-value pairs\n\n| key     | value                         | description                                                                                                                                                                                                                                              |\n|---------|-------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| points  | #Vx3 matrix of double numbers | Vertex coordinates of the surface network mesh.                                                                                                                                                                                                          |\n| faces   | vector of vector of integers  | Polygonal faces of the surface network mesh. Each face is encoded by a vector of indices of face boundary vertices.                                                                                                                                      |\n| edges   | #Ex2 matrix of integers       | Edges of the surface network mesh. Each edge is encoded by a pair of vertex indices.                                                                                                                                                                     |\n| chains  | vector of vector of integers  | Chains of non-manifold edges. Each chain is encoded by a vector of edge indices.                                                                                                                                                                         |\n| corners | vector of integers            | Indices of non-manifold vertices.                                                                                                                                                                                                                        |\n| patches | vector of vector of integers  | A patch is a connected component of faces bounded by non-manifold edges.  Each patch is encoded by a vector of face indices.                                                                                                                             |\n| shells  | vector of vector of integers  | A shell is a connected component of the boundary of a 3D region partitioned by the surface network. Each shell is encoded by a vector of oriented patch indices. The positive side of patch i has index 2i. The negative side of patch i has index 2i+1. |\n| cells   | vector of vector of integers  | A cell is a 3D region partitioned by the surface network. Each cell is encoded by a vector of shell indices.                                                                                                                                             |\n\nNote: all indices start from 0.\n\n`mesh_patches.msh`, `mesh_chains.msh` and `mesh_cells.msh` store the same data as chains, patches and cells in `mesh.json`, but in MSH format.\nWe can view these MSH files using [Gmsh](https://gmsh.info/).\n\n### information files\n\n`timing.json`: timing of different stages of our pipeline.\n\n`stats.json`: statistics of intermediate data in our pipeline, e.g., number of surface network mesh vertices.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduxingyi-charles%2Frobust-implicit-surface-networks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fduxingyi-charles%2Frobust-implicit-surface-networks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fduxingyi-charles%2Frobust-implicit-surface-networks/lists"}