Getting sick... in the middle of summer. I almost lost motivation in the triangulation system I'm using. There are plenty of proven systems available, mainly ROAM, so the thought of proofing out a new one is quite daunting. At first I was going to make a post how I'm thinking of dropping this system. I sat down to have one more look at it and had a few epiphanies.

I guess I should first say why I was losing motivation. I want to have a nice simple triangulation system. Using Quad Triangle tree (each triangle splits into 4 when subdivided) seemed interesting. When using an equilateral triangle all sub triangles keep the same proportions. My only concern initially was the T junctions that were caused. Once I created a simple triangle class that only managed the subdivision I thought the system was complete. The problems came when I tried to subdivide in more that one location. I started getting gaps all over the place (see first picture). I found a few fixes (making sure edges are never more than 2 levels apart) but the problem persisted.

I got my epiphany and narrowed it down to the points. New points are created by interpolating between two existing points. They are not always updated to reflect the proper position. What would happen is that a triangle would be subdivided but it's points would not be updated. Then when triangles further away would tesselate they would cause the points that were used to create a point to update but the child points would remain unchanged. All in all a really weird situation. Since I was already keeping pointer to the two points that were used to create any particular point I simple added some update counters so I could easily tell when a point changes. The one problem I'm not happy with is that whenever a point is requested it has to check if it needs to update. That can always be optimized later though. For now I'm sick and motivated again. I finally have a decent smooth mesh (see second picture).