1. 26 Jan, 2021 1 commit
  2. 25 Jan, 2021 1 commit
    • Jeremy Reizenstein's avatar
      textures device consistency · d173a2f8
      Jeremy Reizenstein authored
      Summary: Ensure that `mesh2 = mesh.to(device)` doesn't change the device of `mesh.textures`.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25978610
      
      fbshipit-source-id: 0558cd62132965d8693ebeea05e42b8c1d16cfbf
      d173a2f8
  3. 22 Jan, 2021 5 commits
    • Penn's avatar
      Fix dimension check (#524) · e58a730e
      Penn authored
      Summary:
      Fixes the assertion that `p1` and `p2` have the same last dimension. The issue was that `D` is set to equal `p2.size(2)`, and then `D` is compared to `p2.size(2)`. The fix instead compares `D` to `p1.size(2).
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/524
      
      Reviewed By: bottler
      
      Differential Revision: D26008688
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: e32afe9da127d81b1a411d3c223b539a7400597b
      e58a730e
    • imlixinyang's avatar
      Update generate_cow_renders.py (#529) · 2ee11c78
      imlixinyang authored
      Summary:
      Typo fixed.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/529
      
      Reviewed By: bottler
      
      Differential Revision: D26008651
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 76d5baadba7bcd3577397adb842e964ee4490b7d
      2ee11c78
    • Jeremy Reizenstein's avatar
      Up vector for plotly · 8eba1684
      Jeremy Reizenstein authored
      Summary: We previously did not send an `up` vector in to plotly when visualization_cameras is supplied. This meant the image would have the default orientation instead of the correct one. Now we use the library function `camera_to_eye_at_up` to calculate the plotly position, which includes the `up` vector.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25981183
      
      fbshipit-source-id: abec72b349f3a5519209e0e6c0518133c3750807
      8eba1684
    • Jeremy Reizenstein's avatar
      (eye, at, up) extraction function · cf9bb7c4
      Jeremy Reizenstein authored
      Summary:
      Plotly viewing from a specific camera location requires converting that location in to an (eye, at, up) specification. There may be other reasons to want to do this as well. I create a separate utility function for it.
      
      I envisage more such utility functions for manipulating camera information, so I create a separate camera_utils.py file for such things.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25981184
      
      fbshipit-source-id: 0947bf98b212676c021f2fddf775bf436dee3487
      cf9bb7c4
    • Jeremy Reizenstein's avatar
      Allow single offset in offset_verts · ddebdfbc
      Jeremy Reizenstein authored
      Summary:
      It is common when trying things out to want to move a whole mesh or point cloud by the same amount. Here we allow the offset functions to broadcast.
      
      Also add a sanity check to join_meshes_as_scene which it is easy to call wrongly.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25980593
      
      fbshipit-source-id: cdf1568e1317e3b81ad94ed4e608ba7eef81290b
      ddebdfbc
  4. 21 Jan, 2021 1 commit
    • Jeremy Reizenstein's avatar
      devices for transform3d · d60c52df
      Jeremy Reizenstein authored
      Summary: Make `to` on Transform3D carry its member _transforms.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25978611
      
      fbshipit-source-id: 12b39e7a657f28d59ca60800bf9f4193a2c08197
      d60c52df
  5. 20 Jan, 2021 2 commits
    • Jeremy Reizenstein's avatar
      lint · 4711665e
      Jeremy Reizenstein authored
      Summary: Fix recent lint.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25900168
      
      fbshipit-source-id: 6b6e8d35b68c8415ef305dc4719f43eda9316c8f
      4711665e
    • Christoph Lassner's avatar
      Fix #501. · 154ace4b
      Christoph Lassner authored
      Summary: Gradient calculation flags were not properly routed through the Python interface. This diff fixes this. In particular, gradients for focal length (only if no other camera gradients were calculated) and opacity were not calculated as required.
      
      Reviewed By: gkioxari
      
      Differential Revision: D25921202
      
      fbshipit-source-id: 22cbae3bda886d81bb95878f0be45c2ddd29934c
      154ace4b
  6. 11 Jan, 2021 2 commits
    • Jeremy Reizenstein's avatar
      Do not set ccbin in torch 1.7.x · b24d89a2
      Jeremy Reizenstein authored
      Summary:
      PyTorch versions 1.7.0 and 1.7.1 are between https://github.com/pytorch/pytorch/pull/43931 and https://github.com/pytorch/pytorch/pull/47404. In this gap, PyTorch always copies CC to nvcc_args, like PyTorch3D does. Newer nvcc versions are not happy with `-ccbin` being specified twice, even if it is specified twice the same. We update PyTorch3D so that it doesn't supply `-ccbin` in these cases.
      
      Also tweak the detection of the current ccbin so that it is aware that `-ccbin foo` and `-ccbin=foo` are equivalent.
      
      Reviewed By: theschnitz
      
      Differential Revision: D25825468
      
      fbshipit-source-id: b04e7718cf01820649518eedda99c399c732e8af
      b24d89a2
    • David Novotny's avatar
      Volume / NeRF notebook links in README.md · da7884ce
      David Novotny authored
      Summary: Adds links to notebooks implementing the Volume / NeRF fitting.
      
      Reviewed By: gkioxari
      
      Differential Revision: D25849756
      
      fbshipit-source-id: 05d7d40589a8559c9bcc43e0d2e22c49f5a92dfd
      da7884ce
  7. 07 Jan, 2021 4 commits
    • Jeremy Reizenstein's avatar
      PLY pointcloud loading · 95707fba
      Jeremy Reizenstein authored
      Summary:
      Allow PLY files to not contain faces. Allow loading pointclouds with color, at least encoded according to the way of some cloudcompare examples.
      
      TODO: Allow vertex normals to be read, and allow vertex colors to be written. Make the return type of load_ply something more user friendly, like a dict.
      
      Noticed in https://github.com/facebookresearch/pytorch3d/issues/209
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22573314
      
      fbshipit-source-id: 72ba1f7c6417f5dfc83f2ebf359eff017057635c
      95707fba
    • Jeremy Reizenstein's avatar
      Read heterogenous nonlist PLY properties as arrays · 3b9fbfc0
      Jeremy Reizenstein authored
      Summary:
      In the original implementation, I had considered PLY properties where there are mixed types of elements in a property to be rare and basically unimportant, so the implementation is very naive.
      
      If we want to support pointcloud PLY files, we need to handle at least the subcase where there are no lists efficiently because this seems to be very common there.
      
      Reviewed By: nikhilaravi, gkioxari
      
      Differential Revision: D22573315
      
      fbshipit-source-id: db6f29446d4e555a2e2b37d38c8e4450d061465b
      3b9fbfc0
    • Jeremy Reizenstein's avatar
      add existing mesh formats to pluggable · 89532a87
      Jeremy Reizenstein authored
      Summary: We already have code for obj and ply formats. Here we actually make it available in `IO.load_mesh` and `IO.save_mesh`.
      
      Reviewed By: theschnitz, nikhilaravi
      
      Differential Revision: D25400650
      
      fbshipit-source-id: f26d6d7fc46c48634a948eea4d255afad13b807b
      89532a87
    • Jeremy Reizenstein's avatar
      skeleton of pluggable IO · b183dcb6
      Jeremy Reizenstein authored
      Summary: Unified interface for loading and saving meshes and pointclouds.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25372968
      
      fbshipit-source-id: 6fe57cc3704a89d81d13e959bee707b0c7b57d3b
      b183dcb6
  8. 06 Jan, 2021 5 commits
    • David Novotny's avatar
      Tutorial - Fit neural radiance field · 9fc661f8
      David Novotny authored
      Summary: Implements a simple nerf tutorial.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24650983
      
      fbshipit-source-id: b3db51c0ed74779ec9b510350d1675b0ae89422c
      9fc661f8
    • David Novotny's avatar
      Tutorial - Fit textured volume. · 01f86dde
      David Novotny authored
      Summary: Implements a notebook that fits a volume to multiple views of the cow mesh.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24553385
      
      fbshipit-source-id: 367ca39e176b40df2c5946c9c05d3be824dc8d1c
      01f86dde
    • David Novotny's avatar
      Implicit/Volume renderer · b466c381
      David Novotny authored
      Summary: Implements the `ImplicitRenderer` and `VolumeRenderer`.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24418791
      
      fbshipit-source-id: 127f21186d8e210895db1dcd0681f09f230d81a4
      b466c381
    • generatedunixname89002005287564's avatar
      Daily `arc lint --take BLACK` · e6a32bfc
      generatedunixname89002005287564 authored
      Reviewed By: zertosh
      
      Differential Revision: D25800514
      
      fbshipit-source-id: 191b2753b8fcfbe2386c761241aaeb58939a973e
      e6a32bfc
    • David Novotny's avatar
      Raysampling · e6bc960f
      David Novotny authored
      Summary: Implements 3 basic raysamplers.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24110643
      
      fbshipit-source-id: eb67d0e56773c7871ebdcb23e7e520302dc1b3c9
      e6bc960f
  9. 05 Jan, 2021 6 commits
    • generatedunixname89002005307016's avatar
      suppress errors in `vision/fair/pytorch3d` · 1f9cf91e
      generatedunixname89002005307016 authored
      Differential Revision: D25781183
      
      fbshipit-source-id: e27808a4c2b94bba205756001cb909827182b592
      1f9cf91e
    • David Novotny's avatar
      Raymarching · 1af1a36b
      David Novotny authored
      Summary: Implements two basic raymarchers.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24064250
      
      fbshipit-source-id: 18071bd039995336b7410caa403ea29fafb5c66f
      1af1a36b
    • David Novotny's avatar
      Point clouds to volumes · aa9bcaf0
      David Novotny authored
      Summary:
      Conversion from point clouds to volumes
      
      ```
      Benchmark                                                        Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      ADD_POINTS_TO_VOLUMES_10_trilinear_[25, 25, 25]_1000                 43219           44067             12
      ADD_POINTS_TO_VOLUMES_10_trilinear_[25, 25, 25]_10000                43274           45313             12
      ADD_POINTS_TO_VOLUMES_10_trilinear_[25, 25, 25]_100000               46281           47100             11
      ADD_POINTS_TO_VOLUMES_10_trilinear_[101, 111, 121]_1000              51224           51912             10
      ADD_POINTS_TO_VOLUMES_10_trilinear_[101, 111, 121]_10000             52092           54487             10
      ADD_POINTS_TO_VOLUMES_10_trilinear_[101, 111, 121]_100000            59262           60514              9
      ADD_POINTS_TO_VOLUMES_10_nearest_[25, 25, 25]_1000                   15998           17237             32
      ADD_POINTS_TO_VOLUMES_10_nearest_[25, 25, 25]_10000                  15964           16994             32
      ADD_POINTS_TO_VOLUMES_10_nearest_[25, 25, 25]_100000                 16881           19286             30
      ADD_POINTS_TO_VOLUMES_10_nearest_[101, 111, 121]_1000                19150           25277             27
      ADD_POINTS_TO_VOLUMES_10_nearest_[101, 111, 121]_10000               18746           19999             27
      ADD_POINTS_TO_VOLUMES_10_nearest_[101, 111, 121]_100000              22321           24568             23
      ADD_POINTS_TO_VOLUMES_100_trilinear_[25, 25, 25]_1000                49693           50288             11
      ADD_POINTS_TO_VOLUMES_100_trilinear_[25, 25, 25]_10000               51429           52449             10
      ADD_POINTS_TO_VOLUMES_100_trilinear_[25, 25, 25]_100000             237076          237377              3
      ADD_POINTS_TO_VOLUMES_100_trilinear_[101, 111, 121]_1000             81875           82597              7
      ADD_POINTS_TO_VOLUMES_100_trilinear_[101, 111, 121]_10000           106671          107045              5
      ADD_POINTS_TO_VOLUMES_100_trilinear_[101, 111, 121]_100000          483740          484607              2
      ADD_POINTS_TO_VOLUMES_100_nearest_[25, 25, 25]_1000                  16667           18143             31
      ADD_POINTS_TO_VOLUMES_100_nearest_[25, 25, 25]_10000                 17682           18922             29
      ADD_POINTS_TO_VOLUMES_100_nearest_[25, 25, 25]_100000                65463           67116              8
      ADD_POINTS_TO_VOLUMES_100_nearest_[101, 111, 121]_1000               48058           48826             11
      ADD_POINTS_TO_VOLUMES_100_nearest_[101, 111, 121]_10000              53529           53998             10
      ADD_POINTS_TO_VOLUMES_100_nearest_[101, 111, 121]_100000            123684          123901              5
      --------------------------------------------------------------------------------
      ```
      
      Output with `DEBUG=True`
      {F338561209}
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22017500
      
      fbshipit-source-id: ed3e8ed13940c593841d93211623dd533974012f
      aa9bcaf0
    • David Novotny's avatar
      Volumes data structure. · 03ee1dbf
      David Novotny authored
      Summary: Implemented a data structure for volumes.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20342920
      
      fbshipit-source-id: ccc23eaa183ed8a4e9cd7674b4dcf31e8a65c3c6
      03ee1dbf
    • David Novotny's avatar
      __getitem__ for Transform3D · 1e4a2e86
      David Novotny authored
      Summary: Implements the `__getitem__` method for `Transform3D`
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23813975
      
      fbshipit-source-id: 5da752ed8ea029ad0af58bb7a7856f0995519b7a
      1e4a2e86
    • generatedunixname89002005307016's avatar
      suppress errors in `vision/fair/pytorch3d` · ac3f8dc8
      generatedunixname89002005307016 authored
      Differential Revision: D25777275
      
      fbshipit-source-id: ca30fedca118ff22a8be5e29c4c4f21628c94579
      ac3f8dc8
  10. 04 Jan, 2021 1 commit
  11. 27 Dec, 2020 1 commit
    • Jeremy Reizenstein's avatar
      fix conda channel in tests · 0ba55a83
      Jeremy Reizenstein authored
      Summary: Now we use iopath, we need to find it from its own channel.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25710499
      
      fbshipit-source-id: 1c67eb6d5b009d35b65a3acd3ebff6e0e45fecc4
      0ba55a83
  12. 24 Dec, 2020 4 commits
    • generatedunixname89002005307016's avatar
      suppress errors in `vision/fair/pytorch3d` · fc58acb2
      generatedunixname89002005307016 authored
      Differential Revision: D25702902
      
      fbshipit-source-id: f0d6708ba917df85b575dfc5525c902b2cab7ea0
      fc58acb2
    • Jeremy Reizenstein's avatar
      PathManager passing · 25c065e9
      Jeremy Reizenstein authored
      Summary:
      Make no internal functions inside pytorch3d/io interpret str paths except using a PathManager from iopath which they have been given. This means we no longer use any global PathManager object and we no longer use fvcore's deprecated file_io.
      
      To preserve the APIs, various top level functions create their own default-initialized PathManager object if they are not provided one.
      
      Reviewed By: theschnitz
      
      Differential Revision: D25372969
      
      fbshipit-source-id: c176ee31439645fa54a157d6f1aef18b09501569
      25c065e9
    • Jeremy Reizenstein's avatar
      lint · b9562157
      Jeremy Reizenstein authored
      Summary: Allowing usort, isort and black to coexist without fighting means we can't have imports commented as deprecated from the same module as other imports.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25372970
      
      fbshipit-source-id: 637f5a0025c0df9fbec47cba73ce5387f4f8b467
      b9562157
    • Jeremy Reizenstein's avatar
      iopath dependency · 513a6476
      Jeremy Reizenstein authored
      Summary: Add ioPath as a dependency of PyTorch3D in preparation for using the new PathManager.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25372971
      
      fbshipit-source-id: d8aa661d2de975e747dd494edc42bf843990cf68
      513a6476
  13. 22 Dec, 2020 1 commit
    • Jeremy Reizenstein's avatar
      requirements for readthedocs · 0a309ec6
      Jeremy Reizenstein authored
      Summary: Use a more recent PyTorch to build the documentation.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25679756
      
      fbshipit-source-id: 83d647f709337110d39886eaa6aad2565d740c6d
      0a309ec6
  14. 21 Dec, 2020 1 commit
    • Christoph Lassner's avatar
      Fix Pulsar backend batched radius handling. · caa33713
      Christoph Lassner authored
      Summary: This fixes a corner case for multi-radius handling for the pulsar backend. The additional dimensionality check ensures that the batched parsing for radiuses is only performed when appropriate.
      
      Reviewed By: bottler
      
      Differential Revision: D25387708
      
      fbshipit-source-id: c486dcf327f812265b7ca8ca5ef5c6a31e6d4549
      caa33713
  15. 18 Dec, 2020 2 commits
  16. 17 Dec, 2020 1 commit
    • Nikhila Ravi's avatar
      Texture Atlas sampling bug fix · 01759d8f
      Nikhila Ravi authored
      Summary: Fixes the index out of bound errors for texture sampling from a texture atlas: when barycentric coordinates are 1.0, the integer index into the (R, R) per face texture map is R (max can only be R-1).
      
      Reviewed By: gkioxari
      
      Differential Revision: D25543803
      
      fbshipit-source-id: 82d0935b981352b49c1d95d5a17f9cc88bad0a82
      01759d8f
  17. 15 Dec, 2020 2 commits