{"id":21354667,"url":"https://github.com/iveevi/ngf","last_synced_at":"2025-04-05T18:06:20.466Z","repository":{"id":197315741,"uuid":"678469370","full_name":"iveevi/ngf","owner":"iveevi","description":"Source code for the SIGGRAPH 2024 conference paper \"Neural Geometry Fields for Meshes\"","archived":false,"fork":false,"pushed_at":"2025-02-12T05:39:55.000Z","size":307187,"stargazers_count":140,"open_issues_count":2,"forks_count":8,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-03-29T17:06:13.516Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://iveevi.github.io/ngf/index.html","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/iveevi.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2023-08-14T16:15:26.000Z","updated_at":"2025-03-19T14:55:59.000Z","dependencies_parsed_at":null,"dependency_job_id":"b8728d39-4ff2-40af-8879-38a2bc5b9f22","html_url":"https://github.com/iveevi/ngf","commit_stats":null,"previous_names":["vedavamadathil/nsc","iveevi/ngf"],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iveevi%2Fngf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iveevi%2Fngf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iveevi%2Fngf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/iveevi%2Fngf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/iveevi","download_url":"https://codeload.github.com/iveevi/ngf/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247378140,"owners_count":20929296,"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":[],"created_at":"2024-11-22T04:14:11.531Z","updated_at":"2025-04-05T18:06:20.442Z","avatar_url":"https://github.com/iveevi.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Neural Geometry Fields for Meshes\n\n![](resources/nice.jpg)\n\n# Training\n\n**Requirements:** NVIDIA GPU (with CUDA support), Python, Assimp\n\nThe necessary python packages are listed in `requirements.txt` so installing\nthem with `pip install -r requirements.txt` is simplest. If there are errors in\ninstall the library in `extensions` it can likely be resolved by installing\nPyTorch and/or Wheel beforehand.\n\nThen run `python source/train.py` on any target mesh:\n\n```\nusage: train.py [-h] [--mesh MESH] [--lod LOD] [--features FEATURES] [--display DISPLAY] [--batch BATCH] [--fixed-seed]\n\noptions:\n  -h, --help           show this help message and exit\n  --mesh MESH          Target mesh\n  --lod LOD            Number of patches to partition\n  --features FEATURES  Feature vector size\n  --display DISPLAY    Display the result after training\n  --batch BATCH        Batch size for training\n  --fixed-seed         Fixed random seed (for debugging)\n```\n\nThe results of the training will be placed into a local `results` directory as follows:\n\n```\nresults\n├── binaries           (Binaries for trained neural geometry fields)\n├── loss               (Loss plots)\n├── meta               (Generic metadata)\n├── quadrangulated     (Partitioned surfaces)\n├── stl                (Final surfaces exported as STLs)\n└── torched            (Pytorch binary data)\n```\n\nThe memory usage is relatively modest (under 8 GB for the default 1K patches\nand 10 feature channels), but it can be adjusted with the batch size option.\n\nSome tips to consider if errors appear:\n\n* The STL format for meshes is most reliable; if the program complains from the\n  meshio library, try again with a STL rather than an OBJ or etc.\n* PyMeshLab is used for simplification and quadrangulation, but the execution\n  is not always reliable. For this reason we time out the quadrangulation process\n  after a minute. If this happens, the target mesh is likely too large.\n\n# Rasterization\n\n![](resources/rasterizer.png)\n\n**Requirements:** Vulkan, GLFW, CMake, Mesh shaders[^1]\n\nSource code for the real-time rasterizer is provided in the `rasterizer`\ndirectory. Make sure that the submodules have also been cloned. We rely on CMake\nto compile the program:\n\n```\ncmake -B build .\ncmake --build build -j\n```\n\nTo run the rasterizer, execute the resulting `build/testbed` binary by\nproviding a path to the neural geometry field binary file (e.g. within\n`results/binaries`). For example:\n\n```\n./build/testbed results/binaries/nefertiti-lod1000-f20.bin\n```\n\nA few binaries have been provided in the `resources/samples` directory to\nexplore the rasterizer on pretrained NGFs.\n\nHere are some performance statistics for the rasterizer:\n\n| GPU             | Patch Count | Framerate (Frametime) |\n| --------------- | ----------- | --------------------- |\n| RTX 3060 Mobile | 1K          | 250 FPS  (4 ms)       |\n| RTX 3060 Mobile | 2.5K        | 100 FPS  (10 ms)      |\n| RTX 4090        | 1K          | 1200 FPS (0.8 ms)     |\n| RTX 4090        | 2.5K        | 600 FPS  (1.6 ms)     |\n\n[^1]: Check `vulkaninfo` from the command-line or [search for your GPU model here.](https://vulkan.gpuinfo.org/listdevicescoverage.php?extension=VK_EXT_mesh_shader\u0026platform=all)\n\n# Citation\n\n```\n@inproceedings{vs2024ngfs,\n  title = {Neural Geometry Fields for Meshes},\n  author = {Sivaram, Venkataram and Ramamoorthi, Ravi and Li, Tzu-Mao},\n  numpages = {11},\n  year = {2024},\n  series = {SIGGRAPH '24}\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiveevi%2Fngf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fiveevi%2Fngf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fiveevi%2Fngf/lists"}