Comment changer le mode de sélection de couleur par défaut de HSV à RVB?
La valeur par défaut de Blender 2.8x est HSV , mais je veux RVB comme dans 2.7x.
L'enregistrement du fichier de démarrage ne stocke pas les nouveaux paramètres.

Dans les paramètres de préférences, on ne peut changer que le cercle en carré ou HSV en HSL, rien de plus. Aucun cercle ou carré RVB

Réponses
il n'y a pas d'option pour changer le type de sélecteur de couleur en RVB
mais vous pouvez télécharger la source de blender 2.83 et ajouter une option pour changer les couleurs en rgb
blender-2.83.5 \ source \ blender \ editors \ interface_region_color_picker.c
Solution facile
comme vous le savez, enum a une valeur par défaut

enum ePickerType {
PICKER_TYPE_RGB = 0,
PICKER_TYPE_HSV = 1,
PICKER_TYPE_HEX = 2,
};
par défaut, le type de sélecteur de couleurs est PICKER_TYPE_HSV = 1
pour que vous puissiez le changer en PICKER_TYPE_RGB = 0
static char colormode = 0;

Solution difficile Ajout aux préférences
vous devriez ajouter un cas pour RVB dans les préférences
switch (U.color_picker_type) {
case USER_CP_SQUARE_SV:
ui_colorpicker_square(block, ptr, prop, UI_GRAD_SV, cpicker);
break;
case USER_CP_SQUARE_HS:
ui_colorpicker_square(block, ptr, prop, UI_GRAD_HS, cpicker);
break;
case USER_CP_SQUARE_HV:
ui_colorpicker_square(block, ptr, prop, UI_GRAD_HV, cpicker);
break;
/* user default */
case USER_CP_CIRCLE_HSV:
case USER_CP_CIRCLE_HSL:
case USER_CP_CIRCLE_RGB: # I ADD THIS CASE HERE
default:
ui_colorpicker_circle(block, ptr, prop, cpicker);
break;
}
il y a une fonction pour changer le hsv / hsl en rgb:
void ui_color_picker_to_rgb(float r_cp0, float r_cp1, float r_cp2, float *r, float *g, float *b)
{
switch (U.color_picker_type) {
case USER_CP_CIRCLE_HSL:
hsl_to_rgb(r_cp0, r_cp1, r_cp2, r, g, b);
break;
default:
hsv_to_rgb(r_cp0, r_cp1, r_cp2, r, g, b);
break;
}
}

enum ePickerType {
PICKER_TYPE_RGB = 0,
PICKER_TYPE_HSV = 1,
PICKER_TYPE_HEX = 2,
};
Comment fonctionne enum?
/* mode */
yco = -1.5f * UI_UNIT_Y;
UI_block_align_begin(block);
bt = uiDefButC(block,
UI_BTYPE_ROW,
0,
IFACE_("RGB"),
0,
yco,
width / 3,
UI_UNIT_Y,
&colormode,
0.0,
(float)PICKER_TYPE_RGB,
0,
0,
"");
UI_but_flag_disable(bt, UI_BUT_UNDO);
UI_but_func_set(bt, ui_colorpicker_create_mode_cb, bt, NULL);
bt->custom_data = cpicker;
bt = uiDefButC(block,
UI_BTYPE_ROW,
0,
IFACE_((U.color_picker_type == USER_CP_CIRCLE_HSL) ? "HSL" : "HSV"),
width / 3,
yco,
width / 3,
UI_UNIT_Y,
&colormode,
0.0,
PICKER_TYPE_HSV,
0,
0,
"");
alors vous pouvez utiliser cette fonction pour changer le type de sélecteur de couleur:
bpy.context.preferences.view.color_picker_type = 'CIRCLE_RGB'
J'ai également téléchargé la source blender 2.79.J'ai trouvé une fonction pour convertir rgb en hsv peut-être utile:
2.79 \ scripts \ addons \ cycles \ source \ util \ util_color.h
ccl_device float3 rgb_to_hsv(float3 rgb)
{
float cmax, cmin, h, s, v, cdelta;
float3 c;
cmax = fmaxf(rgb.x, fmaxf(rgb.y, rgb.z));
cmin = min(rgb.x, min(rgb.y, rgb.z));
cdelta = cmax - cmin;
v = cmax;
if(cmax != 0.0f) {
s = cdelta/cmax;
}
else {
s = 0.0f;
h = 0.0f;
}
if(s != 0.0f) {
float3 cmax3 = make_float3(cmax, cmax, cmax);
c = (cmax3 - rgb)/cdelta;
if (rgb.x == cmax) h = c.z - c.y;
else if(rgb.y == cmax) h = 2.0f + c.x - c.z;
else h = 4.0f + c.y - c.x;
h /= 6.0f;
if(h < 0.0f)
h += 1.0f;
}
else {
h = 0.0f;
}
return make_float3(h, s, v);
}
Solution idiote
vous pouvez utiliser un enregistreur de macro pour changer le type de couleur !!!
lorsque vous changez le type de couleur une fois que cela fonctionne pour d'autres couleurs jusqu'à ce que vous fermiez le mélangeur
alors utilisez ce programme lorsque vous ouvrez le mixeur

import pyautogui
print(pyautogui.position())
pyautogui.moveTo(863,687,0.2) # Materil Position
pyautogui.click()
pyautogui.moveTo(976,677,0.2) # Color Position
pyautogui.click()
pyautogui.moveTo(834,559,0.2) # Change The Color Type to RGB
pyautogui.click()