mirror of
https://github.com/facebookresearch/pytorch3d.git
synced 2025-12-20 14:20:38 +08:00
Fix look_at corner case
Summary: When the camera is vertically oriented, calculating the look_at x-axis (also known as the "right" vector) does not succeed, resulting in the x-axis being placed at the origin. Adds a check to correctly calculate the x-axis if this case occurs. Reviewed By: nikhilaravi, sbranson Differential Revision: D23511859 fbshipit-source-id: ee5145cdbecdbe2f7c7d288588bd0899480cb327
This commit is contained in:
committed by
Facebook GitHub Bot
parent
f8ea5906c0
commit
eb517dd70b
@@ -433,6 +433,20 @@ class TestCameraHelpers(TestCaseMixin, unittest.TestCase):
|
||||
RT = get_world_to_view_transform(R=R, T=T)
|
||||
self.assertTrue(isinstance(RT, Transform3d))
|
||||
|
||||
def test_look_at_view_transform_corner_case(self):
|
||||
dist = 2.7
|
||||
elev = 90
|
||||
azim = 90
|
||||
expected_position = torch.tensor([0.0, 2.7, 0.0], dtype=torch.float32).view(
|
||||
1, 3
|
||||
)
|
||||
position = camera_position_from_spherical_angles(dist, elev, azim)
|
||||
self.assertClose(position, expected_position, atol=2e-7)
|
||||
R, _ = look_at_view_transform(eye=position)
|
||||
x_axis = R[:, :, 0]
|
||||
expected_x_axis = torch.tensor([0.0, 0.0, -1.0], dtype=torch.float32).view(1, 3)
|
||||
self.assertClose(x_axis, expected_x_axis, atol=5e-3)
|
||||
|
||||
|
||||
class TestCamerasCommon(TestCaseMixin, unittest.TestCase):
|
||||
def test_view_transform_class_method(self):
|
||||
|
||||
Reference in New Issue
Block a user