/Marching-Cubes

Primary LanguageASPMIT LicenseMIT

Checkout The Progression of The Project!

https://imgur.com/gallery/LxMHpKr

alt text

Marching-Cubes

I recently graduated with a Computer Engineering degree without a job lined up, so in my free time I sought out a neat project to work on and remembered how much I enjoyed learning some Unity basics over the last couple years. I like to use hobby projects to talk about during interviews and I hadn't worked on one in a couple of months so I started this project!

So I made this over the course of the last week with a fair bit of difficulty. Before this project I had only followed a few Brackey's tutorials here and there over the last year, but never really did anything of my own work. Not only that, but before this project, I didn't even know what a voxel is, what procedural terrain generation is, or the process of mesh creation - safe to say that I learned a whole lot.

After spending probably about 30 hours on it in total, it's not perfect, but my goal was to create a really easy to read and follow - and rather unoptimized - marching cubes project that I want to release for others to learn from. I based this heavily around Paul Bourke's work along with the Scrawk repo.

While attempting to learn and understand the algorithm along with c# and unity basics along the way, I really struggled to understand how Scrawk converted the C code to the Unity engine. I have a fair amount of experience with C/C++ so I understood Bourke's code, but really struggled with Scrawk's unity code. Maybe this is because I was a novice, and its actually very helpful for experienced Unity devs, but either way I found it difficult to follow.

To help out those who come after me, I decided to create this project with readability in mind. At the cost of a fair bit of optimization, I believe that this code is pretty readable with comments preceding almost every line to explain variables, classes, and functions. In the future I plan to optimize the crap out of this project and hopefully either set up the "Job System" that I keep hearing about, or set up some threads to decrease some of the CPU load.

Thanks for checking it out!