1. 10 Nov, 2020 6 commits
    • Christoph Lassner's avatar
      Fix flaky CircleCI test. · fb2763dc
      Christoph Lassner authored
      Summary: This fixes issues with `pulsar.test.TestDepth` that we are encountering on CircleCI. The ID equality test is removed, which seems to give different results on different hardware (which is okay, because the exact order of spheres can slightly vary if they're close due to numerical instabilities). The depth map validity test stays in place.
      
      Reviewed By: bottler
      
      Differential Revision: D24840776
      
      fbshipit-source-id: 2f38ea4880abf202c84d2987fdd71a84c5ef3b05
      fb2763dc
    • Jeremy Reizenstein's avatar
      CUB installation instructions · aefe2b9f
      Jeremy Reizenstein authored
      Summary: Make it easy to have CUB available for building
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24773722
      
      fbshipit-source-id: 8759bef6ded4989088189685b2a615c97e5f8b99
      aefe2b9f
    • Jeremy Reizenstein's avatar
      pulsar build and CI changes · d220ee2f
      Jeremy Reizenstein authored
      Summary:
      Changes to CI and some minor fixes now that pulsar is part of pytorch3d. Most significantly, add CUB to CI builds.
      
      Make CUB_HOME override the CUB already in cudatoolkit (important for cuda11.0 which uses cub 1.9.9 which pulsar doesn't work well with.
      Make imageio available for testing.
      Lint fixes.
      Fix some test verbosity.
      Avoid use of atomicAdd_block on older GPUs.
      
      Reviewed By: nikhilaravi, classner
      
      Differential Revision: D24773716
      
      fbshipit-source-id: 2428356bb2e62735f2bc0c15cbe4cff35b1b24b8
      d220ee2f
    • Dave Schnizlein's avatar
      Remove point mesh edge kernels · 804235b0
      Dave Schnizlein authored
      Summary:
      Removes the now-unnecessary kernels from point mesh edge file
      
      Migrates all point mesh functionality into one file.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24550086
      
      fbshipit-source-id: f924996cd38a7c2c1cf189d8a01611de4506cfa3
      804235b0
    • Dave Schnizlein's avatar
      Consolidate mesh backward kernels · 8dcfe30f
      Dave Schnizlein authored
      Summary: This diff creates the generic MeshBackwardKernel which can handle distance calculations between point, edge and faces in either direction. Replaces only point_mesh_face code for now.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24549374
      
      fbshipit-source-id: 2853c1da1c2a6b6de8d0e40007ba0735b8959044
      8dcfe30f
    • Dave Schnizlein's avatar
      Consolidate point mesh forward kernels · c41aff23
      Dave Schnizlein authored
      Summary: This diff creates the generic MeshForwardKernel which can handle distance calculations between point, edge and faces in either direction. Replaces only point_mesh_face code for now.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24543316
      
      fbshipit-source-id: 302707d7cec2d77a899738adf40481035c240da8
      c41aff23
  2. 09 Nov, 2020 1 commit
    • Christoph Lassner's avatar
      Fix #431. · 194b29fb
      Christoph Lassner authored
      Summary: Added missing include for cstdint for Windows and removed problematic inline assembly.
      
      Reviewed By: bottler
      
      Differential Revision: D24838053
      
      fbshipit-source-id: 95496be841c2c22a82068073d4740e98ee8a02ac
      194b29fb
  3. 05 Nov, 2020 1 commit
    • Dave Schnizlein's avatar
      Add MeshRendererWithFragments class to also return fragments after rendering · 83fef0a5
      Dave Schnizlein authored
      Summary: Users want to be able to obtain the depth from the renderer. Current work-around requires running the rasterizer and extra time. This change creates a new renderer class that also returns the fragments from the rasterizer.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24432381
      
      fbshipit-source-id: 6552e8a6bfee646791afb34bdb7452fbc4094aed
      83fef0a5
  4. 04 Nov, 2020 2 commits
    • Christoph Lassner's avatar
      Example and test updates. · b6be3b95
      Christoph Lassner authored
      Summary: This commit performs pulsar example and test refinements. The examples are fully adjusted to adhere to PEP style guide and additional comments are added.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24723391
      
      fbshipit-source-id: 6d289006f080140159731e7f3a8c98b582164f1a
      b6be3b95
    • Jeremy Reizenstein's avatar
      Restrict import of ops from Pointclouds · e9a26f26
      Jeremy Reizenstein authored
      Summary: Move to a local import for calculating pointcloud normals, similar to _compute_face_areas_normals on Meshes.
      
      Reviewed By: theschnitz
      
      Differential Revision: D24695260
      
      fbshipit-source-id: 9e1eb5d15017975b8c4f4175690cc3654f38d9a4
      e9a26f26
  5. 03 Nov, 2020 3 commits
    • Christoph Lassner's avatar
      examples and docs. · 039e0260
      Christoph Lassner authored
      Summary: This diff updates the documentation and tutorials with information about the new pulsar backend. For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder docs/examples.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24498129
      
      fbshipit-source-id: e312b0169a72b13590df6e4db36bfe6190d742f9
      039e0260
    • Christoph Lassner's avatar
      pulsar interface unification. · 960fd6d8
      Christoph Lassner authored
      Summary:
      This diff builds on top of the `pulsar integration` diff to provide a unified interface for the existing PyTorch3D point renderer and Pulsar. For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder docs/examples.
      
      The unified interfaces are completely consistent. Switching the render backend is as easy as using `renderer = PulsarPointsRenderer(rasterizer=rasterizer).to(device)` instead of `renderer = PointsRenderer(rasterizer=rasterizer, compositor=compositor)` and adding the `gamma` parameter to the forward function. All PyTorch3D camera types are supported as far as possible; keyword arguments are properly forwarded to the camera. The `PerspectiveCamera` and `OrthographicCamera` require znear and zfar as additional parameters for the forward pass.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D21421443
      
      fbshipit-source-id: 4aa0a83a419592d9a0bb5d62486a1cdea9d73ce6
      960fd6d8
    • Christoph Lassner's avatar
      pulsar integration. · b19fe1de
      Christoph Lassner authored
      Summary:
      This diff integrates the pulsar renderer source code into PyTorch3D as an alternative backend for the PyTorch3D point renderer. This diff is the first of a series of three diffs to complete that migration and focuses on the packaging and integration of the source code.
      
      For more information about the pulsar backend, see the release notes and the paper (https://arxiv.org/abs/2004.07484). For information on how to use the backend, see the point cloud rendering notebook and the examples in the folder `docs/examples`.
      
      Tasks addressed in the following diffs:
      * Add the PyTorch3D interface,
      * Add notebook examples and documentation (or adapt the existing ones to feature both interfaces).
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23947736
      
      fbshipit-source-id: a5e77b53e6750334db22aefa89b4c079cda1b443
      b19fe1de
  6. 02 Nov, 2020 1 commit
    • Jeremy Reizenstein's avatar
      Docker authentication · d5650323
      Jeremy Reizenstein authored
      Summary: To avoid docker's new ratelimiting, we sign in.
      
      Reviewed By: theschnitz
      
      Differential Revision: D24681688
      
      fbshipit-source-id: 6bb1a86ee15a151758e8a2bdb081da280308ad0c
      d5650323
  7. 30 Oct, 2020 2 commits
    • Nikhila Ravi's avatar
      Update README with contributors and new tutorials · 3b035f57
      Nikhila Ravi authored
      Summary:
      Updated the README with:
      - Contributor list
      - News updates
      - New tutorial links
      
      Reviewed By: gkioxari
      
      Differential Revision: D24412028
      
      fbshipit-source-id: 0c4ba9ebe16a7a4728801356a9271ff152282686
      3b035f57
    • Dave Schnizlein's avatar
      Update cameras to accept projection matrix as input · 36fb257e
      Dave Schnizlein authored
      Summary: To initialize the Cameras class currently we require the principal point, focal length and other parameters to be specified from which we calculate the intrinsic matrix. In some cases the matrix might be directly available e.g. from a dataset and the associated metadata for an image.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24489509
      
      fbshipit-source-id: 1b411f19c5f6c8074bcfbf613f3339d5e242c119
      36fb257e
  8. 29 Oct, 2020 3 commits
    • Jeremy Reizenstein's avatar
      pytorch 1.7 support · 6f4697bc
      Jeremy Reizenstein authored
      Summary: CircleCI build configuration to support pytorch1.7, including binaries with cuda 11.0. Note that the default torch on pip is still on cuda 10.2, so I have left the `main` (non conda build) on cuda 10.2 with the existing driver.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24623523
      
      fbshipit-source-id: 59cfa1be06c16225f0f12ed336c07220e8a9a511
      6f4697bc
    • Jeremy Reizenstein's avatar
      import vis parts separately · fdcf3687
      Jeremy Reizenstein authored
      Summary: We envision `pytorch3d.vis` to contain submodules with different dependencies. Allow (and require) them to be imported independently.
      
      Reviewed By: theschnitz
      
      Differential Revision: D24622519
      
      fbshipit-source-id: 44840f70f5fd2bd410405bf09546024e48238744
      fdcf3687
    • Jeremy Reizenstein's avatar
      remove texture_vis test · 0e5f4f76
      Jeremy Reizenstein authored
      Summary: This recently added test is sensitive to the version of PIL because of different algorithms to draw ellipses/circles. Remove it as there is no obvious safe way to test this. Replace with a test for the underlying centres_for_image().
      
      Reviewed By: theschnitz
      
      Differential Revision: D24622465
      
      fbshipit-source-id: e46d7384df491c71ac87ba8bbbce89507ac40080
      0e5f4f76
  9. 27 Oct, 2020 1 commit
    • Jeremy Reizenstein's avatar
      images for debugging TexturesUV · aa4cc0ad
      Jeremy Reizenstein authored
      Summary: New methods to directly plot a TexturesUV map with its used points, using PIL and matplotlib.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23782968
      
      fbshipit-source-id: 692970857b5be13a35a3175dc82ac03963a73555
      aa4cc0ad
  10. 26 Oct, 2020 1 commit
    • Jeremy Reizenstein's avatar
      script to run tutorials · b149bbfb
      Jeremy Reizenstein authored
      Summary: Script to execute tutorials inside docker with the nightly build.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24503200
      
      fbshipit-source-id: cfa010a7750627d4e87d224a112ff77952feeb55
      b149bbfb
  11. 22 Oct, 2020 4 commits
    • Amitav Baruah's avatar
      Remove duplicate imports in DensePose tutorial · 2084160b
      Amitav Baruah authored
      Summary: We were importing torch, torchvision, PyTorch3D, and sys twice. This is just removing the duplicate (unneeded) imports
      
      Reviewed By: theschnitz
      
      Differential Revision: D24479270
      
      fbshipit-source-id: 1048732f65242eb776c3eef537cb1ae58815c1eb
      2084160b
    • Shubham Jain's avatar
      Texture UV Documentation Correction (#409) · 4d8f132a
      Shubham Jain authored
      Summary: Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/409
      
      Reviewed By: bottler
      
      Differential Revision: D24478451
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 933d6f7a02a3118ee30ecda045fd9f62a7df1176
      4d8f132a
    • gmanasi's avatar
      Update LICENSE name to BSD 3-Clause License. (#310) · e7d7fad1
      gmanasi authored
      Summary:
      The README for the project refers to the BSD 3-Clause License, but the License file has only BSD License as the name. Updated the License name to BSD 3-Clause License for correct reference.
      
      License files are an important part of source code and should not have errors. This helps developers to correctly reference the license when integrating the source code within their applications.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/310
      
      Reviewed By: theschnitz
      
      Differential Revision: D24220599
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 657bde0abe946e95864fc048eb930a91ddf08b99
      e7d7fad1
    • Jeremy Reizenstein's avatar
      Avoid torch.square · 7e986cfb
      Jeremy Reizenstein authored
      Summary: Fix axis_angle conversions where I used torch.square which doesn't work with pytorch 1.4
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24451546
      
      fbshipit-source-id: ba26f7dad5fa991f0a8f7d3d09ee7151163aecf4
      7e986cfb
  12. 21 Oct, 2020 6 commits
    • Jeremy Reizenstein's avatar
      axis_angle representation of rotations · c93c4dd7
      Jeremy Reizenstein authored
      Summary: We can represent a rotation as a vector in the axis direction, whose length is the rotation anticlockwise in radians around that axis.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24306293
      
      fbshipit-source-id: 2e0f138eda8329f6cceff600a6e5f17a00e4deb7
      c93c4dd7
    • Amitav Baruah's avatar
      Render PyTorch3d cameras in plotly · 005a334f
      Amitav Baruah authored
      Summary: Take in a renderer with camera(s) and render the cameras as wireframes in the corresponding plotly plots
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24151706
      
      fbshipit-source-id: f8e86d61f3d991500bafc0533738c79b96bda630
      005a334f
    • Amitav Baruah's avatar
      Render plotly plot from PyTorch3D renderer POV · 03510967
      Amitav Baruah authored
      Summary:
      Use a provided renderer's camera positions to render a plotly plot to match what the renderer would render for pointclouds and meshes.
      - takes in a Cameras object for viewpoints
      - for each subplot, will index into the Cameras object (or use the Cameras object, if len(viewpoint_cameras) == 1 and use the Cameras' eye and at vectors to set plotly's camera's corresponding values, the eye and center values.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24094934
      
      fbshipit-source-id: 48abcdb04c6909a172ba9f721522c3446952a089
      03510967
    • Amitav Baruah's avatar
      Update tutorials to reflect plotly refactor · 3d1863ce
      Amitav Baruah authored
      Summary: Change the two affected tutorials to use plot_scene and plot_batch_individually.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24235480
      
      fbshipit-source-id: ca9d73bfb7ccf733efaf16299c15927406d7f2aa
      3d1863ce
    • Amitav Baruah's avatar
      Add wrapper function to plot batches · bf7aca32
      Amitav Baruah authored
      Summary:
      - adds plot_batch_individually
      - for each batched object, plots each object in its own subplot with other same-indexed elements of the other batched objects provided as input
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24258389
      
      fbshipit-source-id: a80128e6e7a03a44c257b0598569159afadb2d39
      bf7aca32
    • Amitav Baruah's avatar
      Refactor plot_meshes and plot_pointclouds to one generalizable API, plot_scene · 964893cd
      Amitav Baruah authored
      Summary: Defines a function plot_scene that takes in a dictionary defining subplot and trace layouts for Mesh/Pointcloud objects and plots them. Also supports other plotly axis arguments and mesh lighting. Plot_batch_individually is a wrapper function that takes in one or multiple batched Meshes/Pointclouds and uses plot_scene to plot each element within a batch in an individual subplot, possibly sharing that subplot with traces of other individual elements of the other batched structures passed in.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D24235479
      
      fbshipit-source-id: 9f669f1b186d55fe5c75552083316c0cf1387472
      964893cd
  13. 20 Oct, 2020 2 commits
    • Jeremy Reizenstein's avatar
      Reshape for faces_packed_to_edges_packed · abd39031
      Jeremy Reizenstein authored
      Summary:
      As pointed out in #328, we had an indexing operation where a reshape would do and be faster. The resulting faces_packed_to_edges_packed is no longer contiguous.
      
      Also fix a use of faces_packed_to_edges_packed which might modify the object unintentionally.
      
      Reviewed By: theschnitz
      
      Differential Revision: D24390292
      
      fbshipit-source-id: 225677d8fcc1d6b76efad7706718ecdb5182ffe1
      abd39031
    • Nikhila Ravi's avatar
      Add images for new tutorials · 4cfac7c7
      Nikhila Ravi authored
      Summary: Added images for four tutorials to add to the README.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24411993
      
      fbshipit-source-id: 5f0b2256efb156b5956013c26b8ddb1631bd1c46
      4cfac7c7
  14. 18 Oct, 2020 1 commit
    • Jeremy Reizenstein's avatar
      linter comment strictnesss · 30e4e891
      Jeremy Reizenstein authored
      Summary: The linter has become stricter about the indenting of comments and docstrings. This was accompanied by a codemod. In a few places we can fix the problem nicer than the codemod has.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24363880
      
      fbshipit-source-id: 4cff3bbe3d2a834bc92a490469a2b24fa376e6ab
      30e4e891
  15. 16 Oct, 2020 1 commit
  16. 15 Oct, 2020 2 commits
    • Jeremy Reizenstein's avatar
      matrix_to_quaternion corner case · 4d52f9fb
      Jeremy Reizenstein authored
      Summary: Issue #119. The function `sqrt(max(x, 0))` is not convex and has infinite gradient at 0, but 0 is a subgradient at 0. Here we implement it in such a way as to give 0 as the gradient.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24306294
      
      fbshipit-source-id: 48d136faca083babad4d64970be7ea522dbe9e09
      4d52f9fb
    • John Reese's avatar
      apply black 20.8b1 formatting update · 2d397236
      John Reese authored
      Summary:
      allow-large-files
      
      black_any_style
      
      Reviewed By: zertosh
      
      Differential Revision: D24325133
      
      fbshipit-source-id: b4afe80d1e8b2bc993f4b8e3822c02964df47462
      2d397236
  17. 12 Oct, 2020 2 commits
  18. 07 Oct, 2020 1 commit
    • Nikhila Ravi's avatar
      Fix texture atlas for objs which only have material properties · f5383a7e
      Nikhila Ravi authored
      Summary:
      Fix for GitHub issue #381.
      
      The example mesh provided in the issue only had material properties but no texture image. The current implementation of texture atlassing generated an atlas using both the material properties and the texture image but only worked if there was a texture image and associated vertex uv coordinates. I have now modified the texture atlas creation so that it doesn't require an image and can work with materials which only have material properties.
      
      Reviewed By: gkioxari
      
      Differential Revision: D24153068
      
      fbshipit-source-id: 63e9d325db09a84b336b83369d5342ce588a9932
      f5383a7e