There is an abundance of posts about Quadrilateralized Spherical Cubes (QLSC) online, but I can’t find any that are sticking to the true nature of Dr. Chan’s original work. It’s a fascinating anomaly that has spread and evolved in the past 6 years, most likely by accident. I contributed to it by making the same exact mistake and had to later publish errata.
Anyway, I love talking about it and the posts seem popular so I would like to share a recent response I made to someone who wrote in. I think it may give just a little bit more detail on what’s going on here. If you want to chime in please feel free to add your comments or write to me too!
Clipped for brevity. Start at the third paragraph for QLSC-only info.
I’m still using the OpenGL2 pipeline for that project. I initially generate my points using the polar coordinate system. Every point has the same distance from the center of the sphere but different angles. If I wanted more points for more detail, I can average the angles of 2
existing points to add a third point directly between them. Once all those points are generated they are converted to Cartesian (x,y,z) and fed into the vertex buffer to be rendered.
(A side note: You could then animate or alter the terrain of the earth by just changing the distance of each point in the polar coordinate system and that would translate all the way into the final earth mesh!)
I couldn’t find a whole lot of information about Ken’s algorithm either, but I did find is the QLSC algorithm was actually for taking points on a virtual spheroid and making it accurately match up with flat hierarchies of data. I.e., unraveling a sphere into a flat surface to map out some data; and the reverse, taking flat data and mapping it accurately to a sphere. He usually stresses that this is an equal-area mapping algorithm. I don’t really know a whole lot about the specifics here, his papers are hard to read and understand.
He sent me an email after writing his comment, saying it was mostly for stuff like the Cosmic Background Explorer at NASA. They had to study where exactly radiation was coming from and they couldn’t tolerate even small distortions when tracking and mapping this data or it would ruin scientific data crunching. I prodded him for more information but he never got back to me. The guy’s probably super busy, so I’m glad he took the time to message me in the first place.
The lesson I learned is that I wasn’t really using his research at all! Sad, but true. Cubespheres were used well before Ken was born, by cartographers making interesting and wonderful world maps. And that’s what I ended up replicating in my work.
If you look online you will find a lot of other people thought they were using the QLSC algorithm too, but in fact they were just making plain-old cubespheres (or sometimes called quadspheres), and they generally store all their terrain height data in a quadtree data structure, which is better suited for graphics stuff.
I made another article to note my corrections but I left the old one intact because I wanted to keep the comments Ken made. I think because so many people were calling this a QLSC–the name really does sound cooler–it caught on quickly and became an artifact of errant
reality. I think it’s neat.
Thanks for writing to me,
In essence, if you’re looking to do planetary rendering, you’ll want Quadspheres/Cubespheres and Quadtrees specifically; QLSC probably won’t help you. In fact, there are a few solutions out there already, for Ogre or Outerra. UE4 has a wonderful landscape rendering engine that can probably be employed to do planetary rendering if that better suits your needs. UE4 is also pretty.
One last note, NASA also has some really cool work-in-progress for planetary rendering, and a friend has been actively deriving from that work, while another is responsible for the physics simulation behind it. I’m not sure if I can provide any details, but I’m excited about these new advancements in space simulation. I will update this post if I get permission to post snapshots or links and such.
As always, hope this helps.