Page 1 of 1

how does macrodetail sliders work in blender addon?

PostPosted: Fri Jan 17, 2025 3:24 pm
by electricmachine
hello everyone. as far i can tell, for example if i set gender slider to 0.3, it means the model is 0.3 male and 0.7 female. those values are then distributed among shape keys that have "$fe" or "$ma" in their names. but there are so many shape keys with gender modifiers that it results in very small distributions.

so my question is how can i identify which shape keys are affected by a slider exactly?

EDIT: so i had a look at the files (file location mbfb/data/targets/macrodetails/macro.json), shape keys are structured as combinations of macro details:
"combinations": {
"racegenderage": ["race", "gender", "age"],
"genderagemuscleweight": ["gender", "age", "muscle", "weight"],
"genderagemuscleweightproportions": ["gender", "age", "muscle", "weight", "proportions"],
"genderagemuscleweightheight": ["gender", "age", "muscle", "weight", "height"],
"genderagemuscleweightcupsizefirmness": ["gender", "age", "muscle", "weight", "cupsize", "firmness"]
}


these are further divided into sub categories like asian, african, caucasian for race, and baby, child, young, old for age etc. sub categories are encoded to go around blender's shape key name limitations as "$af" for african, "$yn" for young etc. their individual weights are calculated according to the specifications in the same file. then these individual weights are multiplied to calculate the final value of the shape key itself.

for example, starting with default values (every macro at 0.5), if you put asian to 1 (other races at 0), and gender to 0.3, you'd have only two shape keys active in the "racegenderage" combination. "$md-$as-$fe-$yn" at 0.7, and "$md-$as-$ma-$yn" at 0.3 ($md stands for macro detail i guess). their values are calculated as race weight * gender weight * age weight. in this case these weights would be 1 * 0.3 (or 0.7 for $fe) * 1 (beacuse age slider at 0.5 contributes full weight to $yn combinations).

I may not be entirely correct, but generally this is how they work i think.