Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spicycactuar/unwrap
Triangle mesh UV mapping
https://github.com/spicycactuar/unwrap
computer-graphics cpp floaters half-edge-data-structure opengl qt5 texture-synthesis
Last synced: about 1 month ago
JSON representation
Triangle mesh UV mapping
- Host: GitHub
- URL: https://github.com/spicycactuar/unwrap
- Owner: SpicyCactuar
- Created: 2024-11-14T00:23:45.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-22T20:51:56.000Z (about 1 month ago)
- Last Synced: 2024-11-22T21:29:02.466Z (about 1 month ago)
- Topics: computer-graphics, cpp, floaters, half-edge-data-structure, opengl, qt5, texture-synthesis
- Language: C++
- Homepage:
- Size: 20.5 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Unwrap
Qt application that utilises Floater's algorithm to unwrap the vertices of a triangle mesh into UV coordinates.
The backing structure is a half-edge graph, but the application does not require meshes to be manifold.![unwrap](https://github.com/user-attachments/assets/4ba166eb-481c-40d4-a2f9-f14222a02293)
## Project Structure
```plaintext
unwrap/
├── src/ # Source code
├── assets/ # Static assets (.obj files)
├── unwrap.pro # QMake project
└── README.md # Project README
```## Build
```bash
qmake
make
```## Run
```bash
bin/unwrap <.obj file>
```Example:
```bash
bin/unwrap assets/rectangle.obj
```## Controls
| Key(s) | Action |
|-------------------------------|----------------------------------------------------------|
| `(X, Y, Z)` Sliders | Adjust the camera position |
| `Model` ArcBall | Rotate mesh |
| `Boundary` Checkbox | Toggle mesh/boundary only visibility |
| `UVW -> RGB` Checkbox | Paint vertices as `[u, v, w = 0]` |
| `Nrm -> RGB` Checkbox | Paint faces as `[nx, ny, nz]` |
| `Texture` Checkbox | Toggle wrapped/unwrapped mesh, fixes camera when checked |
| `Write unwrapped .obj` Button | Write `.obj` with texture coordinates |
| `Render to .png` Button | Write widget contents to `.png` file |## Technologies
* **C++**: `>= C++17`
* **Qt**: `5.12.x`
* **OpenGL**: `>= 4.0`Newer versions of Qt might work correctly, if no breaking changes that affect the application were introduced.
Mesh unwrapping is done on startup. Window will not appear until it is finished.
## TODOs
* [ ] Accept `.ply` files and showcase complex example
* [ ] Parallelize Floater's computation