From ae817df9dd838217efc21c2ede9e03bac7f72c26 Mon Sep 17 00:00:00 2001 From: epernod Date: Wed, 19 Mar 2025 19:33:03 +0100 Subject: [PATCH 1/2] [src] Fix drawing when path is not valid. Still display stress direction and end points --- src/Tearing/BaseTearingEngine.inl | 24 +++++++++++++----------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/src/Tearing/BaseTearingEngine.inl b/src/Tearing/BaseTearingEngine.inl index 5925916..0788d54 100644 --- a/src/Tearing/BaseTearingEngine.inl +++ b/src/Tearing/BaseTearingEngine.inl @@ -741,7 +741,7 @@ void BaseTearingEngine::draw(const core::visual::VisualParams* vparam if (d_showFracturePath.getValue()) { - if (m_maxStressTriangleIndex != InvalidID && m_fracturePath.pathOk) + if (m_maxStressTriangleIndex != InvalidID) { helper::ReadAccessor< Data > x(d_input_positions); @@ -768,20 +768,22 @@ void BaseTearingEngine::draw(const core::visual::VisualParams* vparam vparams->drawTool()->drawPoints(pointsDir, 10, sofa::type::RGBAColor(0, 1, 0.2, 1)); vparams->drawTool()->drawLines(pointsDir, 1, sofa::type::RGBAColor(0, 1, 0.5, 1)); - std::vector pointsPath; - for (auto ptA : m_fracturePath.pointsToAdd) + if (m_fracturePath.pathOk) { - sofa::type::Vec3 vecG = sofa::type::Vec3(0.0, 0.0, 0.0); - sofa::Size nbr = ptA->m_ancestors.size(); - for (int i = 0; i < nbr; ++i) + std::vector pointsPath; + for (auto ptA : m_fracturePath.pointsToAdd) { - - vecG += x[ptA->m_ancestors[i]] * ptA->m_coefs[i]; + sofa::type::Vec3 vecG = sofa::type::Vec3(0.0, 0.0, 0.0); + sofa::Size nbr = ptA->m_ancestors.size(); + for (int i = 0; i < nbr; ++i) + { + + vecG += x[ptA->m_ancestors[i]] * ptA->m_coefs[i]; + } + pointsPath.push_back(vecG); } - pointsPath.push_back(vecG); + vparams->drawTool()->drawSpheres(pointsPath, 0.01, sofa::type::RGBAColor::red()); } - vparams->drawTool()->drawSpheres(pointsPath, 0.01, sofa::type::RGBAColor::red()); - } } } From aed20ea7bc7e775ebeca4a439d435b5823f9bf4c Mon Sep 17 00:00:00 2001 From: epernod Date: Wed, 19 Mar 2025 22:15:29 +0100 Subject: [PATCH 2/2] change fracrute path color --- src/Tearing/BaseTearingEngine.inl | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Tearing/BaseTearingEngine.inl b/src/Tearing/BaseTearingEngine.inl index 0788d54..4cc665d 100644 --- a/src/Tearing/BaseTearingEngine.inl +++ b/src/Tearing/BaseTearingEngine.inl @@ -756,8 +756,8 @@ void BaseTearingEngine::draw(const core::visual::VisualParams* vparam points.push_back(Pa); points.push_back(Pc); // Blue == computed fracture path using d_fractureMaxLength - vparams->drawTool()->drawPoints(points, 10, sofa::type::RGBAColor(1, 0.2, 1, 1)); - vparams->drawTool()->drawLines(points, 1, sofa::type::RGBAColor(1, 0.5, 1, 1)); + vparams->drawTool()->drawPoints(points, 10, sofa::type::RGBAColor(0, 1, 0, 1)); + vparams->drawTool()->drawLines(points, 1, sofa::type::RGBAColor(0.2, 1, 0, 1)); //--------------------------------------------------------------------------------------------------- // Green == principal stress direction @@ -765,8 +765,8 @@ void BaseTearingEngine::draw(const core::visual::VisualParams* vparam pointsDir.push_back(Pa); pointsDir.push_back(Pa + 100.0*(principalStressDirection)); - vparams->drawTool()->drawPoints(pointsDir, 10, sofa::type::RGBAColor(0, 1, 0.2, 1)); - vparams->drawTool()->drawLines(pointsDir, 1, sofa::type::RGBAColor(0, 1, 0.5, 1)); + vparams->drawTool()->drawPoints(pointsDir, 10, sofa::type::RGBAColor(0, 1, 0.4, 1)); + vparams->drawTool()->drawLines(pointsDir, 1, sofa::type::RGBAColor(0, 1, 0.8, 1)); if (m_fracturePath.pathOk) {