Это экпрешен самого колор пикера (круг), ставится ему в цвет заливки
hue = thisComp.layer(HUE).transform.position[1];
p1 = transform.position[0];
p2 = transform.position[1];
p3 = Math.sqrt((p1*p1)+(p2*p2))
if(hue<250)
{
l = linear(hue,0,250,p3,p2);
r = linear(p2,0,1500,1,0);
g = linear(l,0,1500,1,0);
b = linear(p3,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
else if(hue>=250 && hue<500)
{
l = linear(hue,250,500,p2,p3);
r = linear(l,0,1500,1,0);
g = linear(p2,0,1500,1,0);
b = linear(p3,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
else if(hue>=500 && hue<750)
{
l = linear(hue,500,750,p3,p2);
r = linear(p3,0,1500,1,0);
g = linear(p2,0,1500,1,0);
b = linear(l,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
else if(hue>=750 && hue<1000)
{
l = linear(hue,750,1000,p2,p3);
r = linear(p3,0,1500,1,0);
g = linear(l,0,1500,1,0);
b = linear(p2,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
else if(hue>=1000 && hue<1250)
{
l = linear(hue,1000,1250,p3,p2);
r = linear(l,0,1500,1,0);
g = linear(p3,0,1500,1,0);
b = linear(p2,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
else if(hue>=1250 && hue<=1500)
{
l = linear(hue,1250,1500,p2,p3);
r = linear(p2,0,1500,1,0);
g = linear(p3,0,1500,1,0);
b = linear(l,0,1500,1,0);
a = linear(p1,0,1500,1,0);
}
[r,g,b,a]
На позишн круга поставил ограничение, чтобы не улетал на границы
p1 = linear(transform.position[0],0,1500,0,1500);
p2 = linear(transform.position[1],0,1500,0,1500);
[p1,p2]
Это экспрешен для HUE (квадрат)
s = [1,0,0,1];
p = transform.position[1];
t = rgbToHsl(s) + linear(p,0,1500,0,1);
hslToRgb(t)
На позишн так же ограничение
p1 = 0;
p2 = linear(transform.position[1],0,1500,0,1500);
[p1,p2]
HUE и Color picker я привязал к нулям, чтобы не было проблем
Под HUE сделал 6 ступенчатый градиент, от красного до красного, а под Color picker сделал два квадрата, снизу лежит с градиентом от белого к черному, а сверху лежит с градиентом от белого к цвету, в который покрашен HUE.
Можно еще заморочиться и сделать это все с настраиваемыми размерами, но мне стало лень)