fix black sample
This commit is contained in:
@@ -183,6 +183,8 @@ std::vector<ui::StrokeSample> ui::Stroke::compute_samples()
|
||||
s.angle += curve_angle;
|
||||
}
|
||||
m_prev_sample = s;
|
||||
if (!s.valid())
|
||||
LOG("Invalid sample");
|
||||
samples.push_back(s);
|
||||
}
|
||||
return std::move(samples);
|
||||
@@ -215,6 +217,8 @@ void ui::Stroke::add_point(glm::vec2 pos, float pressure)
|
||||
m_keypoints.back().dist + glm::distance(m_keypoints.back().pos, pos);
|
||||
if (m_keypoints.empty())
|
||||
m_prev_sample.origin = pos;
|
||||
else if (m_keypoints.back().pos == pos)
|
||||
return; // skip same point, leading to black samples (NaN values)
|
||||
Keypoint kp;
|
||||
kp.pos = pos;
|
||||
kp.pressure = pressure;
|
||||
|
||||
@@ -47,6 +47,14 @@ struct StrokeSample
|
||||
float size = 0;
|
||||
float flow = 0;
|
||||
float angle = 0;
|
||||
bool valid() const
|
||||
{
|
||||
return !(
|
||||
glm::any(glm::isnan(col)) ||
|
||||
glm::any(glm::isnan(pos)) ||
|
||||
glm::any(glm::isnan(origin))
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
class BrushMesh
|
||||
|
||||
Reference in New Issue
Block a user