Open main menu

CDOT Wiki β

Changes

Sudo

20 bytes added, 17:57, 7 October 2015
Progress
== Progress ==
=== Assignment 1 ===
 
Catmull-Clark Mesh Subdivision
 
After browsing C++ repositories on GitHub in search for a 3D model viewer application, I came across the following repository: https://github.com/tsong/viewer
 
This repository caught my interest as it was amongst the more straight forward 3D model viewing applications with available source code.
 
Upon compiling and running the application I played around with it to determine any procedures which seemed like they would benefit from an increase in speed. I found that when calling for subdivision the loaded mesh took a very long time to complete. As a result, I’ve decided to take a look at the code which is involved in that process to determine whether it can benefit from parallelizing.
 
I made some changes to how the application runs in order to profile only the subdivision procedure. I removed the GUI component, and made it so that the only thing the application would do is load a mesh, and then perform the subdivision 4 times.
[[File:Subdivision_indexOf.jpg]]
 
Analyzing the code, it can be seen that the call structure goes as following:
-> Scene.subdivide(4)
-> For(4 steps) { mesh.subdivide() }
-> For(each face in the current mesh) addFaces()
-> indexOf()
The vast majority of time is being occupied within the addFaces method, where a vast part of that time is occupied getting the index of the edges in the mesh.