1. 26 Jun, 2021 1 commit
    • Patrick Labatut's avatar
      More type annotations · f593bfd3
      Patrick Labatut authored
      Summary: More type annotations: device, shaders, pluggable I/O, stats in NeRF project, cameras, textures, etc...
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29327396
      
      fbshipit-source-id: cdf0ceaaa010e22423088752688c8dd81f1acc3c
      f593bfd3
  2. 24 Jun, 2021 4 commits
    • Nikhila Ravi's avatar
      Save UV texture with obj mesh · 542e2e7c
      Nikhila Ravi authored
      Summary: Add functionality to to save an `.obj` file with associated UV textures: `.png` image and `.mtl` file as well as saving verts_uvs and faces_uvs to the `.obj` file.
      
      Reviewed By: bottler
      
      Differential Revision: D29337562
      
      fbshipit-source-id: 86829b40dae9224088b328e7f5a16eacf8582eb5
      542e2e7c
    • Patrick Labatut's avatar
      Annotate dunder functions · 64289a49
      Patrick Labatut authored
      Summary: Annotate the (return type of the) following dunder functions across the codebase: `__init__()`, `__len__()`, `__getitem__()`
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29001801
      
      fbshipit-source-id: 928d9e1c417ffe01ab8c0445311287786e997c7c
      64289a49
    • Pyre Bot Jr's avatar
      suppress errors in `vision/fair/pytorch3d` · 35855bf8
      Pyre Bot Jr authored
      Differential Revision: D29360359
      
      fbshipit-source-id: 9e91e8499a23e30a5fc39f8f6444b2db9f6b4142
      35855bf8
    • Georgia Gkioxari's avatar
      refactor laplacian matrices · 07a5a68d
      Georgia Gkioxari authored
      Summary:
      Refactor of all functions to compute laplacian matrices in one file.
      Support for:
      * Standard Laplacian
      * Cotangent Laplacian
      * Norm Laplacian
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29297466
      
      fbshipit-source-id: b96b88915ce8ef0c2f5693ec9b179fd27b70abf9
      07a5a68d
  3. 23 Jun, 2021 2 commits
    • Christoph Lassner's avatar
      Add PyTorch3D->OpenCV camera parameter conversion. · da9974b4
      Christoph Lassner authored
      Summary: This diff implements the inverse of D28992470 (https://github.com/facebookresearch/pytorch3d/commit/8006842f2a5ab1546a90797a6394f875adce045c): a function to extract OpenCV convention camera parameters from a PyTorch3D `PerspectiveCameras` object. This is the first part of the new PyTorch3d<>OpenCV<>Pulsar conversion functions.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29278411
      
      fbshipit-source-id: 68d4555b508dbe8685d8239443f839d194cc2484
      da9974b4
    • Patrick Labatut's avatar
      Remove _C pyre fixmes · e4039aa5
      Patrick Labatut authored
      Summary:
      Get rid of pyre fixmes related to importing a native module:
      - add stub file for the `_C` native extension to the internal typeshed
      - add initial annotations to the new stub file
      - remove the now unnecessary pyre ignores
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28929467
      
      fbshipit-source-id: 6525e15c8f27215a3ff6f78392925fd0ed6ec2ac
      e4039aa5
  4. 22 Jun, 2021 10 commits
    • Nikhila Ravi's avatar
      Create stale.yml (#721) · de72049f
      Nikhila Ravi authored
      Summary:
      Github action to close issues/PRs that are not labelled with "enhancement" or "how-to" if they have not had any activity in 30 days.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/721
      
      Reviewed By: bottler
      
      Differential Revision: D29309817
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 039f6d4f29e9d04c01f59d145317a34ad75026a5
      de72049f
    • Jeremy Reizenstein's avatar
      texture map list validation · 279f4a15
      Jeremy Reizenstein authored
      Summary: Add some more validation of a list of texture maps. Move the initialisation of maps_padded to a new function to reduce complexity.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29263443
      
      fbshipit-source-id: 153e262d2e9af21090570768020fca019e364024
      279f4a15
    • Jeremy Reizenstein's avatar
      Flexible #channels in TexturesUV.join_scene · 2a0660ba
      Jeremy Reizenstein authored
      Summary: The TexturesUV class supports an arbitrary number of channels. In one place in join_scene we unnecessarily assumed the usual value, 3.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29133477
      
      fbshipit-source-id: de8eb15fdd55675da084634d9d99e2a3f4d35401
      2a0660ba
    • Jeremy Reizenstein's avatar
      use C for #channels in textures · c5387258
      Jeremy Reizenstein authored
      Summary: Comments in textures.py were inconsistent in describing the number of channels, sometimes C, sometimes D, sometimes 3. Now always C.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29263435
      
      fbshipit-source-id: 7c1260c164c52852dc9e14d0e12da4cfb64af408
      c5387258
    • Jeremy Reizenstein's avatar
      builds for PyTorch 1.9 · c639198c
      Jeremy Reizenstein authored
      Summary:
      Build for pytorch 1.9, and make it the only mac build. Not testing on cuda 11.1, because of annoying failures which are restricted to certain hardware.
      
      Also update cuda driver in CI tests.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29302314
      
      fbshipit-source-id: 78def378adb9d7aa287abdc5ac0af269e3ba3625
      c639198c
    • Jeremy Reizenstein's avatar
      Fix build for package_data · bbc12e70
      Jeremy Reizenstein authored
      Summary: include_package_data does not work well in the presence of built extensions, and the OSS build hasn't been working for a few days since #593 was merged.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29302315
      
      fbshipit-source-id: db7e46f8c4593743c3522087979592f9989c7c6b
      bbc12e70
    • Pyre Bot Jr's avatar
      suppress errors in `fbcode/vision` - batch 2 · 639f05a1
      Pyre Bot Jr authored
      Differential Revision: D29301375
      
      fbshipit-source-id: a061a2fb7c7f2fd2038e31b28a5bdf0bfe1676f6
      639f05a1
    • Patrick Labatut's avatar
      Add license linting for PyTorch3D · 8f4ddb5a
      Patrick Labatut authored
      Summary: Add license linting for PyTorch3D
      
      Reviewed By: zertosh
      
      Differential Revision: D29001800
      
      fbshipit-source-id: 3099cd6dac58dc5403f768aafde491b74fbc4dc2
      8f4ddb5a
    • Patrick Labatut's avatar
      License lint codebase · af93f348
      Patrick Labatut authored
      Summary: License lint codebase
      
      Reviewed By: theschnitz
      
      Differential Revision: D29001799
      
      fbshipit-source-id: 5c59869911785b0181b1663bbf430bc8b7fb2909
      af93f348
    • Patrick Labatut's avatar
      Lint codebase · 7e43f29d
      Patrick Labatut authored
      Summary: Lint codebase
      
      Reviewed By: bottler
      
      Differential Revision: D29263057
      
      fbshipit-source-id: ac97f01d2a79fead3b09c2cbb21b50ce688a577d
      7e43f29d
  5. 21 Jun, 2021 8 commits
    • Jeremy Reizenstein's avatar
      remove requires_grad from random rotations · ce60d4b0
      Jeremy Reizenstein authored
      Summary: Because rotations and (rotation) quaternions live on curved manifolds, it doesn't make sense to optimize them directly. Having a prominent option to require gradient on random ones may cause people to try, and isn't particularly useful.
      
      Reviewed By: theschnitz
      
      Differential Revision: D29160734
      
      fbshipit-source-id: fc9e320672349fe334747c5b214655882a460a62
      ce60d4b0
    • Jeremy Reizenstein's avatar
      Test gltf texture without renderer. · 31c448a9
      Jeremy Reizenstein authored
      Summary:
      Change the cow gltf loading test to validate the texture values and not to validate the renderer output because it has an unstable pixel.
      
      Also a couple of lints.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29131260
      
      fbshipit-source-id: 5e11f066a2a638588aacb09776cc842173ef669f
      31c448a9
    • Jeremy Reizenstein's avatar
      conda timeout in CI · 9c09c0d3
      Jeremy Reizenstein authored
      Summary: Conda build command can be very slow at resolving dependencies with PyTorch 1.8. I extended the timeout for this in the tests. Here do the same for the builds.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29131188
      
      fbshipit-source-id: 554e694f0f8aa7509141016720b1e9019177b214
      9c09c0d3
    • Jeremy Reizenstein's avatar
      Fix save_ply with noncontiguous faces · 354a1808
      Jeremy Reizenstein authored
      Summary: As noted in #710, save_ply was failing with some values of the faces tensor. It was assuming the faces were contiguous in using view() to change them. Here we avoid doing that.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29159655
      
      fbshipit-source-id: 47214a7ce915bab8d81f109c2b97cde464fd57d8
      354a1808
    • David Novotny's avatar
      Conversion from OpenCV cameras · 8006842f
      David Novotny authored
      Summary: Implements a conversion function between OpenCV and PyTorch3D cameras.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D28992470
      
      fbshipit-source-id: dbcc9f213ec293c2f6938261c704aea09aad3c90
      8006842f
    • David Novotny's avatar
      SE3 exponential and logarithm maps. · b2ac2655
      David Novotny authored
      Summary:
      Implements the SE3 logarithm and exponential maps.
      (this is a second part of the split of D23326429)
      
      Outputs of `bm_se3`:
      ```
      Benchmark         Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      SE3_EXP_1                738             885            678
      SE3_EXP_10               717             877            698
      SE3_EXP_100              718             847            697
      SE3_EXP_1000             729            1181            686
      --------------------------------------------------------------------------------
      
      Benchmark          Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      SE3_LOG_1               1451            2267            345
      SE3_LOG_10              2185            2453            229
      SE3_LOG_100             2217            2448            226
      SE3_LOG_1000            2455            2599            204
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: patricklabatut
      
      Differential Revision: D27852557
      
      fbshipit-source-id: e42ccc9cfffe780e9cad24129de15624ae818472
      b2ac2655
    • David Novotny's avatar
      SO3 improvements for stable gradients. · 9f14e82b
      David Novotny authored
      Summary:
      Improves so3 functions to make gradient computation stable:
      - Instead of `torch.acos`, uses `acos_linear_extrapolation` which has finite gradients of reasonable magnitude for all inputs.
      - Adds tests for the latter.
      
      The tests of the finiteness of the gradient in `test_so3_exp_singularity`, `test_so3_exp_singularity`, `test_so3_cos_bound` would fail if the `so3` functions would call `torch.acos` instead of `acos_linear_extrapolation`.
      
      Reviewed By: bottler
      
      Differential Revision: D23326429
      
      fbshipit-source-id: dc296abf2ae3ddfb3942c8146621491a9cb740ee
      9f14e82b
    • David Novotny's avatar
      Linearly extrapolated acos. · dd45123f
      David Novotny authored
      Summary:
      Implements a backprop-safe version of `torch.acos` that linearly extrapolates the function outside bounds.
      
      Below is a plot of the extrapolated acos for different bounds:
      {F611339485}
      
      Reviewed By: bottler, nikhilaravi
      
      Differential Revision: D27945714
      
      fbshipit-source-id: fa2e2385b56d6fe534338d5192447c4a3aec540c
      dd45123f
  6. 18 Jun, 2021 4 commits
  7. 17 Jun, 2021 1 commit
    • Patrick Labatut's avatar
      Increase code coverage of shader · a8610e9d
      Patrick Labatut authored
      Summary: Increase code coverage of shader and re-include them in code coverage test
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D29097503
      
      fbshipit-source-id: 2791989ee1562cfa193f3addea0ce72d6840614a
      a8610e9d
  8. 15 Jun, 2021 1 commit
    • Nikhila Ravi's avatar
      Bug fix in rendering clipped meshes · c75ca04c
      Nikhila Ravi authored
      Summary:
      There was a bug when `z_clip_value` is not None but there are no faces which are actually visible in the image due to culling.  In `rasterize_meshes.py` a function `convert_clipped_rasterization_to_original_faces` is called to convert the clipped face indices etc back to the unclipped versions, but the case where there is no clipping was not handled correctly.
      
      Fixes Github Issue #632
      
      Reviewed By: bottler
      
      Differential Revision: D29116150
      
      fbshipit-source-id: fae82a0b4848c84b3ed7c7b04ef5c9848352cf5c
      c75ca04c
  9. 14 Jun, 2021 3 commits
    • Nikhila Ravi's avatar
      Lighting broadcasting bug fix · bc8361fa
      Nikhila Ravi authored
      Summary: Fixed multiple issues with shape broadcasting in lighting, shading and blending and updated the tests.
      
      Reviewed By: bottler
      
      Differential Revision: D28997941
      
      fbshipit-source-id: d3ef93f979344076b1d9098a86178b4da63844c8
      bc8361fa
    • Jeremy Reizenstein's avatar
      PyTorch 1.8 builds · 9de627e0
      Jeremy Reizenstein authored
      Summary: Nightly builds to support PyTorch 1.8.0 and PyTorch 1.8.1.
      
      Reviewed By: patricklabatut
      
      Differential Revision: D29098081
      
      fbshipit-source-id: fc6b36e919892ea41979a03e64a6fc8003528b78
      9de627e0
    • Patrick Labatut's avatar
      Increase code coverage of subdivide_meshes · 780e2315
      Patrick Labatut authored
      Summary: Increase code coverage of subdivide_meshes and re-include it in code coverage test
      
      Reviewed By: bottler
      
      Differential Revision: D29097476
      
      fbshipit-source-id: 3403ae38a90c4b53f24188eed11faae202a235b5
      780e2315
  10. 11 Jun, 2021 3 commits
    • Nikhila Ravi's avatar
      Culling to frustrum bug fix · a0f79318
      Nikhila Ravi authored
      Summary:
      When `z_clip_value = None` and faces are outside the view frustum the shape of one of the tensors in `clip.py` is incorrect.
      
      `faces_num_clipped_verts` should be (F,) but it was (F,3).  Added a new test to ensure this case is handled.
      
      Reviewed By: bottler
      
      Differential Revision: D29051282
      
      fbshipit-source-id: 5f4172ba4d4a75d928404dde9abf48aef18c68bd
      a0f79318
    • Nikhila Ravi's avatar
      textures dimension check · ef162539
      Nikhila Ravi authored
      Summary:
      When textures are set on `Meshes` we need to check if the dimensions actually match that of the verts/faces in the mesh. There was a github issue where someone tried to set the attribute after construction of the `Meshes` object and ran into an error when trying to sample textures.
      
      The desired usage is to initialize the class with the textures (not set an attribute afterwards) but in any case we need to check the dimensions match before sampling textures.
      
      Reviewed By: bottler
      
      Differential Revision: D29020249
      
      fbshipit-source-id: 9fb8a5368b83c9ec53652df92b96fc8b2613f591
      ef162539
    • Patrick Labatut's avatar
      Omit specific code from code coverage · 1cd14364
      Patrick Labatut authored
      Summary: Omit specific code from code coverage computation. This is done to make code coverage test pass again. Test coverage for shader.py and subdivide_meshes.py will be increased in later diffs to re-include them.
      
      Reviewed By: bottler
      
      Differential Revision: D29061105
      
      fbshipit-source-id: addac35a216c96de9f559e2d8fe42496adc85791
      1cd14364
  11. 10 Jun, 2021 1 commit
  12. 09 Jun, 2021 2 commits
    • Patrick Labatut's avatar
      Make Transform3d.to() not ignore dtype · 44508ed0
      Patrick Labatut authored
      Summary: Make Transform3d.to() not ignore a different dtype when device is the same and no copy is requested. Fix other methods where dtype is ignored.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28981171
      
      fbshipit-source-id: 4528e6092f4a693aecbe8131ede985fca84e84cf
      44508ed0
    • Patrick Labatut's avatar
      Fix type annotations for device type · 626bf3fe
      Patrick Labatut authored
      Summary: Fix type annotations for device type
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28971179
      
      fbshipit-source-id: 410b673c76dfd65ac51b2d144f17ed86a04a3058
      626bf3fe