Я догадываюсь из твоего поста, что ты в порядке с геометрией?
Для автоматического отображения в общем случае хорошей идеей является ваше предположение - начинайте с каждой вершины и следуйте ее нормальному направлению наружу, пока не дойдете до четко определенного внешнего примитива, а затем скопируйте местоположение текстуры внутрь из этого.
В этом случае, я думаю, вероятно, ключ в том, как вы генерируете свою геометрию. Если вы делаете что-то вроде создания 8 колец из 16 точек, эффективно итерируя вокруг одного круга во внешнем цикле, а другой во внутреннем цикле, то вы можете одновременно выполнить итерации u и v, чтобы получить отображение. Вы получаете несколько многоугольников неправильного размера, и на полюсах становится проблематичным отображение, но область вокруг лица будет работать довольно хорошо.
Если вы хотите иметь более равный размер многоугольника и надежное отображение во всех областях, тогда начните с куба с избыточной мозаикой (например, сетки из четырех квадратов на поверхность вместо одной) и сопоставьте координаты текстуры в любом значимом путь. Думайте с точки зрения сети куба. Затем деформируйте куб в сферу, отработав вектор от центра к каждой точке и переместив точку так, чтобы она была радиусом сферы от центра. Наконец, деформируйте сферу в овал, по-разному масштабируя разные оси.