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