![](https://static.wixstatic.com/media/ea75ae_57c72a4124d448a087fd2b0a8558bc6b~mv2.png/v1/fill/w_800,h_588,al_c,q_90,enc_auto/ea75ae_57c72a4124d448a087fd2b0a8558bc6b~mv2.png)
The advantage of using half edge to construct 3D geometry is that the adjacency information is preserved, and we can easily get the face next to current face, edge next to current vertex, and edges surrounding a face, etc.
Below is a simple application created in QT I did in my school assignment. The geometry is constructed with half edge data structure, and when I click the half edge, face or vertex, the corresponding component will be highlighted in color. I can change the selected face color, or selected vertex position.
![](https://static.wixstatic.com/media/ea75ae_a364315bc87841f69115d185a2faa256~mv2.png/v1/fill/w_980,h_412,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_a364315bc87841f69115d185a2faa256~mv2.png)
![](https://static.wixstatic.com/media/ea75ae_18c58e40d7c942a8b9f06d3c15fb5f88~mv2.png/v1/fill/w_980,h_413,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_18c58e40d7c942a8b9f06d3c15fb5f88~mv2.png)
![](https://static.wixstatic.com/media/ea75ae_dd37f07f85fe47a189ee3b9a85f1004a~mv2.png/v1/fill/w_980,h_413,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_dd37f07f85fe47a189ee3b9a85f1004a~mv2.png)
Knowing the adjacency information allows us to perform catmull clark subdivision.
![](https://static.wixstatic.com/media/ea75ae_0e57030b3ca94b6ab6662dd64c94f1d1~mv2.png/v1/fill/w_980,h_476,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_0e57030b3ca94b6ab6662dd64c94f1d1~mv2.png)
![](https://static.wixstatic.com/media/ea75ae_bfc71eb4fd3a40c78d170c4bffa56cc4~mv2.png/v1/fill/w_980,h_474,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_bfc71eb4fd3a40c78d170c4bffa56cc4~mv2.png)
![](https://static.wixstatic.com/media/ea75ae_d050bfad71db48669736eafac6da9ee1~mv2.png/v1/fill/w_980,h_475,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_d050bfad71db48669736eafac6da9ee1~mv2.png)
Simply add new half edge allows me to extrude a face
![](https://static.wixstatic.com/media/ea75ae_86fcd1c144bc432dace99011a8e5541c~mv2.png/v1/fill/w_980,h_477,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_86fcd1c144bc432dace99011a8e5541c~mv2.png)
Triangulate + Extrude
![](https://static.wixstatic.com/media/ea75ae_60ce7606089648a880e63590d87a5f8d~mv2.png/v1/fill/w_980,h_474,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_60ce7606089648a880e63590d87a5f8d~mv2.png)
This application also supports linear blend skinning
![](https://static.wixstatic.com/media/ea75ae_227b83e195124f13a009ad01a2ddec65~mv2.png/v1/fill/w_980,h_394,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_227b83e195124f13a009ad01a2ddec65~mv2.png)
Linear blend skinning will result in a a volume loss due to the loss of orthogonality when linear combining rotation matrix of two joints. The issue should be solved by applying dual quaternion skeleton blending technique.
![](https://static.wixstatic.com/media/ea75ae_d78c60b4554a422cac437195d3ff2db6~mv2.png/v1/fill/w_980,h_394,al_c,q_90,usm_0.66_1.00_0.01,enc_auto/ea75ae_d78c60b4554a422cac437195d3ff2db6~mv2.png)
Here is a video demo of the application:
YouTube Version
Click here to see the video on Tencent.
Kommentare