Along with the regular work on the storyworld, I’ve also been working on the face display system that Alvaro Gonzalez is using to create the unique faces for Siboot. The latest version is described here. But there’s a fundamental flaw in the system: the coordinate origin is in the wrong place (the upper left corner of the image). The origin of the coordinate system ought to be the center of the face. I was thinking the wrong way about the display system when I designed it. Several times during the development process I have realized that it would work better with a centered origin, but each time I deferred the change as excessively time-consuming. Now, however, I realize that my efforts to cope with the displaced origin have created so many problems that I must make the change.
“What’s the problem?” you ask. “Just add the offset from upper left corner to center. Fixed.” Sorry, it isn’t that simple. Some of the locations of the various features have to be scaled up or down, which makes the offset-correction approach rather messy. Yes, it’s certainly possible to do; it’s just mathematics. But it’s messy and bug-prone. I hit a brick wall with this problem:
The eyes on this face are smaller than normal, but the eyebrow and orbline on the left side are not shrunken as well, so they look too big. On the right side, I have the calculation that re-sizes the eyebrow and orbline, but it also moves them in the process. Yes, I just need to make some adjustments in the calculation and it will all work our properly. But the code is getting messier and messier. It’s time to tear it apart and start over.
Here is a comparison of the old and new coordinate systems:
This new coordinate system makes it easier to alter the basic facial dimensions. But I do need to figure out exactly what I mean by the center of the face. Obviously, the horizontal position of the center falls on the line of symmetry. But where should the vertical position of the center fall? I suppose that it could fall anywhere in the region of the nose.
Oops. Just got an email from Alvaro saying that variable eye size isn’t that important, and he’s eager to plunge ahead. Kill variable eye size, revert to the earlier, stable version, and move on. I suppose he’s right; my perfectionism has greatly delayed this project.