Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/spicycactuar/half-edge
Triangle mesh rendered backed by a half-edge data structure
https://github.com/spicycactuar/half-edge
computer-graphics cpp geometry-processing half-edge-data-structure opengl qt5
Last synced: about 1 month ago
JSON representation
Triangle mesh rendered backed by a half-edge data structure
- Host: GitHub
- URL: https://github.com/spicycactuar/half-edge
- Owner: SpicyCactuar
- Created: 2024-11-11T21:50:38.000Z (about 1 month ago)
- Default Branch: main
- Last Pushed: 2024-11-11T22:00:44.000Z (about 1 month ago)
- Last Synced: 2024-11-11T22:33:58.544Z (about 1 month ago)
- Topics: computer-graphics, cpp, geometry-processing, half-edge-data-structure, opengl, qt5
- Language: C++
- Homepage:
- Size: 0 Bytes
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Half Edge
Qt application that displays triangle meshes backed by half-edge data structure.
The program supports triangle soup (`.tri`) and custom half-edge (`.hds`) files, with samples being provided.
In addition, the mesh can be subdivided using the loop subdivision technique.## Project Structure
```plaintext
half-edge/
├── src/ # Source code
├── assets/ # Static assets
├── tri # .tri files
├── hds # .hds files
├── build/ # Generated build files
├── bin/ # Generated executable files
├── half-edge.pro # QMake project
└── README.md # Project README
```## Build
```bash
qmake
make
```## Run
```bash
bin/half-edge <.tri or .hds file>
```Example `.tri`:
```bash
bin/half-edge assets/tri/cube.tri
```Example `.hds`:
```bash
bin/half-edge assets/hds/cube.hds
```## 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.
## Showcase
![half-edge](https://github.com/user-attachments/assets/03991a61-96ee-4e66-b433-41b3744409dc)
## Controls
| Key(s) | Action |
|--------------------------|------------------------------------|
| `(X, Y, Z)` Sliders | Adjust the camera position |
| `Model` ArcBall | Rotate mesh |
| `Light` ArcBall | Rotate directional light |
| `Flat Normals` Checkbox | Toggle per vertex/per face normals |
| `Show Vertices` Checkbox | Render spheres around vertices |
| `Vertex Size` Slider | Control size of vertex spheres |
| `Subdivisions [0, 8]` | Control current subdivision level |Subdivisions are computed lazily, but the computation occurs on the main thread.
If the mesh is sufficiently large, the program stalls.## TODOs
* [ ] Parallelize subdivision computation