e.g. something like this
def spherical_parametrization(theta: float, phi: float) -> Vec3
'''Parametrize head skin
center and radius computed from head, e.g. using:
p1, p2 = XCoreModeling.GetBoundingBox(skin)
center = 0.5 * (p1 + p2)
radius = 0.51 * (p2-p1).Length()
'''
point_on_sphere = center + Vec3(radius * sin(theta) * cos(phi), radius * sin(theta) * sin(phi), radius * cos(theta))
r = XCoreModeling.GetEntityPointDistance(skin, point_on_sphere)
return r.ClosestPosition
This should work quite well, except for the concave regions, e.g. behind the ears.