(Project completed: 1998-04)
In my undergrad I took the Computer Science Honors option at the University of Calgary. Part of the requirement was a two-semester project course, sort of a mini-thesis. This required working with a prof to develop a research project, present several progress reports along the way, and make a final paper report and a presentation with questions.
I worked with Brian "Blob" Wyvill to make an attempt at rendering implicit surfaces ("blobs"), which are isosurfaces of a 3D field function that is easy to compute, and lends itself to several ways of finding the surface.
At the time, rendering of blobs was generally fairly slow, and my project was to try using the "voxel rendering" technique popular in demos and some games at the time to speed up rendering. This isn't what voxel rendering means today - ie 3D pixels. This was done by rendering billboarded squares with shading and depth buffering; essentially giant pixels in 3D.
You can get the idea from the image above. I used knowledge of the primitives I used to generate the surface to pregenerate a set of points that are kept stuck to the isosurface as it changes. Here's a video from an early version of the program that shows my interactively moving one of three sphere primitives, and you an see how the surface points move to track a smooth surface surrounding them.
While I got everything working and it had not terrible performance, the technique suffered from gaps in the rendering in some blend areas. Some progressive refinement of the sample points might have overcome this, but I ran out of time before trying that.Here's a video showing the final program running, with four different sphere primitives following different paths at different speeds. This is with single-color rendering so it looks like a single soft object. It didn't run this fast at the time - this is modern emulated performance.
And here's a longer recording using different colors to show the surface points that belong to the different contributing spheres / point soures. In this video I also toggle the rendering mode from voxels to just showing the sample points, and change the detail level.
You can read my full final report here, and the source code, executables and full revision history are in my dead-code GitLab repo.
This program works under DOSBox if you find and download DOS4/GW. FB.EXE is the main program. '*' toggles render mode and +/- control the detail level. The /G command-line option uses a single color instead of showing the contributions of the individual primitives.
In retrospect, the fundamental idea of this project was flawed and I should have been able to predict the gap problem, or come up with a fairly cheap progressive refinement scheme. But when doing a thesis-like project that requires cooperation with a prof, your options are sometimes limited and compromise is necessary. Yet, it was a novel idea and the process of exploring it and completing the course work was a success.