1. 26 May, 2021 4 commits
    • Jeremy Reizenstein's avatar
      Experimental glTF reading · ed6983ea
      Jeremy Reizenstein authored
      Summary: Experimental data loader for taking the default scene from a GLB file and converting it to a single mesh in PyTorch3D.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D25900167
      
      fbshipit-source-id: bff22ac00298b83a0bd071ae5c8923561e1d81d7
      ed6983ea
    • Jeremy Reizenstein's avatar
      ambient lighting · 0e85652f
      Jeremy Reizenstein authored
      Summary:
      Specific object to represent light which is 100% everywhere. Sometimes lighting is irrelevant, for example when viewing a mesh which has lighting already baked in.
      
      This is not primarily aiming for a performance win but I think the test which has changed might be a bit faster.
      
      Reviewed By: theschnitz
      
      Differential Revision: D26405151
      
      fbshipit-source-id: 82eae55de0bee918548a3eaf031b002cb95e726c
      0e85652f
    • Jeremy Reizenstein's avatar
      rotate_on_spot · 61e38de0
      Jeremy Reizenstein authored
      Summary: Function to relatively rotate a camera position. Also document how to relatively translate a camera position.
      
      Reviewed By: theschnitz
      
      Differential Revision: D25900166
      
      fbshipit-source-id: 2ddaf06ee7c5e2a2e973c04d7dee6ccb61c6ff84
      61e38de0
    • Jeremy Reizenstein's avatar
      Deduplicate texture maps when joining · e12a0813
      Jeremy Reizenstein authored
      Summary:
      If you join several meshes which have TexturesUV textures using join_meshes_as_scene then we amalgamate all the texture images in to a single one. This now checks if some of the images are equal (i.e. the tensors are the same tensor, in the `is` sense; they have the same `id` in Python) and only uses one copy if they are.
      
      I have an example of a massive scene made of several textured meshes with some shared, where this makes the difference between fitting the data on the GPU and not.
      
      Reviewed By: theschnitz
      
      Differential Revision: D25982364
      
      fbshipit-source-id: a8228805f38475c796302e27328a340d9b56c8ef
      e12a0813
  2. 19 May, 2021 1 commit
    • Dave Schnizlein's avatar
      Update Rotate transform to use device of input rotation · cd5af252
      Dave Schnizlein authored
      Summary: Currently the Rotate transform does not consider the R's device at all, resulting in errors if you're expecting it to be on cuda but it gets the default casting to cpu. This updates the transform to respect R's device.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27828118
      
      fbshipit-source-id: ddd99f73eadbd990688eb22f3d1ffbacbe168c81
      cd5af252
  3. 13 May, 2021 1 commit
    • Jeremy Reizenstein's avatar
      gitignore for NeRF · c9dea621
      Jeremy Reizenstein authored
      Summary: Add gitignore file to ignore data and checkpoints in the NeRF project.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28382413
      
      fbshipit-source-id: 747d69f4353a76a28acde8ba26a896cb2278f976
      c9dea621
  4. 07 May, 2021 4 commits
    • Jeremy Reizenstein's avatar
      avoid running tests twice · 0ca839cc
      Jeremy Reizenstein authored
      Summary: Avoid test files explicitly importing TestCase objects from each other, because doing so causes the tests to be discovered twice by unittest discover. This means moving a few static functions out of their classes. I noticed this while trying to fix failures from yesterday.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28194679
      
      fbshipit-source-id: ac6e6585603bd4ef9c098cdd56891d94f8923ba6
      0ca839cc
    • Jeremy Reizenstein's avatar
      test_meshes numeric fixes · e3624b4e
      Jeremy Reizenstein authored
      Summary:
      A couple of tests are failing in open source after my changes yesterday because of numerical issues calculating normals. In particular we have meshes with very few vertices and several faces, where the normals should be zero but end up non-negligible after F.normalize. I have no idea why the different environments produce different results, so that the tests are passing internally.
      
      An example. Consider a mesh with the following faces:
      ```
      tensor([[4, 0, 2],
              [4, 1, 2],
              [3, 1, 0],
              [1, 3, 1],
              [3, 0, 1],
              [4, 0, 0],
              [4, 0, 2]])
      ```
      At vertex 3, there is one zero-area face and there are two other faces, which are back-to-back with each other. This vertex should have zero normal. The open source calculation produces a small but nonzero normal which varies unpredictably with changes in scale/offset, which can cause test failures.
      
      In this diff, the main change is to increase the number of vertices to make this less likely to happen. Also a small change to init_mesh to make it not generate a batch of empty meshes.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28220984
      
      fbshipit-source-id: 79fdc62e5f5f8836de5a3a9980cfd6fe44590359
      e3624b4e
    • Daisy's avatar
      Handle header has no newline or space after OFF. (#665) · 5241b7dd
      Daisy authored
      Summary:
      Allow a line like `OFF10 10 10` as the start of an OFF file. Such things apparently occur in ModelNet40.
      
      This resolves https://github.com/facebookresearch/pytorch3d/issues/663.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/665
      
      Test Plan: New test
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28180006
      
      Pulled By: bottler
      
      fbshipit-source-id: 7f474c6a262e32da012217e09f76e8672a7f0278
      5241b7dd
    • Gil Moshayof's avatar
      Make extend respect subclasses of textures · 34163326
      Gil Moshayof authored
      Summary: 3 extend functions in textures.py updated to call `self.__class__` rather than create a new object of its type. As mentioned in https://github.com/facebookresearch/pytorch3d/issues/618 .
      
      Reviewed By: bottler
      
      Differential Revision: D28281218
      
      fbshipit-source-id: b9c99ab87e46a3f28c37efa1ee2c2dceb560b491
      34163326
  5. 05 May, 2021 1 commit
    • Jeremy Reizenstein's avatar
      remove skimage import from most tutorials · d17b121d
      Jeremy Reizenstein authored
      Summary:
      Several tutorials were importing skimage and not using it (and it is not an official dependency of PyTorch3D).
      
      Also several had a bad call to plt.grid.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28185822
      
      fbshipit-source-id: adabfd0d4d339e1081c26b7b28f5e3953b492f2e
      d17b121d
  6. 04 May, 2021 8 commits
    • Jeremy Reizenstein's avatar
      PLY load normals · 6fa66f55
      Jeremy Reizenstein authored
      Summary: Add ability to load normals when they are present in a PLY file.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D26458971
      
      fbshipit-source-id: 658270b611f7624eab4f5f62ff438038e1d25723
      6fa66f55
    • Jeremy Reizenstein's avatar
      save normals from Meshes, Pointclouds to PLY · b314beed
      Jeremy Reizenstein authored
      Summary: Save existing vertex normals when a mesh is saved to PLY, and existing normals when a point cloud is saved to PLY.
      
      Reviewed By: theschnitz
      
      Differential Revision: D27765257
      
      fbshipit-source-id: fa0aae4c0f100f7e5eb742f48fc3dfc87435deba
      b314beed
    • Jeremy Reizenstein's avatar
      has_verts_normals for Meshes · 66b97a0c
      Jeremy Reizenstein authored
      Summary: Add ability to ask a Meshes if it already has normals. If it does, then requesting normals will not trigger a calculation. MeshesFormatInterpreters will therefore be able to decide whether to save normals.
      
      Reviewed By: theschnitz, nikhilaravi
      
      Differential Revision: D27765261
      
      fbshipit-source-id: 7c87dbf999d5616d20f5eb2c01039ee5ff65a830
      66b97a0c
    • Jeremy Reizenstein's avatar
      Allow setting verts_normals on Meshes · 2bbca5f2
      Jeremy Reizenstein authored
      Summary: Add ability to set the vertex normals when creating a Meshes, so that the pluggable loaders can return them from a file.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27765258
      
      fbshipit-source-id: b5ddaa00de3707f636f94d9f74d1da12ecce0608
      2bbca5f2
    • Jeremy Reizenstein's avatar
      avoid recalculating normals for simple move · 502f15ac
      Jeremy Reizenstein authored
      Summary: If offset_verts_ is used to move meshes with a single vector, the normals won't change so don't need to recalculate. I am planning to allow user-specified vertex normals. This change means that user-specified vertex normals won't get overwritten when they don't need to be.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27765256
      
      fbshipit-source-id: f6e4d308ac9ac023030325cb75a18d39b966cf88
      502f15ac
    • Jeremy Reizenstein's avatar
      Scale leaves verts normals unchanged · 17633808
      Jeremy Reizenstein authored
      Summary:
      There is no need to recalculate normals when scaling a mesh by a constant. We omit doing this for vertex normals. This will make things less confusing when we allow user-specified vertex normals.
      
      Face normals also don't need recalculating, but they are calculated at the same time as face areas which do, so it is easiest not to change their behavior here. That is convenient because we are not immediately planning to allow user-specified face normals.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27793476
      
      fbshipit-source-id: 827f1be4bc78bf0391ce3959cce48c4f3ee326fe
      17633808
    • Jeremy Reizenstein's avatar
      PLY color scaling · e9f4e0d0
      Jeremy Reizenstein authored
      Summary: When a PLY file contains colors in byte format, these are now scaled from 0..255 to [0,1], as they should be
      
      Reviewed By: gkioxari
      
      Differential Revision: D27765254
      
      fbshipit-source-id: 526b5f5149d5e8cbffd7412b411be52c935fa4ad
      e9f4e0d0
    • Jeremy Reizenstein's avatar
      PLY TexturesVertex loading · 6c3fe952
      Jeremy Reizenstein authored
      Summary:
      Include TexturesVertex colors when loading and saving Meshes to PLY files.
      
      A couple of other improvements to the internals of ply_io, including using `None` instead of empty tensors for some missing data.
      
      Reviewed By: gkioxari
      
      Differential Revision: D27765260
      
      fbshipit-source-id: b9857dc777c244b9d7d6643b608596d31435ecda
      6c3fe952
  7. 28 Apr, 2021 1 commit
    • Jeremy Reizenstein's avatar
      use no_grad for sample_pdf in NeRF project · 097b0ef2
      Jeremy Reizenstein authored
      Summary: We don't use gradents of sample_pdf. Here we disable gradient calculation around calling it, instead of calling detach later. There's a theoretical speedup, but mainly this enables using sample_pdf implementations which don't support gradients.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D28057284
      
      fbshipit-source-id: 8a9d5e73f18b34e1e4291028008e02973023638d
      097b0ef2
  8. 22 Apr, 2021 3 commits
    • Jeremy Reizenstein's avatar
      fvcore channel priority · 6053d0e4
      Jeremy Reizenstein authored
      Summary: As remarked in #655, we need to specify the fvcore channel before conda-forge, because there is now an fvcore on conda-forge which we don't aim to use. Compare D27589827
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27938996
      
      fbshipit-source-id: 8abf7994a26e0ea9e6a19fb1e246aba7af091ddc
      6053d0e4
    • Jeremy Reizenstein's avatar
      Avoid temporary arrays in _check_density_bounds · b538f107
      Jeremy Reizenstein authored
      Summary: We can check the bounds without using extra memory. This produces a small speedup in NeRF training (like 0.5%).
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27859691
      
      fbshipit-source-id: d566420c465f51231f4a57438084c98b73253046
      b538f107
    • Pyre Bot Jr's avatar
      suppress errors in `vision/fair/pytorch3d` · 04d318d8
      Pyre Bot Jr authored
      Differential Revision: D27934268
      
      fbshipit-source-id: 51185fa493451012a9b2fd37379897d60596f73b
      04d318d8
  9. 20 Apr, 2021 1 commit
  10. 17 Apr, 2021 1 commit
    • Wanchao Liang's avatar
      Remove some pyre fixmes · 8660db98
      Wanchao Liang authored
      Reviewed By: divchenko
      
      Differential Revision: D27835360
      
      fbshipit-source-id: cbb23793ee57382e43bd65bd40cfeb2820c6eec2
      8660db98
  11. 14 Apr, 2021 3 commits
  12. 13 Apr, 2021 1 commit
    • Jeremy Reizenstein's avatar
      lint fixes · c18ee9d4
      Jeremy Reizenstein authored
      Summary: Lint after recent changes.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27682328
      
      fbshipit-source-id: 285d159010d886e4e97902995adbdff875fd3c19
      c18ee9d4
  13. 09 Apr, 2021 4 commits
    • Jeremy Reizenstein's avatar
      spelling · 124bb5e3
      Jeremy Reizenstein authored
      Summary: Collection of spelling things, mostly in docs / tutorials.
      
      Reviewed By: gkioxari
      
      Differential Revision: D26101323
      
      fbshipit-source-id: 652f62bc9d71a4ff872efa21141225e43191353a
      124bb5e3
    • Rong Rong (AI Infra)'s avatar
      Allow tests to be run on GPU with remote execution · c2e62a50
      Rong Rong (AI Infra) authored
      Summary: Test path special case
      
      Reviewed By: bottler
      
      Differential Revision: D27566817
      
      fbshipit-source-id: c7b3ac839908c071f1378a37b7013b91ca4e8b18
      c2e62a50
    • Rong Rong (AI Infra)'s avatar
      Get rid of duplicate test data directory initialization · dd834392
      Rong Rong (AI Infra) authored
      Summary: Simplify finding the data directories in the tests.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27634293
      
      fbshipit-source-id: dc308a7c86c41e6fae56a2ab58187c9f0335b575
      dd834392
    • Rong Rong (AI Infra)'s avatar
      Extract finding directories for test data · 1216b576
      Rong Rong (AI Infra) authored
      Summary: Make common functions for finding directories where test data is found, instead of lots of tests using their own `__file__`  while trying to get ./tests/data and the tutorials data.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27633701
      
      fbshipit-source-id: 1467bb6018cea16eba3cab097d713116d51071e9
      1216b576
  14. 08 Apr, 2021 2 commits
    • Jeremy Reizenstein's avatar
      Fix flake exceptions · 24ee2790
      Jeremy Reizenstein authored
      Summary: flake8 no longer respects the black fmt:off message, so include specific line-length exclusion.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27624641
      
      fbshipit-source-id: adcdb6f55b382fbf252eede3f3ddeda0621da883
      24ee2790
    • David Novotny's avatar
      Implicit function docfix · 7c0d3071
      David Novotny authored
      Summary: Fixes implicit function doc.
      
      Reviewed By: theschnitz, nikhilaravi
      
      Differential Revision: D26870946
      
      fbshipit-source-id: 5d03ebbc284153c41b9d6695b28c8b4e11bc0a5c
      7c0d3071
  15. 23 Mar, 2021 1 commit
    • Jeremy Reizenstein's avatar
      CI fixes · cc08c6b2
      Jeremy Reizenstein authored
      Summary:
      Update `main` build to latest CircleCI image - Ubuntu 2020.04.
      
      Avoid torch.logical_or and logical_and for PyTorch 1.4 compatibility.
      
      Also speed up the test run with Pytorch 1.4.0 (which has no ninja) by not setting NVCC_FLAGS for it.
      
      Reviewed By: theschnitz
      
      Differential Revision: D27262327
      
      fbshipit-source-id: ddc359d134b1dc755f8b20bd3f33bb080cb3a0e1
      cc08c6b2
  16. 17 Mar, 2021 2 commits
    • Jeremy Reizenstein's avatar
      Remove _read_image from densepose example · 6c4151a8
      Jeremy Reizenstein authored
      Summary:
      As noted in #601, the example notebook was using an internal function _read_image from PyTorch3D, which has changed signature recently. It is not meant to be used externally. Switch to using PIL directly.
      
      Other changes: (1) removed unused skimage import. (2) some small tidyups. We now don't have places where cells modify values set by other cells. (3) removed bad calls to `plt.grid` which have no effect.
      
      Reviewed By: theschnitz, nikhilaravi
      
      Differential Revision: D27080372
      
      fbshipit-source-id: 2fce651b3e5d7a4619f0a2b298c5db18c8fa1e2c
      6c4151a8
    • Jeremy Reizenstein's avatar
      Tidy comments around imports · 8e1bcd55
      Jeremy Reizenstein authored
      Summary: Make black and isort stop disagreeing by removing some unneeded comments around import statements. pyre ignores are moved.
      
      Reviewed By: theschnitz
      
      Differential Revision: D27118137
      
      fbshipit-source-id: 9926d0f21142adcf9b5cfe1d394754317f6386df
      8e1bcd55
  17. 16 Mar, 2021 1 commit
    • Jeremy Reizenstein's avatar
      Plotly subsampling fix · 1b6182ba
      Jeremy Reizenstein authored
      Summary: When viewing two or more pointclouds in a single plot, we should be subsampling each one separately rather than subsampling their union.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D27010770
      
      fbshipit-source-id: 3c7e04a6049edd39756047f985d5a82c2601b3a2
      1b6182ba
  18. 11 Mar, 2021 1 commit
    • Jeremy Reizenstein's avatar
      Use old style isfinite · ff9c6612
      Jeremy Reizenstein authored
      Summary: Avoid using the newish member function isfinite. We use torch.isfinite instead for torch 1.4.0 compatibility.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D26946672
      
      fbshipit-source-id: 853c3716f40061152f1ea54a39eb60b565de7c2c
      ff9c6612