ABR tip dynamics (aka jitter)

This commit is contained in:
2019-02-24 11:03:47 +01:00
parent 3d02c7a5eb
commit 420e0a8c2a
2 changed files with 46 additions and 10 deletions

View File

@@ -153,6 +153,42 @@ std::vector<std::shared_ptr<Brush>> ABR::compute_brushes(const std::string& path
}
}
if (p->value<Boolean>("useTipDynamics"))
{
// other properties 'brushProjection', 'minimumRoundness', 'roundnessDynamics', 'tiltScale'
auto jitter_size = p->get<Descriptor>("szVr");
if (jitter_size)
{
b->m_jitter_scale = jitter_size->value<UnitFloat>("jitter") * 0.01f;
// TODO: p->value<UnitFloat>("minimumDiameter") * 0.001f; // minimum size
}
auto jitter_angle = p->get<Descriptor>("angleDynamics");
if (jitter_angle)
{
auto mode = jitter_angle->value<Integer>("bVTy");
if (mode == 0)
{
b->m_jitter_angle = jitter_angle->value<UnitFloat>("jitter") * 0.01f;
}
else if (mode == 5)
{
b->m_jitter_angle = jitter_angle->value<UnitFloat>("jitter") * 0.01f;
b->m_tip_angle_follow = true;
}
else if (mode == 6)
{
b->m_jitter_angle = jitter_angle->value<UnitFloat>("jitter") * 0.01f;
b->m_tip_angle_follow = true; // temporary use full direction
// TODO: implement initial direction only
}
}
b->m_tip_randflipx = p->value<Boolean>("flipX");
b->m_tip_randflipy = p->value<Boolean>("flipY");
}
std::vector<std::string> modes = {
"normal", // normal (not in Photoshop)
"Mltp", // multiply