From d598ea2b94adf7a03fed90b6c683e3abe706a7fe Mon Sep 17 00:00:00 2001 From: omigamedev Date: Thu, 28 Feb 2019 01:04:32 +0100 Subject: [PATCH] improve brush step size --- src/brush.cpp | 36 ++++++------------------------------ 1 file changed, 6 insertions(+), 30 deletions(-) diff --git a/src/brush.cpp b/src/brush.cpp index 9f41f0b..fa6986b 100644 --- a/src/brush.cpp +++ b/src/brush.cpp @@ -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) 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(1, m_brush->m_tip_angle_smooth * 200.f / m_step)); prng.seed(0);