Scale quickhull tolerance with mesh size

Taken from three.js's implementation. Tested with a wide variety of
meshes.
This commit is contained in:
Hein-Pieter van Braam 2019-03-01 20:35:26 +00:00
parent 51b80f6857
commit 33c6b0ec1a
2 changed files with 3 additions and 3 deletions

View file

@ -36,8 +36,6 @@ uint32_t QuickHull::debug_stop_after = 0xFFFFFFFF;
Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_mesh) {
static const real_t over_tolerance = 0.0001;
/* CREATE AABB VOLUME */
AABB aabb;
@ -180,6 +178,8 @@ Error QuickHull::build(const Vector<Vector3> &p_points, Geometry::MeshData &r_me
faces.push_back(f);
}
real_t over_tolerance = 3 * UNIT_EPSILON * (aabb.size.x + aabb.size.y + aabb.size.z);
/* COMPUTE AVAILABLE VERTICES */
for (int i = 0; i < p_points.size(); i++) {

View file

@ -64,7 +64,7 @@ public:
struct Face {
Plane plane;
int vertices[3];
uint32_t vertices[3];
Vector<int> points_over;
bool operator<(const Face &p_face) const {