improve brush step size

This commit is contained in:
2019-02-28 01:04:32 +01:00
parent aa189a3468
commit d598ea2b94

View File

@@ -282,21 +282,9 @@ void Stroke::add_point(glm::vec3 pos, float pressure)
if (m_brush->m_tip_size_pressure)
{
float aspect_width = glm::min(1.f, glm::clamp(m_brush->m_tip_aspect, .1f, .9f) * 2.f);
float raw_size = aspect_width * glm::min(m_brush->m_tip_scale.x, m_brush->m_tip_scale.y) * m_brush->m_tip_size;
float size = glm::clamp(raw_size / glm::tan(glm::radians(m_camera.fov * 0.5f)), 1.f, m_max_size);
if (raw_size < 2.f)
m_step = glm::max(0.5f, m_brush->m_tip_spacing) * size;
else if (raw_size < 10.f)
m_step = glm::max(0.2f, m_brush->m_tip_spacing) * size;
else if (raw_size < 30.f)
m_step = glm::max(0.1f, m_brush->m_tip_spacing) * size;
else if (raw_size < 50.f)
m_step = glm::max(0.05f, m_brush->m_tip_spacing) * size;
else if (raw_size < 200.f)
m_step = glm::max(0.01f, m_brush->m_tip_spacing) * size;
else
m_step = m_brush->m_tip_spacing * size;
float raw_size = glm::clamp(m_brush->m_tip_size / glm::tan(glm::radians(m_camera.fov * 0.5f)), 1.f, m_max_size);
float size = aspect_width * glm::min(m_brush->m_tip_scale.x, m_brush->m_tip_scale.y) * raw_size;
m_step = glm::max(0.5f, m_brush->m_tip_spacing * size);
}
float dist = m_keypoints.empty() ? m_step :
@@ -327,21 +315,9 @@ void Stroke::start(const std::shared_ptr<Brush>& brush)
m_brush = brush;
float aspect_width = glm::min(1.f, glm::clamp(m_brush->m_tip_aspect, .1f, .9f) * 2.f);
float raw_size = aspect_width * glm::min(m_brush->m_tip_scale.x, m_brush->m_tip_scale.y) * m_brush->m_tip_size;
float size = glm::clamp(raw_size / glm::tan(glm::radians(m_camera.fov * 0.5f)), 1.f, m_max_size);
if (raw_size < 2.f)
m_step = glm::max(0.5f, m_brush->m_tip_spacing) * size;
else if (raw_size < 10.f)
m_step = glm::max(0.2f, m_brush->m_tip_spacing) * size;
else if (raw_size < 30.f)
m_step = glm::max(0.1f, m_brush->m_tip_spacing) * size;
else if (raw_size < 50.f)
m_step = glm::max(0.05f, m_brush->m_tip_spacing) * size;
else if (raw_size < 200.f)
m_step = glm::max(0.01f, m_brush->m_tip_spacing) * size;
else
m_step = m_brush->m_tip_spacing * size;
float raw_size = glm::clamp(m_brush->m_tip_size / glm::tan(glm::radians(m_camera.fov * 0.5f)), 1.f, m_max_size);
float size = aspect_width * glm::min(m_brush->m_tip_scale.x, m_brush->m_tip_scale.y) * raw_size;
m_step = glm::max(0.5f, m_brush->m_tip_spacing * size);
m_direction.resize(std::max<int>(1, m_brush->m_tip_angle_smooth * 200.f / m_step));
prng.seed(0);