Commit ee71c7c4 authored by Georgia Gkioxari's avatar Georgia Gkioxari Committed by Facebook GitHub Bot
Browse files

small numerical fix to point_mesh

Summary: Small fix by adjusting the area `eps` to account for really small faces when computing point to face distances

Reviewed By: bottler

Differential Revision: D34331336

fbshipit-source-id: 51c4888ea46fefa4e31d5b0bb494a9f9d77813cd
parent 3de41223
......@@ -550,7 +550,7 @@ __device__ inline bool IsInsideTriangle(
const float3& v1,
const float3& v2) {
bool inside;
if (AreaOfTriangle(v0, v1, v2) < 1e-5) {
if (AreaOfTriangle(v0, v1, v2) < 5e-3) {
inside = 0;
} else {
float3 bary = BarycentricCoords3Forward(p, v0, v1, v2);
......
......@@ -651,7 +651,7 @@ static bool IsInsideTriangle(
const vec3<T>& v1,
const vec3<T>& v2) {
bool inside;
if (AreaOfTriangle(v0, v1, v2) < 1e-5) {
if (AreaOfTriangle(v0, v1, v2) < 5e-3) {
inside = 0;
} else {
vec3<T> bary = BarycentricCoords3Forward(p, v0, v1, v2);
......
......@@ -11,7 +11,11 @@ import torch
from common_testing import TestCaseMixin, get_random_cuda_device
from pytorch3d import _C
from pytorch3d.loss import point_mesh_edge_distance, point_mesh_face_distance
from pytorch3d.structures import Meshes, Pointclouds, packed_to_list
from pytorch3d.structures import (
Meshes,
Pointclouds,
packed_to_list,
)
class TestPointMeshDistance(TestCaseMixin, unittest.TestCase):
......@@ -126,7 +130,7 @@ class TestPointMeshDistance(TestCaseMixin, unittest.TestCase):
area = torch.cross(v0, v1).norm() / 2.0
# check if triangle is a line or a point. In that case, return False
if area < 1e-5:
if area < 5e-3:
return False
bary = TestPointMeshDistance._point_to_bary(point, tri)
inside = ((bary >= 0.0) * (bary <= 1.0)).all()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment