Fix look_at_view_transform when object location is not (0,0,0) (#230)

Summary:
The look_at_view_transform did not give the correct results when the object location `at` was not (0,0,0).

The problem was on computing the cameras' location in world's coordinate `C`. It only took into account the camera position from spherical angles, but ignored the object location in the world's coordinate system. I simply modified the C tensor to take into account the object's location which is not necessarily in the origin.

I ran unit tests and all but 4 failed with the same error message: `RuntimeError: CUDA error: invalid device ordinal`. However the same happens before this patch, so I believe these errors are unrelated.

Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/230

Reviewed By: gkioxari

Differential Revision: D23278126

Pulled By: nikhilaravi

fbshipit-source-id: c06e891bc46de8222325ee7b37aa43cde44648e8
This commit is contained in:
Eduardo Henrique Arnold
2020-08-21 23:42:40 -07:00
committed by Facebook GitHub Bot
parent 778383eef7
commit d0cec028c7
2 changed files with 20 additions and 2 deletions

View File

@@ -1280,8 +1280,11 @@ def look_at_view_transform(
dist, elev, azim, at, up, device=device
)
dist, elev, azim, at, up = broadcasted_args
C = camera_position_from_spherical_angles(
dist, elev, azim, degrees=degrees, device=device
C = (
camera_position_from_spherical_angles(
dist, elev, azim, degrees=degrees, device=device
)
+ at
)
R = look_at_rotation(C, at, up, device=device)