{"id":21488520,"url":"https://github.com/spicycactuar/unwrap","last_synced_at":"2026-04-15T18:32:23.048Z","repository":{"id":262732251,"uuid":"888178702","full_name":"SpicyCactuar/unwrap","owner":"SpicyCactuar","description":"Triangle mesh UV mapping","archived":false,"fork":false,"pushed_at":"2025-02-20T23:09:02.000Z","size":24,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-21T00:33:04.607Z","etag":null,"topics":["computer-graphics","cpp","floaters","half-edge-data-structure","opengl","qt5","texture-synthesis"],"latest_commit_sha":null,"homepage":"","language":"C++","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/SpicyCactuar.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":"2024-11-14T00:23:45.000Z","updated_at":"2025-02-20T23:09:08.000Z","dependencies_parsed_at":"2024-11-14T01:24:05.276Z","dependency_job_id":"324f79ad-4705-4487-b71a-16faa9376dd8","html_url":"https://github.com/SpicyCactuar/unwrap","commit_stats":null,"previous_names":["spicycactuar/unwrap"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpicyCactuar%2Funwrap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpicyCactuar%2Funwrap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpicyCactuar%2Funwrap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SpicyCactuar%2Funwrap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SpicyCactuar","download_url":"https://codeload.github.com/SpicyCactuar/unwrap/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244019592,"owners_count":20384791,"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":["computer-graphics","cpp","floaters","half-edge-data-structure","opengl","qt5","texture-synthesis"],"created_at":"2024-11-23T14:09:44.835Z","updated_at":"2026-04-15T18:32:22.990Z","avatar_url":"https://github.com/SpicyCactuar.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Unwrap\n\n![unwrap](https://github.com/user-attachments/assets/4ba166eb-481c-40d4-a2f9-f14222a02293)\n\nQt application that leverages [Floater's algorithm](https://www.cs.jhu.edu/~misha/Fall09/Floater97.pdf) to unwrap the vertices of a triangle mesh into a texture's UV coordinates.\nThe backing structure is a half-edge graph, but the application does not require meshes to be manifold.\n\n## Project Structure\n\n```plaintext\nunwrap/\n├── src/                   # Source code\n├── assets/                # Static assets (.obj files)\n├── unwrap.pro             # QMake project\n└── README.md              # Project README\n```\n\n## Build\n\n```bash\nqmake\nmake\n```\n\n## Run\n\n```bash\nbin/unwrap \u003c.obj file\u003e\n```\n\nExample:\n\n```bash\nbin/unwrap assets/rectangle.obj\n```\n\n## Controls\n\n| Key(s)                        | Action                                                   |\n|-------------------------------|----------------------------------------------------------|\n| `(X, Y, Z)` Sliders           | Adjust the camera position                               |\n| `Model` ArcBall               | Rotate mesh                                              |\n| `Boundary` Checkbox           | Toggle mesh/boundary only visibility                     |\n| `UVW -\u003e RGB` Checkbox         | Paint vertices as `[u, v, w = 0]`                        |\n| `Nrm -\u003e RGB` Checkbox         | Paint faces as `[nx, ny, nz]`                            |\n| `Texture` Checkbox            | Toggle wrapped/unwrapped mesh, fixes camera when checked |\n| `Write unwrapped .obj` Button | Write `.obj` with texture coordinates                    |\n| `Render to .png` Button       | Write widget contents to `.png` file                     |\n\n## Technologies\n\n* **C++**: `\u003e= C++17`\n* **Qt**: `5.12.x`\n* **OpenGL**: `\u003e= 4.0`\n\nNewer versions of Qt might work correctly, if no breaking changes that affect the application were introduced.\n\nMesh unwrapping is done on startup. Window will not appear until it is finished.\n\n## TODOs\n\n* [ ] Accept `.ply` files and showcase complex example\n* [ ] Parallelize Floater's computation\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspicycactuar%2Funwrap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspicycactuar%2Funwrap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspicycactuar%2Funwrap/lists"}