diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/BaseProximityIntersection.cpp b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/BaseProximityIntersection.cpp index 55c955f3e94..46bf969bf6f 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/BaseProximityIntersection.cpp +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/BaseProximityIntersection.cpp @@ -42,7 +42,7 @@ bool BaseProximityIntersection::testIntersection(Cube& cube1, Cube& cube2, const const auto& maxVect1 = cube1.maxVect(); const auto& maxVect2 = cube2.maxVect(); - const auto alarmDist = currentIntersection->getAlarmDistance() + cube1.getProximity() + cube2.getProximity(); + const auto alarmDist = currentIntersection->getAlarmDistance() + cube1.getContactDistance() + cube2.getContactDistance(); for (int i = 0; i < 3; i++) { diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/LocalMinDistance.cpp b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/LocalMinDistance.cpp index 5b1693a0316..25f179413bf 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/LocalMinDistance.cpp +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/LocalMinDistance.cpp @@ -108,7 +108,7 @@ bool LocalMinDistance::testIntersection(Line& e1, Line& e2, const core::collisio return false; } - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Line::Coord AB = e1.p2()-e1.p1(); const Line::Coord CD = e2.p2()-e2.p1(); @@ -168,7 +168,7 @@ int LocalMinDistance::computeIntersection(Line& e1, Line& e2, OutputVector* cont return 0; } - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); // E1 => A-->B // E2 => C-->D @@ -259,7 +259,7 @@ int LocalMinDistance::computeIntersection(Line& e1, Line& e2, OutputVector* cont #endif - const double contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); @@ -278,7 +278,7 @@ bool LocalMinDistance::testIntersection(Triangle& e2, Point& e1, const core::col if(!e1.isActive(e2.getCollisionModel())) return false; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Vec3 AB = e2.p2()-e2.p1(); const Vec3 AC = e2.p3()-e2.p1(); @@ -345,7 +345,7 @@ int LocalMinDistance::computeIntersection(Triangle& e2, Point& e1, OutputVector* if(!e1.isActive(e2.getCollisionModel())) return 0; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; @@ -411,7 +411,7 @@ int LocalMinDistance::computeIntersection(Triangle& e2, Point& e1, OutputVector* } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -430,7 +430,7 @@ bool LocalMinDistance::testIntersection(Triangle& e2, Sphere& e1, const core::co if (!e1.isActive(e2.getCollisionModel())) return false; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; @@ -500,7 +500,7 @@ int LocalMinDistance::computeIntersection(Triangle& e2, Sphere& e1, OutputVector if (!e1.isActive(e2.getCollisionModel())) return false; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; @@ -565,7 +565,7 @@ int LocalMinDistance::computeIntersection(Triangle& e2, Sphere& e1, OutputVector } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -586,7 +586,7 @@ bool LocalMinDistance::testIntersection(Line& e2, Point& e1, const core::collisi if(!e1.isActive(e2.getCollisionModel()) || !e2.isActive(e1.getCollisionModel())) return false; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Line::Coord AB = e2.p2()-e2.p1(); const Line::Coord AP = e1.p()-e2.p1(); @@ -633,7 +633,7 @@ int LocalMinDistance::computeIntersection(Line& e2, Point& e1, OutputVector* con if(!e1.isActive(e2.getCollisionModel()) || !e2.isActive(e1.getCollisionModel())) return 0; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Line::Coord AB = e2.p2()-e2.p1(); const Line::Coord AP = e1.p()-e2.p1(); @@ -685,7 +685,7 @@ int LocalMinDistance::computeIntersection(Line& e2, Point& e1, OutputVector* con } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -705,7 +705,7 @@ bool LocalMinDistance::testIntersection(Line& e2, Sphere& e1, const core::collis static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const Line::Coord AB = e2.p2()-e2.p1(); const Line::Coord AP = e1.p()-e2.p1(); @@ -748,7 +748,7 @@ int LocalMinDistance::computeIntersection(Line& e2, Sphere& e1, OutputVector* co static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const Line::Coord AB = e2.p2()-e2.p1(); const Line::Coord AP = e1.p()-e2.p1(); @@ -800,7 +800,7 @@ int LocalMinDistance::computeIntersection(Line& e2, Sphere& e1, OutputVector* co } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -819,7 +819,7 @@ bool LocalMinDistance::testIntersection(Point& e1, Point& e2, const core::collis if(!e1.isActive(e2.getCollisionModel()) || !e2.isActive(e1.getCollisionModel())) return false; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Point::Coord PQ = e2.p()-e1.p(); @@ -851,7 +851,7 @@ int LocalMinDistance::computeIntersection(Point& e1, Point& e2, OutputVector* co if(!e1.isActive(e2.getCollisionModel()) || !e2.isActive(e1.getCollisionModel())) return 0; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Point::Coord& P = e1.p(); const Point::Coord& Q = e2.p(); @@ -890,7 +890,7 @@ int LocalMinDistance::computeIntersection(Point& e1, Point& e2, OutputVector* co } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); @@ -905,7 +905,7 @@ int LocalMinDistance::computeIntersection(Point& e1, Point& e2, OutputVector* co bool LocalMinDistance::testIntersection(Sphere& e1, Point& e2, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); static_assert(std::is_same_v, "Data mismatch"); const auto PQ = e2.p()-e1.p(); @@ -935,7 +935,7 @@ bool LocalMinDistance::testIntersection(Sphere& e1, Point& e2, const core::colli int LocalMinDistance::computeIntersection(Sphere& e1, Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); static_assert(std::is_same_v, "Data mismatch"); const Sphere::Coord& P = e1.p(); @@ -975,7 +975,7 @@ int LocalMinDistance::computeIntersection(Sphere& e1, Point& e2, OutputVector* c } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); @@ -990,7 +990,7 @@ int LocalMinDistance::computeIntersection(Sphere& e1, Point& e2, OutputVector* c bool LocalMinDistance::testIntersection(Sphere& e1, Sphere& e2, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.r() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.r() + e2.getContactDistance(); const Sphere::Coord PQ = e2.p()-e1.p(); if (PQ.norm2() < alarmDist*alarmDist) @@ -1018,7 +1018,7 @@ bool LocalMinDistance::testIntersection(Sphere& e1, Sphere& e2, const core::coll int LocalMinDistance::computeIntersection(Sphere& e1, Sphere& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.r() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.r() + e2.getContactDistance(); const Sphere::Coord& P = e1.p(); const Sphere::Coord& Q = e2.p(); @@ -1056,7 +1056,7 @@ int LocalMinDistance::computeIntersection(Sphere& e1, Sphere& e2, OutputVector* } #endif - const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.r() + e2.getProximity(); + const double contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.r() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); @@ -1074,7 +1074,7 @@ bool LocalMinDistance::testIntersection(Ray &t1,Triangle &t2, const core::collis { type::Vec3 P,Q; - const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getProximity() + t2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getContactDistance() + t2.getContactDistance(); if (fabs(t2.n() * t1.direction()) < 0.000001) return false; // no intersection for edges parallel to the triangle @@ -1098,7 +1098,7 @@ bool LocalMinDistance::testIntersection(Ray &t1,Triangle &t2, const core::collis int LocalMinDistance::computeIntersection(Ray &t1, Triangle &t2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getProximity() + t2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getContactDistance() + t2.getContactDistance(); if (fabs(t2.n() * t1.direction()) < 0.000001) diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.cpp b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.cpp index 47ba57e7b28..9d386a92b7e 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.cpp +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.cpp @@ -82,7 +82,7 @@ MeshMinProximityIntersection::MeshMinProximityIntersection(MinProximityIntersect bool MeshMinProximityIntersection::testIntersection(Line& e1, Line& e2, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); using Real = Line::Coord::value_type; const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -126,7 +126,7 @@ bool MeshMinProximityIntersection::testIntersection(Line& e1, Line& e2, const co int MeshMinProximityIntersection::computeIntersection(Line& e1, Line& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); using Real = Line::Coord::value_type; const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -186,7 +186,7 @@ int MeshMinProximityIntersection::computeIntersection(Line& e1, Line& e2, Output } #endif - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); @@ -214,7 +214,7 @@ bool MeshMinProximityIntersection::testIntersection(Triangle& e2, Point& e1, con static_assert(std::is_same_v, "Data mismatch"); using Real = Triangle::Coord::value_type; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); const auto& positions_e2 = e2.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -270,7 +270,7 @@ int MeshMinProximityIntersection::computeIntersection(Triangle& e2, Point& e1, O using Real = Triangle::Coord::value_type; - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); const auto& positions_e2 = e2.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -328,7 +328,7 @@ int MeshMinProximityIntersection::computeIntersection(Triangle& e2, Point& e1, O } #endif - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -358,7 +358,7 @@ int MeshMinProximityIntersection::computeIntersection(Triangle& e2, Point& e1, O bool MeshMinProximityIntersection::testIntersection(Line& e2, Point& e1, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); using Real = Line::Coord::value_type; const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -389,7 +389,7 @@ int MeshMinProximityIntersection::computeIntersection(Line& e2, Point& e1, Outpu { static_assert(std::is_same_v, "Data mismatch"); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const auto& positions_e1 = e1.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); const auto& positions_e2 = e2.model->getMechanicalState()->read(core::vec_id::read_access::position)->getValue(); @@ -438,7 +438,7 @@ int MeshMinProximityIntersection::computeIntersection(Line& e2, Point& e1, Outpu } #endif - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e2, e1); detection->id = e1.getIndex(); @@ -462,7 +462,7 @@ int MeshMinProximityIntersection::computeIntersection(Line& e2, Point& e1, Outpu bool MeshMinProximityIntersection::testIntersection(Point& e1, Point& e2, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const Point::Coord PQ = e2.p()-e1.p(); return PQ.norm2() < alarmDist * alarmDist; @@ -470,7 +470,7 @@ bool MeshMinProximityIntersection::testIntersection(Point& e1, Point& e2, const int MeshMinProximityIntersection::computeIntersection(Point& e1, Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); Vec3 P,Q,PQ; P = e1.p(); @@ -495,7 +495,7 @@ int MeshMinProximityIntersection::computeIntersection(Point& e1, Point& e2, Outp } #endif - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); detection->elem = std::pair(e1, e2); detection->id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.h b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.h index b93b1d29bcb..d1320c3ff4d 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.h +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshMinProximityIntersection.h @@ -101,7 +101,7 @@ class SOFA_COMPONENT_COLLISION_DETECTION_INTERSECTION_API MeshMinProximityInters template bool MeshMinProximityIntersection::testIntersection(collision::geometry::Triangle& e2, collision::geometry::TSphere& e1, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const type::Vec3 x13 = e2.p1()-e2.p2(); const type::Vec3 x23 = e2.p1()-e2.p3(); @@ -144,7 +144,7 @@ bool MeshMinProximityIntersection::testIntersection(collision::geometry::Triangl template int MeshMinProximityIntersection::computeIntersection(collision::geometry::Triangle& e2, collision::geometry::TSphere& e1, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const type::Vec3 x13 = e2.p1()-e2.p2(); const type::Vec3 x23 = e2.p1()-e2.p3(); @@ -178,7 +178,7 @@ int MeshMinProximityIntersection::computeIntersection(collision::geometry::Trian if (QP.norm2() >= alarmDist*alarmDist) return 0; - const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); contacts->resize(contacts->size()+1); sofa::core::collision::DetectionOutput *detection = &*(contacts->end()-1); @@ -205,7 +205,7 @@ template bool MeshMinProximityIntersection::testIntersection(collision::geometry::Line& e2, collision::geometry::TSphere& e1, const core::collision::Intersection* currentIntersection) { static_assert(std::is_same_v::Coord>, "Data mismatch"); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const geometry::Line::Coord x32 = e2.p1()-e2.p2(); const auto x31 = e1.center()-e2.p2(); @@ -240,7 +240,7 @@ template int MeshMinProximityIntersection::computeIntersection(collision::geometry::Line& e2, collision::geometry::TSphere& e1, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { static_assert(std::is_same_v::Coord>, "Data mismatch"); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); const geometry::Line::Coord x32 = e2.p1()-e2.p2(); const auto x31 = e1.center()-e2.p2(); @@ -263,7 +263,7 @@ int MeshMinProximityIntersection::computeIntersection(collision::geometry::Line& if (QP.norm2() >= alarmDist*alarmDist) return 0; - const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); contacts->resize(contacts->size()+1); sofa::core::collision::DetectionOutput *detection = &*(contacts->end()-1); @@ -289,7 +289,7 @@ int MeshMinProximityIntersection::computeIntersection(collision::geometry::Line& template bool MeshMinProximityIntersection::testIntersection(collision::geometry::TSphere& e1, collision::geometry::Point& e2, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); type::Vec3 P,Q,PQ; P = e1.center(); @@ -307,7 +307,7 @@ bool MeshMinProximityIntersection::testIntersection(collision::geometry::TSphere template int MeshMinProximityIntersection::computeIntersection(collision::geometry::TSphere& e1, collision::geometry::Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); type::Vec3 P,Q,PQ; P = e1.center(); @@ -316,7 +316,7 @@ int MeshMinProximityIntersection::computeIntersection(collision::geometry::TSphe if (PQ.norm2() >= alarmDist*alarmDist) return 0; - const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.r() + e1.getContactDistance() + e2.getContactDistance(); contacts->resize(contacts->size()+1); sofa::core::collision::DetectionOutput *detection = &*(contacts->end()-1); diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.cpp b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.cpp index d97a2795b8c..6903e8022d8 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.cpp +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.cpp @@ -106,11 +106,11 @@ bool MeshNewProximityIntersection::testIntersection(Triangle& tri1, Triangle& tr int MeshNewProximityIntersection::computeIntersection(Point& e1, Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const int n = NewProximityIntersection::doIntersectionPointPoint(alarmDist*alarmDist, e1.p(), e2.p(), contacts, (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex()); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -124,11 +124,11 @@ int MeshNewProximityIntersection::computeIntersection(Point& e1, Point& e2, Outp int MeshNewProximityIntersection::computeIntersection(Line& e1, Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const int n = doIntersectionLinePoint(alarmDist*alarmDist, e1.p1(),e1.p2(), e2.p(), contacts, e2.getIndex()); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -141,13 +141,13 @@ int MeshNewProximityIntersection::computeIntersection(Line& e1, Point& e2, Outpu int MeshNewProximityIntersection::computeIntersection(Line& e1, Line& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const SReal dist2 = alarmDist*alarmDist; const Index id = (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex(); const int n = doIntersectionLineLine(dist2, e1.p1(),e1.p2(), e2.p1(),e2.p2(), contacts, id); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -159,12 +159,12 @@ int MeshNewProximityIntersection::computeIntersection(Line& e1, Line& e2, Output int MeshNewProximityIntersection::computeIntersection(Triangle& e1, Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const SReal dist2 = alarmDist*alarmDist; const int n = doIntersectionTrianglePoint(dist2, e1.flags(),e1.p1(),e1.p2(),e1.p3(),e1.n(), e2.p(), contacts, e2.getIndex()); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -179,7 +179,7 @@ int MeshNewProximityIntersection::computeIntersection(Triangle& e1, Line& e2, Ou { static_assert(std::is_same_v, "Data mismatch"); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const SReal dist2 = alarmDist*alarmDist; const Triangle::Coord& p1 = e1.p1(); const Triangle::Coord& p2 = e1.p2(); @@ -223,7 +223,7 @@ int MeshNewProximityIntersection::computeIntersection(Triangle& e1, Line& e2, Ou if (n>0) { - const SReal contactDist = currentMinProxIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentMinProxIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -257,7 +257,7 @@ int MeshNewProximityIntersection::computeIntersection(Triangle& e1, Triangle& e2 e1.p3Index()==e2.p1Index() || e1.p3Index()==e2.p2Index() || e1.p3Index()==e2.p3Index()); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance(); const SReal dist2 = alarmDist*alarmDist; const auto& p1 = e1.p1(); const auto& p2 = e1.p2(); @@ -344,7 +344,7 @@ int MeshNewProximityIntersection::computeIntersection(Triangle& e1, Triangle& e2 if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); for (int i = 0; i < n; ++i) { (*contacts)[contacts->size()-n+i].elem = std::pair(e1, e2); diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.inl b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.inl index 72e573c690e..c8bb27df4ab 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.inl +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MeshNewProximityIntersection.inl @@ -333,7 +333,7 @@ template bool MeshNewProximityIntersection::testIntersection(collision::geometry::TSphere& e1, collision::geometry::Point& e2, const core::collision::Intersection* currentIntersection) { OutputVector contacts; - const double alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity() + e1.r(); + const double alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance() + e1.r(); // By design, MeshNewProximityIntersection is supposed to work only with NewProximityIntersection const auto* currentNewProxIntersection = static_cast(currentIntersection); @@ -345,7 +345,7 @@ bool MeshNewProximityIntersection::testIntersection(collision::geometry::TSphere template int MeshNewProximityIntersection::computeIntersection(collision::geometry::TSphere& e1, collision::geometry::Point& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity() + e1.r(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance() + e1.r(); // By design, MeshNewProximityIntersection is supposed to work only with NewProximityIntersection const auto* currentNewProxIntersection = static_cast(currentIntersection); @@ -353,7 +353,7 @@ int MeshNewProximityIntersection::computeIntersection(collision::geometry::TSphe const int n = currentNewProxIntersection->doIntersectionPointPoint(alarmDist*alarmDist, e1.center(), e2.p(), contacts, (e1.getCollisionModel()->getSize() > e2.getCollisionModel()->getSize()) ? e1.getIndex() : e2.getIndex()); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity() + e1.r(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance() + e1.r(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -376,11 +376,11 @@ bool MeshNewProximityIntersection::testIntersection(collision::geometry::Line& e template int MeshNewProximityIntersection::computeIntersection(collision::geometry::Line& e1, collision::geometry::TSphere& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity() + e2.r(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance() + e2.r(); const int n = doIntersectionLinePoint(alarmDist*alarmDist, e1.p1(),e1.p2(), e2.center(), contacts, e2.getIndex()); if (n>0) { - const SReal contactDist = currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity() + e2.r(); + const SReal contactDist = currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance() + e2.r(); for (OutputVector::iterator detection = contacts->end()-n; detection != contacts->end(); ++detection) { detection->elem = std::pair(e1, e2); @@ -405,7 +405,7 @@ template int MeshNewProximityIntersection::computeIntersection(collision::geometry::Triangle& e1, collision::geometry::TSphere& e2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { const int flags = e1.flags(); - const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getProximity() + e2.getProximity() + e2.r(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + e1.getContactDistance() + e2.getContactDistance() + e2.r(); const SReal dist2 = alarmDist*alarmDist; const type::Vec3 AB = e1.p2() - e1.p1(); @@ -505,7 +505,7 @@ int MeshNewProximityIntersection::computeIntersection(collision::geometry::Trian detection->normal= type::Vec3(1,0,0); } - detection->value -= (currentIntersection->getContactDistance() + e1.getProximity() + e2.getProximity() + e2.r()); + detection->value -= (currentIntersection->getContactDistance() + e1.getContactDistance() + e2.getContactDistance() + e2.r()); detection->point[0]=p; detection->point[1]= e2.getContactPointByNormal(detection->normal); diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MinProximityIntersection.h b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MinProximityIntersection.h index b496be7302c..47985bd591a 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MinProximityIntersection.h +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/MinProximityIntersection.h @@ -76,14 +76,14 @@ class SOFA_COMPONENT_COLLISION_DETECTION_INTERSECTION_API MinProximityIntersecti template bool testIntersection(SphereType1& sph1, SphereType2& sph2, const core::collision::Intersection* currentIntersection) { - const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getProximity() + sph2.getProximity(); + const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getContactDistance() + sph2.getContactDistance(); return DiscreteIntersection::testIntersectionSphere(sph1, sph2, alarmDist); } template int computeIntersection(SphereType1& sph1, SphereType2& sph2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getProximity() + sph2.getProximity(); - const auto contactDist = currentIntersection->getContactDistance() + sph1.getProximity() + sph2.getProximity(); + const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getContactDistance() + sph2.getContactDistance(); + const auto contactDist = currentIntersection->getContactDistance() + sph1.getContactDistance() + sph2.getContactDistance(); return DiscreteIntersection::computeIntersectionSphere(sph1, sph2, contacts, alarmDist, contactDist); } diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/NewProximityIntersection.inl b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/NewProximityIntersection.inl index e1f5cc52604..455c07a28bc 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/NewProximityIntersection.inl +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/NewProximityIntersection.inl @@ -56,7 +56,7 @@ inline int NewProximityIntersection::doIntersectionPointPoint(SReal dist2, template bool NewProximityIntersection::testIntersection(SphereType1& sph1, SphereType2& sph2, const core::collision::Intersection* currentIntersection) { - const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getProximity() + sph2.getProximity(); + const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getContactDistance() + sph2.getContactDistance(); OutputVector contacts; const double alarmDist2 = alarmDist + sph1.r() + sph2.r(); @@ -67,8 +67,8 @@ bool NewProximityIntersection::testIntersection(SphereType1& sph1, SphereType2& template int NewProximityIntersection::computeIntersection(SphereType1& sph1, SphereType2& sph2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getProximity() + sph2.getProximity(); - const auto contactDist = currentIntersection->getContactDistance() + sph1.getProximity() + sph2.getProximity(); + const auto alarmDist = currentIntersection->getAlarmDistance() + sph1.getContactDistance() + sph2.getContactDistance(); + const auto contactDist = currentIntersection->getContactDistance() + sph1.getContactDistance() + sph2.getContactDistance(); const double alarmDist2 = alarmDist + sph1.r() + sph2.r(); const int n = doIntersectionPointPoint(alarmDist2 * alarmDist2, sph1.center(), sph2.center(), contacts, (sph1.getCollisionModel()->getSize() > sph2.getCollisionModel()->getSize()) ? sph1.getIndex() : sph2.getIndex()); diff --git a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/RayNewProximityIntersection.cpp b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/RayNewProximityIntersection.cpp index 3abd123be32..0aa8fe39e64 100644 --- a/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/RayNewProximityIntersection.cpp +++ b/Sofa/Component/Collision/Detection/Intersection/src/sofa/component/collision/detection/intersection/RayNewProximityIntersection.cpp @@ -56,7 +56,7 @@ RayNewProximityIntersection::RayNewProximityIntersection(NewProximityIntersectio bool RayNewProximityIntersection::testIntersection(Ray &t1,Triangle &t2, const core::collision::Intersection* currentIntersection) { Vec3 P,Q,PQ; - const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getProximity() + t2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getContactDistance() + t2.getContactDistance(); if (fabs(t2.n() * t1.direction()) < 0.000001) return false; // no intersection for edges parallel to the triangle @@ -81,7 +81,7 @@ bool RayNewProximityIntersection::testIntersection(Ray &t1,Triangle &t2, const c int RayNewProximityIntersection::computeIntersection(Ray &t1, Triangle &t2, OutputVector* contacts, const core::collision::Intersection* currentIntersection) { - const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getProximity() + t2.getProximity(); + const SReal alarmDist = currentIntersection->getAlarmDistance() + t1.getContactDistance() + t2.getContactDistance(); if (fabs(t2.n() * t1.direction()) < 0.000001) return false; // no intersection for edges parallel to the triangle diff --git a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/LineModel.inl b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/LineModel.inl index 401d1227c62..94a40920280 100644 --- a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/LineModel.inl +++ b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/LineModel.inl @@ -470,7 +470,7 @@ void LineCollisionModel::computeBoundingTree(int maxDepth) cubeModel->resize(size); if (!empty()) { - const SReal distance = this->proximity.getValue(); + const SReal distance = this->d_contactDistance.getValue(); const auto& positions = this->mstate->read(core::vec_id::read_access::position)->getValue(); for (sofa::Size i=0; i::computeContinuousBoundingTree(SReal dt, int cubeModel->resize(size); if (!empty()) { - const SReal distance = (SReal)this->proximity.getValue(); + const SReal distance = (SReal)this->d_contactDistance.getValue(); for (sofa::Size i=0; i t(this,i); diff --git a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/PointModel.inl b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/PointModel.inl index 0f71c6dd35b..b2806652f04 100644 --- a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/PointModel.inl +++ b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/PointModel.inl @@ -131,7 +131,7 @@ void PointCollisionModel::computeBoundingTree(int maxDepth) if (!empty()) { //VecCoord& x =mstate->read(core::vec_id::read_access::position)->getValue(); - const SReal distance = this->proximity.getValue(); + const SReal distance = this->d_contactDistance.getValue(); for (sofa::Size i=0; i p(this,i); @@ -164,7 +164,7 @@ void PointCollisionModel::computeContinuousBoundingTree(SReal dt, int { //VecCoord& x =mstate->read(core::vec_id::read_access::position)->getValue(); //VecDeriv& v = mstate->read(core::vec_id::read_access::velocity)->getValue(); - const SReal distance = (SReal)this->proximity.getValue(); + const SReal distance = (SReal)this->d_contactDistance.getValue(); for (sofa::Size i=0; i p(this,i); diff --git a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/SphereModel.inl b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/SphereModel.inl index 93d02638672..2db945214af 100644 --- a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/SphereModel.inl +++ b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/SphereModel.inl @@ -176,7 +176,7 @@ void SphereCollisionModel::computeBoundingTree(int maxDepth) cubeModel->resize(size); if (!empty()) { - const typename TSphere::Real distance = (typename TSphere::Real)this->proximity.getValue(); + const typename TSphere::Real distance = (typename TSphere::Real)this->d_contactDistance.getValue(); for (sofa::Size i=0; i p(this,i); @@ -218,7 +218,7 @@ void SphereCollisionModel::computeContinuousBoundingTree(SReal dt, in cubeModel->resize(size); if (!empty()) { - const typename TSphere::Real distance = (typename TSphere::Real)this->proximity.getValue(); + const typename TSphere::Real distance = (typename TSphere::Real)this->d_contactDistance.getValue(); for (sofa::Size i=0; i p(this,i); diff --git a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/TriangleModel.inl b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/TriangleModel.inl index a9fc42c430c..4b8b3f9f905 100644 --- a/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/TriangleModel.inl +++ b/Sofa/Component/Collision/Geometry/src/sofa/component/collision/geometry/TriangleModel.inl @@ -239,7 +239,7 @@ void TriangleCollisionModel::computeBoundingTree(int maxDepth) cubeModel->resize(size); // size = number of triangles if (!empty()) { - const SReal distance = (SReal)this->proximity.getValue(); + const SReal distance = (SReal)this->d_contactDistance.getValue(); for (sofa::Size i=0; i::computeContinuousBoundingTree(SReal dt, cubeModel->resize(size); if (!empty()) { - const SReal distance = (SReal)this->proximity.getValue(); + const SReal distance = (SReal)this->d_contactDistance.getValue(); for (sofa::Size i=0; iclear(size); mapper1.resize(size); mapper2.resize(size); - const double d0 = intersectionMethod->getContactDistance() + model1->getProximity() + model2->getProximity(); // - 0.001; + const double d0 = intersectionMethod->getContactDistance() + model1->getContactDistance() + model2->getContactDistance(); // - 0.001; for (int i=0; igetContactDistance() + model1->getProximity() + model2->getProximity(); // - 0.001; + const double d0 = intersectionMethod->getContactDistance() + model1->getContactDistance() + model2->getContactDistance(); // - 0.001; mappedContacts.resize(contacts.size()); for (std::vector::const_iterator it = contacts.begin(); it!=contacts.end(); it++, i++) diff --git a/Sofa/Component/Collision/Response/Contact/src/sofa/component/collision/response/contact/StickContactConstraint.inl b/Sofa/Component/Collision/Response/Contact/src/sofa/component/collision/response/contact/StickContactConstraint.inl index 4bae2c031a5..4a4582f2df6 100644 --- a/Sofa/Component/Collision/Response/Contact/src/sofa/component/collision/response/contact/StickContactConstraint.inl +++ b/Sofa/Component/Collision/Response/Contact/src/sofa/component/collision/response/contact/StickContactConstraint.inl @@ -140,7 +140,7 @@ void StickContactConstraint::activateMappers( mapper2.resize(size); int i = 0; - const double d0 = intersectionMethod->getContactDistance() + model1->getProximity() + model2->getProximity(); // - 0.001; + const double d0 = intersectionMethod->getContactDistance() + model1->getContactDistance() + model2->getContactDistance(); // - 0.001; mappedContacts.resize(contacts.size()); for (auto it = contacts.begin(); it!=contacts.end(); it++, i++) diff --git a/Sofa/framework/Core/src/sofa/core/CollisionElement.h b/Sofa/framework/Core/src/sofa/core/CollisionElement.h index bb9dcd3cfe8..d28734a0dd6 100644 --- a/Sofa/framework/Core/src/sofa/core/CollisionElement.h +++ b/Sofa/framework/Core/src/sofa/core/CollisionElement.h @@ -261,7 +261,7 @@ class TCollisionElementIterator : public BaseCollisionElementIterator } /// Distance to the actual (visual) surface - [[nodiscard]] SReal getProximity() const { return model->getProximity(); } + [[nodiscard]] SReal getContactDistance() const { return model->getContactDistance(); } /// Contact stiffness [[nodiscard]] SReal getContactStiffness() const { return model->getContactStiffness(index); } diff --git a/Sofa/framework/Core/src/sofa/core/CollisionModel.cpp b/Sofa/framework/Core/src/sofa/core/CollisionModel.cpp index 0e005767c02..bbdd8ffde99 100644 --- a/Sofa/framework/Core/src/sofa/core/CollisionModel.cpp +++ b/Sofa/framework/Core/src/sofa/core/CollisionModel.cpp @@ -105,7 +105,7 @@ CollisionModel::CollisionModel() , bMoving(initData(&bMoving, true, "moving", "flag indicating if this object is changing position between iterations")) , bSimulated(initData(&bSimulated, true, "simulated", "flag indicating if this object is controlled by a simulation")) , bSelfCollision(initData(&bSelfCollision, false, "selfCollision", "flag indication if the object can self collide")) - , proximity(initData(&proximity, 0.0_sreal, "proximity", "Distance to the actual (visual) surface")) + , d_contactDistance(initData(&d_contactDistance, 0.0_sreal, "contactDistance", "This distance is added along the normal of the collision element to apply 'skinning' effect for collision. The contact arise at this distance of the element.")) , contactStiffness(initData(&contactStiffness, 10.0_sreal, "contactStiffness", "Contact stiffness")) , contactFriction(initData(&contactFriction, 0.0_sreal, "contactFriction", "Contact friction coefficient (dry or viscous or unused depending on the contact method)")) , contactRestitution(initData(&contactRestitution, 0.0_sreal, "contactRestitution", "Contact coefficient of restitution")) @@ -119,6 +119,10 @@ CollisionModel::CollisionModel() , userData(nullptr) , l_collElemActiver(initLink("collisionElementActiver", "CollisionElementActiver component that activates or deactivates collision element(s) during execution")) { + + proximity.setOriginalData(&d_contactDistance); + addAlias(&d_contactDistance, "proximity"); + d_numberOfContacts.setReadOnly(true); } diff --git a/Sofa/framework/Core/src/sofa/core/CollisionModel.h b/Sofa/framework/Core/src/sofa/core/CollisionModel.h index bab46f4fb56..65ffb246c1d 100644 --- a/Sofa/framework/Core/src/sofa/core/CollisionModel.h +++ b/Sofa/framework/Core/src/sofa/core/CollisionModel.h @@ -25,6 +25,8 @@ #include #include +#include + //todo(dmarchal 2018-06-19) I really wonder why a collision model has a dependency to a RGBAColors. #include @@ -304,7 +306,7 @@ class SOFA_CORE_API CollisionModel : public virtual objectmodel::BaseObject root->addSlave(pmodel); pmodel->setMoving(isMoving()); pmodel->setSimulated(isSimulated()); - pmodel->proximity.setParent(&proximity); + pmodel->d_contactDistance.setParent(&d_contactDistance); pmodel->group.beginEdit()->insert(group.getValue().begin(), group.getValue().end()); pmodel->group.endEdit(); @@ -318,9 +320,11 @@ class SOFA_CORE_API CollisionModel : public virtual objectmodel::BaseObject /// @name Experimental methods /// @{ + SOFA_ATTRIBUTE_DEPRECATED__NAME_CHANGED() + [[nodiscard]] SReal getProximity() const { return getContactDistance(); } /// Get distance to the actual (visual) surface - [[nodiscard]] SReal getProximity() const { return proximity.getValue(); } + [[nodiscard]] SReal getContactDistance() const { return d_contactDistance.getValue(); } /// Get contact stiffness [[nodiscard]] SReal getContactStiffness(Index /*index*/) const { return contactStiffness.getValue(); } @@ -362,7 +366,10 @@ class SOFA_CORE_API CollisionModel : public virtual objectmodel::BaseObject void setColor4f(const float *c); /// Set of differents parameters - void setProximity (const SReal a) { proximity.setValue(a); } + void setContactDistance (const SReal a) { d_contactDistance.setValue(a); } + SOFA_ATTRIBUTE_DEPRECATED__NAME_CHANGED() + void setProximity (const SReal a) { setContactDistance(a); } + void setContactResponse (const std::string &a) { contactResponse.setValue(a); } /// Returns an int corresponding to the type of this. @@ -388,8 +395,15 @@ class SOFA_CORE_API CollisionModel : public virtual objectmodel::BaseObject Data bSimulated; /// flag indication if the object can self collide Data bSelfCollision; + + + SOFA_ATTRIBUTE_RENAMED__COLLISIONMODEL_PROXIMITY() + objectmodel::lifecycle::RenamedData proximity; + /// Distance to the actual (visual) surface - Data proximity; + Data d_contactDistance; + + /// Default contact stiffness Data contactStiffness; /// Default contact friction (damping) coefficient diff --git a/Sofa/framework/Core/src/sofa/core/config.h.in b/Sofa/framework/Core/src/sofa/core/config.h.in index 6604277a4e8..eb4b5c5a9af 100644 --- a/Sofa/framework/Core/src/sofa/core/config.h.in +++ b/Sofa/framework/Core/src/sofa/core/config.h.in @@ -92,6 +92,13 @@ #endif +#ifdef SOFA_BUILD_SOFA_CORE +#define SOFA_ATTRIBUTE_DEPRECATED__NAME_CHANGED() +#else +#define SOFA_ATTRIBUTE_DEPRECATED__NAME_CHANGED() \ +SOFA_ATTRIBUTE_DEPRECATED("v25.12", "v26.06", "Use getContactDistance or setContactDistance instead.") +#endif + #ifdef SOFA_BUILD_SOFA_CORE #define SOFA_ATTRIBUTE_DISABLED__POSITION() @@ -146,3 +153,11 @@ #define SOFA_ATTRIBUTE_DEPRECATED__REBUILDSYSTEM() \ SOFA_ATTRIBUTE_DEPRECATED("v25.12", "v26.06", "It was an experimental function no longer used.") #endif + + +#ifdef SOFA_BUILD_SOFA_CORE +#define SOFA_ATTRIBUTE_RENAMED__COLLISIONMODEL_PROXIMITY() +#else +#define SOFA_ATTRIBUTE_RENAMED__COLLISIONMODEL_PROXIMITY() \ + SOFA_ATTRIBUTE_DEPRECATED("v25.12", "v26.12", "Data 'proximity' has been renamed to 'contactDistance'") +#endif \ No newline at end of file diff --git a/applications/plugins/BulletCollisionDetection/examples/BulletConvexHullDemo.scn b/applications/plugins/BulletCollisionDetection/examples/BulletConvexHullDemo.scn index ed90b00f819..f177d50a03e 100644 --- a/applications/plugins/BulletCollisionDetection/examples/BulletConvexHullDemo.scn +++ b/applications/plugins/BulletCollisionDetection/examples/BulletConvexHullDemo.scn @@ -29,7 +29,7 @@ - + @@ -37,7 +37,7 @@ - + diff --git a/applications/plugins/BulletCollisionDetection/examples/BulletLMDragon.scn b/applications/plugins/BulletCollisionDetection/examples/BulletLMDragon.scn index 96be6a23841..5d74880c4a5 100644 --- a/applications/plugins/BulletCollisionDetection/examples/BulletLMDragon.scn +++ b/applications/plugins/BulletCollisionDetection/examples/BulletLMDragon.scn @@ -18,7 +18,7 @@ - + @@ -33,7 +33,7 @@ - + diff --git a/applications/plugins/BulletCollisionDetection/examples/BulletSphere.scn b/applications/plugins/BulletCollisionDetection/examples/BulletSphere.scn index 6199dab1921..eb7f45c3ab6 100644 --- a/applications/plugins/BulletCollisionDetection/examples/BulletSphere.scn +++ b/applications/plugins/BulletCollisionDetection/examples/BulletSphere.scn @@ -26,14 +26,14 @@ - + - + diff --git a/applications/plugins/BulletCollisionDetection/src/BulletCollisionDetection/BulletTriangleModel.inl b/applications/plugins/BulletCollisionDetection/src/BulletCollisionDetection/BulletTriangleModel.inl index 0da91749056..b9d766ed398 100644 --- a/applications/plugins/BulletCollisionDetection/src/BulletCollisionDetection/BulletTriangleModel.inl +++ b/applications/plugins/BulletCollisionDetection/src/BulletCollisionDetection/BulletTriangleModel.inl @@ -67,7 +67,7 @@ void TBulletTriangleModel::initBullet(){ //_bt_gmesh = new btBvhTriangleMeshShape(_bt_mesh,true,true); _bt_gmesh = new BtDynamicMesh(_bt_mesh);//new btGImpactMeshShape(_bt_mesh);// - //_bt_gmesh->setMargin(this->getProximity()); + //_bt_gmesh->setMargin(this->getContactDistance()); //double margin = 0.5;//0.5; _bt_gmesh->setMargin(margin.getValue()); diff --git a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/CapsuleIntersection.h b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/CapsuleIntersection.h index da8b621811d..5ac0cd5f301 100644 --- a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/CapsuleIntersection.h +++ b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/CapsuleIntersection.h @@ -48,8 +48,8 @@ class COLLISIONOBBCAPSULE_API CapsuleDiscreteIntersection : public core::collisi int computeIntersection(Elem1& e1, Elem2& e2, OutputVector* contacts, const core::collision::Intersection* intersection) { return BaseIntTool::computeIntersection(e1, e2, - e1.getProximity() + e2.getProximity() + intersection->getAlarmDistance(), - e1.getProximity() + e2.getProximity() + intersection->getContactDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getAlarmDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(), contacts); } @@ -72,8 +72,8 @@ class COLLISIONOBBCAPSULE_API CapsuleMeshDiscreteIntersection : public core::col int computeIntersection(Elem1& e1, Elem2& e2, OutputVector* contacts, const core::collision::Intersection* intersection) { return MeshIntTool::computeIntersection(e1, e2, - e1.getProximity() + e2.getProximity() + intersection->getAlarmDistance(), - e1.getProximity() + e2.getProximity() + intersection->getContactDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getAlarmDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(), contacts); } diff --git a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/MeshIntTool.inl b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/MeshIntTool.inl index ebabae95940..c722674a0c4 100644 --- a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/MeshIntTool.inl +++ b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/MeshIntTool.inl @@ -62,7 +62,7 @@ int MeshIntTool::doCapPointInt(geometry::TCapsule& cap, const type::V if (pq.norm2() >= enough_to_touch * enough_to_touch) return 0; - //const SReal contactDist = getContactDistance() + e1.getProximity() + e2.getProximity(); + //const SReal contactDist = getContactDistance() + e1.getContactDistance() + e2.getContactDistance(); contacts->resize(contacts->size()+1); DetectionOutput *detection = &*(contacts->end()-1); diff --git a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/OBBIntersection.h b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/OBBIntersection.h index a41a6186181..cf8d73c9ed6 100644 --- a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/OBBIntersection.h +++ b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/detection/intersection/OBBIntersection.h @@ -48,8 +48,8 @@ class COLLISIONOBBCAPSULE_API RigidDiscreteIntersection : public core::collision int computeIntersection(Elem1& e1, Elem2& e2, OutputVector* contacts, const core::collision::Intersection* intersection) { return BaseIntTool::computeIntersection(e1, e2, - e1.getProximity() + e2.getProximity() + intersection->getAlarmDistance(), - e1.getProximity() + e2.getProximity() + intersection->getContactDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getAlarmDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(), contacts); } @@ -74,8 +74,8 @@ class COLLISIONOBBCAPSULE_API RigidMeshDiscreteIntersection : public core::colli int computeIntersection(Elem1& e1, Elem2& e2, OutputVector* contacts, const core::collision::Intersection* intersection) { return MeshIntTool::computeIntersection(e1, e2, - e1.getProximity() + e2.getProximity() + intersection->getAlarmDistance(), - e1.getProximity() + e2.getProximity() + intersection->getContactDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getAlarmDistance(), + e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(), contacts); } diff --git a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/geometry/OBBModel.inl b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/geometry/OBBModel.inl index 7ea63b36aea..d2d9fcc1b39 100644 --- a/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/geometry/OBBModel.inl +++ b/applications/plugins/CollisionOBBCapsule/src/CollisionOBBCapsule/geometry/OBBModel.inl @@ -102,7 +102,7 @@ void OBBCollisionModel::computeBoundingTree(int maxDepth){ cubeModel->resize(size); if (!empty()) { - const typename OBBCollisionModel::Real distance = (typename OBBCollisionModel::Real)this->proximity.getValue(); + const typename OBBCollisionModel::Real distance = (typename OBBCollisionModel::Real)this->d_contactDistance.getValue(); std::vector vs; vs.reserve(8); diff --git a/applications/plugins/PersistentContact/PersistentFrictionContact.inl b/applications/plugins/PersistentContact/PersistentFrictionContact.inl index a6a8401c3f4..00753b5c5e6 100644 --- a/applications/plugins/PersistentContact/PersistentFrictionContact.inl +++ b/applications/plugins/PersistentContact/PersistentFrictionContact.inl @@ -523,7 +523,7 @@ void PersistentFrictionContact::activateConst ////////////////////////////////////// STEP 2 : creation des "mappedContacts" + corrections associées par rapport à la ddc - const double d0 = this->intersectionMethod->getContactDistance() + this->model1->getProximity() + this->model2->getProximity(); // - 0.001; + const double d0 = this->intersectionMethod->getContactDistance() + this->model1->getContactDistance() + this->model2->getContactDistance(); // - 0.001; for (std::vector::const_iterator it = this->contacts.begin(); it!=this->contacts.end(); it++) { @@ -562,12 +562,12 @@ void PersistentFrictionContact::activateConst } else { - Vector3 thickness = o->normal * this->model1->getProximity(); + Vector3 thickness = o->normal * this->model1->getContactDistance(); Vector3 posColpoint = o->point[0] + thickness; index1 = this->mapThePersistentContact(o->baryCoords[0], index1, posColpoint, true); } - distance -= this->model1->getProximity(); + distance -= this->model1->getContactDistance(); m1 = false; } @@ -586,12 +586,12 @@ void PersistentFrictionContact::activateConst } else { - Vector3 thickness = o->normal * this->model2->getProximity(); + Vector3 thickness = o->normal * this->model2->getContactDistance(); Vector3 posColpoint = o->point[1] - thickness; index2 = this->mapThePersistentContact(o->baryCoords[1], index2, posColpoint, false); } - distance -= this->model2->getProximity(); + distance -= this->model2->getContactDistance(); m2 = false; } diff --git a/applications/plugins/Sensable/examples/CameraAlignment.scn b/applications/plugins/Sensable/examples/CameraAlignment.scn index d50e633bc54..5a95130d23f 100644 --- a/applications/plugins/Sensable/examples/CameraAlignment.scn +++ b/applications/plugins/Sensable/examples/CameraAlignment.scn @@ -46,7 +46,7 @@ - + diff --git a/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid.scn b/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid.scn index eb888f5e120..491bd294494 100644 --- a/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid.scn +++ b/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid.scn @@ -22,7 +22,7 @@ - + diff --git a/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid_teeth.scn b/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid_teeth.scn index 2709526de15..0787134aa6e 100644 --- a/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid_teeth.scn +++ b/applications/plugins/Sensable/examples/Dentistry/dentalSurgeryDistanceGrid_teeth.scn @@ -31,19 +31,19 @@ - + - + - + - + diff --git a/applications/plugins/Sensable/examples/SimpleBox-DistanceGrid.scn b/applications/plugins/Sensable/examples/SimpleBox-DistanceGrid.scn index 5cc41537db5..ff0b6e9da0c 100644 --- a/applications/plugins/Sensable/examples/SimpleBox-DistanceGrid.scn +++ b/applications/plugins/Sensable/examples/SimpleBox-DistanceGrid.scn @@ -45,7 +45,7 @@ - + diff --git a/applications/plugins/Sensable/examples/SimpleBoxLarge.scn b/applications/plugins/Sensable/examples/SimpleBoxLarge.scn index a8e7881159a..cf0a0ba09c7 100644 --- a/applications/plugins/Sensable/examples/SimpleBoxLarge.scn +++ b/applications/plugins/Sensable/examples/SimpleBoxLarge.scn @@ -45,7 +45,7 @@ - + diff --git a/applications/plugins/Sensable/examples/SimpleTooth-DistanceGrid.scn b/applications/plugins/Sensable/examples/SimpleTooth-DistanceGrid.scn index 60d9b9c3eef..3d598edd8e8 100644 --- a/applications/plugins/Sensable/examples/SimpleTooth-DistanceGrid.scn +++ b/applications/plugins/Sensable/examples/SimpleTooth-DistanceGrid.scn @@ -46,7 +46,7 @@ - + diff --git a/applications/plugins/Sensable/examples/SpecifyingCamera.scn b/applications/plugins/Sensable/examples/SpecifyingCamera.scn index 420d08320fb..e3ac8cf8524 100644 --- a/applications/plugins/Sensable/examples/SpecifyingCamera.scn +++ b/applications/plugins/Sensable/examples/SpecifyingCamera.scn @@ -48,7 +48,7 @@ - + diff --git a/applications/plugins/Sensable/examples/TwoTeeth-DistanceGrid.scn b/applications/plugins/Sensable/examples/TwoTeeth-DistanceGrid.scn index 26f55dc5d3c..ef77b5d9b1b 100644 --- a/applications/plugins/Sensable/examples/TwoTeeth-DistanceGrid.scn +++ b/applications/plugins/Sensable/examples/TwoTeeth-DistanceGrid.scn @@ -46,7 +46,7 @@ - + @@ -63,7 +63,7 @@ - + diff --git a/applications/plugins/SofaAssimp/examples/character_clothes.py b/applications/plugins/SofaAssimp/examples/character_clothes.py index 9f6ae51734e..e553fe51c9d 100644 --- a/applications/plugins/SofaAssimp/examples/character_clothes.py +++ b/applications/plugins/SofaAssimp/examples/character_clothes.py @@ -91,9 +91,9 @@ def createChlothes(parent): parent.createObject('UniformMass') parent.createObject('MeshTopology', name='mesh', position='@loader.position', edges='@loader.edges', triangles='@loader.triangles', quads='@loader.quads', tetrahedra='@loader.tetras', hexahedra='@loader.hexas') - parent.createObject('TriangleCollisionModel', template='Vec3d', name='models', proximity='0', selfCollision=clothSelfCollision) - parent.createObject('LineCollisionModel', template='Vec3d', name='models', proximity='0', selfCollision=clothSelfCollision) - parent.createObject('PointCollisionModel', template='Vec3d', name='models', proximity='0', selfCollision=clothSelfCollision) + parent.createObject('TriangleCollisionModel', template='Vec3d', name='models', contactDistance='0', selfCollision=clothSelfCollision) + parent.createObject('LineCollisionModel', template='Vec3d', name='models', contactDistance='0', selfCollision=clothSelfCollision) + parent.createObject('PointCollisionModel', template='Vec3d', name='models', contactDistance='0', selfCollision=clothSelfCollision) #parent.createObject('ConstantForceField', force='9.81 -9.81 9.81', points='0') #0 24 599 623 #parent.createObject('ConstantForceField', force='-9.81 -9.81 9.81', points='24') diff --git a/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn b/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn index 49afa9a8b0a..b172c7981fe 100644 --- a/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn +++ b/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn @@ -46,7 +46,7 @@ filename="mesh/liver-smooth.obj" scale="1.0" usePoints="0" - proximity="0.1" + contactDistance="0.1" contactStiffness="500.0" contactFriction="0.0" topology="@grid" diff --git a/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn b/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn index f1ac027945a..c579b703257 100644 --- a/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn +++ b/applications/plugins/SofaDistanceGrid/examples/FFDDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn @@ -50,7 +50,7 @@ filename="mesh/liver-smooth.obj" scale="1.0" usePoints="0" - proximity="0.1" + contactDistance="0.1" contactFriction="0.0" topology="@grid" /> diff --git a/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn b/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn index bdf2c502e06..ddf300abd92 100644 --- a/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn +++ b/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_DefaultAnimationLoop.scn @@ -35,7 +35,7 @@ filename="mesh/liver-smooth.obj" scale="1.0" usePoints="0" - proximity="0.1" + contactDistance="0.1" contactStiffness="50" contactFriction="0.0" /> diff --git a/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn b/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn index c0c5f7b695f..a8070296327 100644 --- a/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn +++ b/applications/plugins/SofaDistanceGrid/examples/RigidDistanceGridCollisionModel_liver_FreeMotionAnimationLoop.scn @@ -39,7 +39,7 @@ filename="mesh/liver-smooth.obj" scale="1.0" usePoints="0" - proximity="0.1" + contactDistance="0.1" /> diff --git a/applications/plugins/SofaDistanceGrid/extensions/CUDA/src/SofaDistanceGrid/CUDA/CudaCollisionDistanceGrid.cpp b/applications/plugins/SofaDistanceGrid/extensions/CUDA/src/SofaDistanceGrid/CUDA/CudaCollisionDistanceGrid.cpp index 5324b3343fb..de319b296d6 100644 --- a/applications/plugins/SofaDistanceGrid/extensions/CUDA/src/SofaDistanceGrid/CUDA/CudaCollisionDistanceGrid.cpp +++ b/applications/plugins/SofaDistanceGrid/extensions/CUDA/src/SofaDistanceGrid/CUDA/CudaCollisionDistanceGrid.cpp @@ -64,7 +64,7 @@ void BarycentricPenalityContactgetContactDistance() + model1->getProximity() + model2->getProximity(); // - 0.001; + const double d0 = intersectionMethod->getContactDistance() + model1->getContactDistance() + model2->getContactDistance(); // - 0.001; #if 0 int insize = outputs.size(); int size = insize; @@ -117,7 +117,7 @@ void BarycentricPenalityContactgetContactDistance() + model1->getProximity() + model2->getProximity(); // - 0.001; + const double d0 = intersectionMethod->getContactDistance() + model1->getContactDistance() + model2->getContactDistance(); // - 0.001; #if 0 int insize = outputs.size(); int size = insize; diff --git a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.cpp b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.cpp index 2fbd8049885..115c440e3fc 100644 --- a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.cpp +++ b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.cpp @@ -71,9 +71,9 @@ int FFDDistanceGridDiscreteIntersection::computeIntersection(FFDDistanceGridColl const type::Vec3& t2 = e2.getTranslation(); const type::Mat3x3& r2 = e2.getRotation(); - const double d0 = e1.getProximity() + e2.getProximity() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); //const SReal margin = 0.001f + (SReal)d0; - const SReal margin = (SReal)((e1.getProximity() + e2.getProximity() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); + const SReal margin = (SReal)((e1.getContactDistance() + e2.getContactDistance() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); const bool singleContact = e1.getCollisionModel()->singleContact.getValue(); // transform from grid1 to grid2 @@ -248,9 +248,9 @@ int FFDDistanceGridDiscreteIntersection::computeIntersection(FFDDistanceGridColl if (!usePoints1 && !usePoints2) return 0; // no tests possible - const double d0 = e1.getProximity() + e2.getProximity() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); //const SReal margin = 0.001f + (SReal)d0; - const SReal margin = (SReal)((e1.getProximity() + e2.getProximity() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); + const SReal margin = (SReal)((e1.getContactDistance() + e2.getContactDistance() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); if ((c2.center - c1.center).norm2() > (c1.radius+c2.radius)*(c1.radius+c2.radius)) return 0; // the two enclosing spheres are not colliding @@ -438,7 +438,7 @@ int FFDDistanceGridDiscreteIntersection::computeIntersection(FFDDistanceGridColl const std::shared_ptr grid1 = e1.getGrid(); FFDDistanceGridCollisionModel::DeformedCube& c1 = e1.getCollisionModel()->getDeformCube(e1.getIndex()); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(); const SReal margin = 0.001f + (SReal)d0; c1.updateFaces(); @@ -529,7 +529,7 @@ int FFDDistanceGridDiscreteIntersection::computeIntersection(FFDDistanceGridColl const std::shared_ptr grid1 = e1.getGrid(); FFDDistanceGridCollisionModel::DeformedCube& c1 = e1.getCollisionModel()->getDeformCube(e1.getIndex()); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(); const SReal margin = 0.001f + (SReal)d0; c1.updateFaces(); diff --git a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.inl b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.inl index bb9fc1a0ab2..6cdc6478708 100644 --- a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.inl +++ b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/FFDDistanceGridDiscreteIntersection.inl @@ -54,7 +54,7 @@ int FFDDistanceGridDiscreteIntersection::computeIntersection(FFDDistanceGridColl const std::shared_ptr grid1 = e1.getGrid(); FFDDistanceGridCollisionModel::DeformedCube& c1 = e1.getCollisionModel()->getDeformCube(e1.getIndex()); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance() + e2.r(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance() + e2.r(); const SReal margin = 0.001f + (SReal)d0; c1.updateFaces(); diff --git a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.cpp b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.cpp index e5803991772..f1d8fe325f6 100644 --- a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.cpp +++ b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.cpp @@ -73,9 +73,9 @@ int RigidDistanceGridDiscreteIntersection::computeIntersection(RigidDistanceGrid const type::Vec3& t2 = e2.getTranslation(); const Matrix3& r2 = e2.getRotation(); - const double d0 = e1.getProximity() + e2.getProximity() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + (intersection->getContactDistance() == 0.0 ? 0.001 : intersection->getContactDistance()); //const SReal margin = 0.001f + (SReal)d0; - const SReal margin = (SReal)((e1.getProximity() + e2.getProximity() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); + const SReal margin = (SReal)((e1.getContactDistance() + e2.getContactDistance() + (intersection->getAlarmDistance() == 0.0 ? 0.001 : intersection->getAlarmDistance()))/2); // transform from grid1 to grid2 Vec3f translation; @@ -562,7 +562,7 @@ int RigidDistanceGridDiscreteIntersection::computeIntersection(RigidDistanceGrid const Matrix3& r1 = e1.getRotation(); const bool flipped = e1.isFlipped(); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(); const SReal margin = 0.001f + (SReal)d0; @@ -626,7 +626,7 @@ int RigidDistanceGridDiscreteIntersection::computeIntersection(RigidDistanceGrid const type::Vec3& t1 = e1.getTranslation(); const Matrix3& r1 = e1.getRotation(); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(); const SReal margin = 0.001f + (SReal)d0; int nc = 0; for (unsigned int iP = 0; iP < 3; ++iP) @@ -735,7 +735,7 @@ int RigidDistanceGridDiscreteIntersection::computeIntersection(RigidDistanceGrid const type::Vec3& t1 = e1.getTranslation(); const Matrix3& r1 = e1.getRotation(); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance(); const SReal margin = 0.001f + (SReal)d0; int nresult = 0; for (unsigned int iP = 0; iP < 2; ++iP) diff --git a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.inl b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.inl index 6f03ea3580c..6e321b1aa74 100644 --- a/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.inl +++ b/applications/plugins/SofaDistanceGrid/src/SofaDistanceGrid/components/collision/RigidDistanceGridDiscreteIntersection.inl @@ -53,7 +53,7 @@ int RigidDistanceGridDiscreteIntersection::computeIntersection(RigidDistanceGrid const type::Vec3& t1 = e1.getTranslation(); const sofa::type::Matrix3& r1 = e1.getRotation(); - const double d0 = e1.getProximity() + e2.getProximity() + intersection->getContactDistance() + e2.r(); + const double d0 = e1.getContactDistance() + e2.getContactDistance() + intersection->getContactDistance() + e2.r(); const SReal margin = 0.001f + (SReal)d0; type::Vec3 p2 = e2.center(); diff --git a/applications/plugins/SofaMiscCollision/SofaMiscCollision_test/BroadPhase_test.h b/applications/plugins/SofaMiscCollision/SofaMiscCollision_test/BroadPhase_test.h index 2a90203e589..6679566aa43 100644 --- a/applications/plugins/SofaMiscCollision/SofaMiscCollision_test/BroadPhase_test.h +++ b/applications/plugins/SofaMiscCollision/SofaMiscCollision_test/BroadPhase_test.h @@ -444,7 +444,7 @@ sofa::component::collision::OBBCollisionModel::S //dVecCoord.endEdit(); obbCollisionModel->computeBoundingTree(0); - //std::cout<<"the proximity "<getProximity()<getContactDistance()<::S //dVecCoord.endEdit(); obbCollisionModel->computeBoundingTree(0); - //std::cout<<"the proximity "<getProximity()<getContactDistance()< - + @@ -84,7 +84,7 @@ - + @@ -106,7 +106,7 @@ - + @@ -128,7 +128,7 @@ - + @@ -150,7 +150,7 @@ - + @@ -172,7 +172,7 @@ - + @@ -194,7 +194,7 @@ - + @@ -216,7 +216,7 @@ - + @@ -238,7 +238,7 @@ - + @@ -260,7 +260,7 @@ - + @@ -273,7 +273,7 @@ - + @@ -283,7 +283,7 @@ - + @@ -293,7 +293,7 @@ - + @@ -303,7 +303,7 @@ - + @@ -313,7 +313,7 @@ - + @@ -323,7 +323,7 @@ - + @@ -333,7 +333,7 @@ - + @@ -343,7 +343,7 @@ - + @@ -353,7 +353,7 @@ - + @@ -363,7 +363,7 @@ - + @@ -373,7 +373,7 @@ - + @@ -383,7 +383,7 @@ - + @@ -393,7 +393,7 @@ - + @@ -403,7 +403,7 @@ - + @@ -413,7 +413,7 @@ - + @@ -423,7 +423,7 @@ - + @@ -433,7 +433,7 @@ - + diff --git a/examples/Component/Constraint/Lagrangian/FixedLagrangianConstaint_Vec3.scn b/examples/Component/Constraint/Lagrangian/FixedLagrangianConstaint_Vec3.scn index 8e4fe5d1f71..91340fdf114 100644 --- a/examples/Component/Constraint/Lagrangian/FixedLagrangianConstaint_Vec3.scn +++ b/examples/Component/Constraint/Lagrangian/FixedLagrangianConstaint_Vec3.scn @@ -53,7 +53,7 @@ - + diff --git a/examples/Component/Constraint/Projective/LinearVelocityProjectiveConstraint.scn b/examples/Component/Constraint/Projective/LinearVelocityProjectiveConstraint.scn index 1d3bdf24361..6f5924d34f4 100644 --- a/examples/Component/Constraint/Projective/LinearVelocityProjectiveConstraint.scn +++ b/examples/Component/Constraint/Projective/LinearVelocityProjectiveConstraint.scn @@ -35,7 +35,7 @@ - + diff --git a/examples/Component/Mapping/Linear/CenterOfMassMapping.scn b/examples/Component/Mapping/Linear/CenterOfMassMapping.scn index a50d9cdbc89..584c11fd4e1 100644 --- a/examples/Component/Mapping/Linear/CenterOfMassMapping.scn +++ b/examples/Component/Mapping/Linear/CenterOfMassMapping.scn @@ -52,7 +52,7 @@ - + diff --git a/examples/Demos/SofaScene.scn b/examples/Demos/SofaScene.scn index dba3a7a0511..e4322c68521 100644 --- a/examples/Demos/SofaScene.scn +++ b/examples/Demos/SofaScene.scn @@ -130,7 +130,7 @@ - + @@ -197,7 +197,7 @@ - + @@ -228,7 +228,7 @@ - + @@ -246,7 +246,7 @@ - + @@ -255,7 +255,7 @@ - + diff --git a/examples/Demos/SofaWasher.scn b/examples/Demos/SofaWasher.scn index 8df6c8210ea..ffb1eb3d0f8 100644 --- a/examples/Demos/SofaWasher.scn +++ b/examples/Demos/SofaWasher.scn @@ -89,7 +89,7 @@ - + diff --git a/examples/Demos/fallingBeamAugmentedLagrangianCollision.scn b/examples/Demos/fallingBeamAugmentedLagrangianCollision.scn index 0bbbfd3b6d9..a15852e9cda 100644 --- a/examples/Demos/fallingBeamAugmentedLagrangianCollision.scn +++ b/examples/Demos/fallingBeamAugmentedLagrangianCollision.scn @@ -60,7 +60,7 @@ - + @@ -84,7 +84,7 @@ 3 7 6 3 6 2 4 5 6 4 6 7" /> - + diff --git a/examples/Demos/fallingBeamLagrangianCollision.scn b/examples/Demos/fallingBeamLagrangianCollision.scn index fee3ef0d327..4de55435c38 100644 --- a/examples/Demos/fallingBeamLagrangianCollision.scn +++ b/examples/Demos/fallingBeamLagrangianCollision.scn @@ -59,7 +59,7 @@ - + @@ -83,7 +83,7 @@ 3 7 6 3 6 2 4 5 6 4 6 7" /> - + diff --git a/examples/Demos/fallingSOFA.scn b/examples/Demos/fallingSOFA.scn index 0fbf0f26607..3914d38ba17 100644 --- a/examples/Demos/fallingSOFA.scn +++ b/examples/Demos/fallingSOFA.scn @@ -95,7 +95,7 @@ - + - +