1. 01 Oct, 2020 1 commit
    • Patrick Labatut's avatar
      Fix a few linting warnings · 8219a52c
      Patrick Labatut authored
      Summary: Fix a few linting warnings
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20720810
      
      fbshipit-source-id: c5b6a25fdd7971cc8743b54bbe162464a874071d
      8219a52c
  2. 29 Sep, 2020 1 commit
  3. 28 Sep, 2020 1 commit
  4. 24 Sep, 2020 2 commits
    • Nikhila Ravi's avatar
      fix docs for FOVPerspectiveCamera · e5ac38aa
      Nikhila Ravi authored
      Summary: Small documentation fix for FOVPerspectiveCamera. The error pointed out in the GitHub issue was due to the docs referring to the OpenGL z parameterization from [-1, 1] whereas we use the [0, 1] range.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23857312
      
      fbshipit-source-id: 2d20677ec614c935e76f67e100a41a23df708d59
      e5ac38aa
    • Nikhila Ravi's avatar
      Support for moving the renderer to a new device · 956d3a01
      Nikhila Ravi authored
      Summary:
      Support for moving all the tensors of the renderer to another device by calling `renderer.to(new_device)`
      
      Currently the `MeshRenderer`, `MeshRasterizer` and `SoftPhongShader` (and other shaders) are all of type `nn.Module` which already supports easily moving tensors of submodules (defined as class attributes) to a different device. However the class attributes of the rasterizer and shader (e.g. cameras, lights, materials), are of type `TensorProperties`, not nn.Module so we need to explicity create a `to` method to move these tensors to device. Note that the `TensorProperties` class already has a `to` method so we only need to call `cameras.to(device)` and don't need to worry about the internal tensors.
      
      The other option is of course making these other classes (cameras, lights etc) also of type nn.Module.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23885107
      
      fbshipit-source-id: d71565c442181f739de4d797076ed5d00fb67f8e
      956d3a01
  5. 23 Sep, 2020 3 commits
    • andrijazz's avatar
      resouces filenames with spaces (#358) · b1eee579
      andrijazz authored
      Summary:
      I'm constantly encountering 3D models with resources that have spaces in their filenames (especially on Windows) and therefore they can't be loaded in pytorch3d. Let me know what you think.
      
      Thanks
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/358
      
      Reviewed By: bottler
      
      Differential Revision: D23798492
      
      Pulled By: nikhilaravi
      
      fbshipit-source-id: 4d85b7ee05339486d2e5ef53a531f8e6052251c5
      b1eee579
    • Nikhila Ravi's avatar
      Tidy OBJ / MTL parsing · 93d3d8fe
      Nikhila Ravi authored
      Summary: Tidy OBJ / MTL parsing: remove redundant calls to tokenize, factor out parsing and texture loading
      
      Reviewed By: gkioxari
      
      Differential Revision: D20720768
      
      fbshipit-source-id: fb1713106d4ff99a4a9147afcc3da74ae013d8dc
      93d3d8fe
    • Jeremy Reizenstein's avatar
      update xcode CI config to 9.4.1 · f4f29770
      Jeremy Reizenstein authored
      Summary: This addresses #375. Change circleci mac version to 9.4.1 just like torchvision did in https://github.com/pytorch/vision/issues/2629 .
      
      Reviewed By: gkioxari
      
      Differential Revision: D23866112
      
      fbshipit-source-id: c5019618bcb7da8f950123fee201beaad55fecab
      f4f29770
  6. 21 Sep, 2020 3 commits
    • Amitav Baruah's avatar
      Add tutorial notebook for rendering densepose · f34f4073
      Amitav Baruah authored
      Summary:
      Add a notebook demonstrating how to use Pytorch3D to render a textured mesh with the DensePose textures and the SMPL model
      
      {F336408690}
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23784314
      
      fbshipit-source-id: c92f32fb9b9468eb7ec26bf58dcabb1f26d92e7b
      f34f4073
    • Jeremy Reizenstein's avatar
      Fix TexturesUV doc · ea0e762c
      Jeremy Reizenstein authored
      Summary: Fix map size in the comment.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23813431
      
      fbshipit-source-id: e0777beadd7473014c1b79ad9f850d10f3549599
      ea0e762c
    • Jeremy Reizenstein's avatar
      save_ply binary · 197f1d62
      Jeremy Reizenstein authored
      Summary:
      Make save_ply save to binary instead of ascii. An option makes the previous functionality available. save_ply's API accepts a stream, but this is undocumented; that stream must now be a binary stream not a text stream.
      
      Avoiding warnings about making tensors from immutable numpy arrays.
      
      Possible performance improvement when reading binary files.
      
      Fix reading zero-length binary lists.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22333118
      
      fbshipit-source-id: b423dfd3da46e047bead200255f47a7707306811
      197f1d62
  7. 19 Sep, 2020 1 commit
  8. 17 Sep, 2020 1 commit
  9. 16 Sep, 2020 1 commit
  10. 14 Sep, 2020 2 commits
    • Amitav Baruah's avatar
      Add example of rendering pointclouds with a background color. · 61121b9f
      Amitav Baruah authored
      Summary:
      Add cells to the rendering_colored_points tutorial showing how to initialize a renderer and compositor that will render pointclouds with a background color.
      
      {F333731292}
      {F334136799}
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23632503
      
      fbshipit-source-id: e9ce0178b41e74baf912bd82ca1db41b680fc68f
      61121b9f
    • Amitav Baruah's avatar
      Add background color support to compositors · 872ff8c7
      Amitav Baruah authored
      Summary: Support rendering different color backgrounds for pointclouds for both compositors
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23611043
      
      fbshipit-source-id: ab029650d51349340372c5bd66700e6577d48851
      872ff8c7
  11. 11 Sep, 2020 1 commit
    • David Novotny's avatar
      Bugfix: Wrong default T in SfMCameras · dc40adfa
      David Novotny authored
      Summary: Fixes a bug that initializes default SfMCameras with a default _R instead of default _T
      
      Reviewed By: gkioxari
      
      Differential Revision: D23654583
      
      fbshipit-source-id: ccfb7235b2fb6df5a2e402b9fb4b194e97d78dc6
      dc40adfa
  12. 10 Sep, 2020 2 commits
    • Amitav Baruah's avatar
      Correctly create reference image silhouette · f2eb34dc
      Amitav Baruah authored
      Summary: Previously the tutorial code assumed that the reference image had a black background, resulting in an empty silhouette mask. Since the background is white, this change allows the model to find the correct silhouette mask.
      
      Reviewed By: nikhilaravi, sbranson
      
      Differential Revision: D23502202
      
      fbshipit-source-id: c3a570f93efd480323f27cb081db0a9fb54be219
      f2eb34dc
    • Amitav Baruah's avatar
      Fix look_at corner case · eb517dd7
      Amitav Baruah authored
      Summary: When the camera is vertically oriented, calculating the look_at x-axis (also known as the "right" vector) does not succeed, resulting in the x-axis being placed at the origin. Adds a check to correctly calculate the x-axis if this case occurs.
      
      Reviewed By: nikhilaravi, sbranson
      
      Differential Revision: D23511859
      
      fbshipit-source-id: ee5145cdbecdbe2f7c7d288588bd0899480cb327
      eb517dd7
  13. 09 Sep, 2020 1 commit
    • Steve Branson's avatar
      Fix softmax_rgb_blend() when mesh is outside zfar · f8ea5906
      Steve Branson authored
      Summary:
      This fixes two small issues with blending.py:softmax_rgb_blend():
        1) zfar and znear attributes are propagated from the camera settings instead of just using default settings of znear=1.0 and zfar=100.0
        2) A check is added to prevent arithmetic overflow in softmax_rgb_blend()
      
      This is a fix in response to https://github.com/facebookresearch/pytorch3d/issues/334
      where meshes rendererd using a SoftPhongShader with faces_per_pixel=1 appear black.  This only occurs when the scale of the mesh is large (vertex values > 100, where 100 is the default value of zfar).  This fix allows the caller to increase the value of cameras.zfar to match the scale of her/his mesh.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23517541
      
      fbshipit-source-id: ab8631ce9e5f2149f140b67b13eff857771b8807
      f8ea5906
  14. 04 Sep, 2020 1 commit
  15. 03 Sep, 2020 1 commit
    • David Novotny's avatar
      Camera alignment · 316b7778
      David Novotny authored
      Summary:
      adds `corresponding_cameras_alignment` function that estimates a similarity transformation between two sets of cameras.
      
      The function is essential for computing camera errors in SfM pipelines.
      
      ```
      Benchmark                                                   Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      CORRESPONDING_CAMERAS_ALIGNMENT_10_centers_False                32219           36211             16
      CORRESPONDING_CAMERAS_ALIGNMENT_10_centers_True                 32429           36063             16
      CORRESPONDING_CAMERAS_ALIGNMENT_10_extrinsics_False              5548            8782             91
      CORRESPONDING_CAMERAS_ALIGNMENT_10_extrinsics_True               6153            9752             82
      CORRESPONDING_CAMERAS_ALIGNMENT_100_centers_False               33344           40398             16
      CORRESPONDING_CAMERAS_ALIGNMENT_100_centers_True                34528           37095             15
      CORRESPONDING_CAMERAS_ALIGNMENT_100_extrinsics_False             5576            7187             90
      CORRESPONDING_CAMERAS_ALIGNMENT_100_extrinsics_True              6256            9166             80
      CORRESPONDING_CAMERAS_ALIGNMENT_1000_centers_False              32020           37247             16
      CORRESPONDING_CAMERAS_ALIGNMENT_1000_centers_True               32776           37644             16
      CORRESPONDING_CAMERAS_ALIGNMENT_1000_extrinsics_False            5336            8795             94
      CORRESPONDING_CAMERAS_ALIGNMENT_1000_extrinsics_True             6266            9929             80
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: shapovalov
      
      Differential Revision: D22946415
      
      fbshipit-source-id: 8caae7ee365b304d8aa1f8133cf0dd92c35bc0dd
      316b7778
  16. 02 Sep, 2020 1 commit
  17. 28 Aug, 2020 2 commits
  18. 27 Aug, 2020 1 commit
  19. 26 Aug, 2020 2 commits
    • Nikhila Ravi's avatar
      small website updates · c25fd836
      Nikhila Ravi authored
      Summary: Small fixes to website rendering
      
      Reviewed By: jcjohnson
      
      Differential Revision: D23281746
      
      fbshipit-source-id: c9dc8edd5e52f39d4e0e19f10ecc7e035b39feda
      c25fd836
    • Jeremy Reizenstein's avatar
      tutorial fixes. validate #cameras · 9aeb88b4
      Jeremy Reizenstein authored
      Summary:
      Update the installation cells to import torch.
      Replace use of deprecated Textures in deform tutorial.
      Correct the deform tutorial's idea of its own name.
      Fix typo in batched part of render_textured_meshes which meant only one mesh was being rendered with a batch of cameras.
      Add an error check in the rasterizer to make the error friendly from such a mistake elsewhere.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23345462
      
      fbshipit-source-id: 1d5bd25db052f7ef687b7168d7aee5cc4dce8952
      9aeb88b4
  20. 25 Aug, 2020 3 commits
    • Jeremy Reizenstein's avatar
      tutorial fixes from #336. Wheels with cuda10.1. · 32484500
      Jeremy Reizenstein authored
      Summary:
      Add a document to explain how to run the tutorials.
      Fix API of TexturesVertex in fit_textured_mesh.
      Prepare cuda 10.1 wheels (not 10.2) for linux to be available on pypi - this matches what colab has.
      Change the tutorials to use these new wheels.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23324479
      
      fbshipit-source-id: 60e92a3f46a2d878f811b7703638f8d1dae143d9
      32484500
    • Jeremy Reizenstein's avatar
      amalgamate meshes with texture into a single scene · 909dc835
      Jeremy Reizenstein authored
      Summary:
      Add a join_scene method to all the textures to allow the join_mesh function to include textures. Rename the join_mesh function to join_meshes_as_scene.
      
      For TexturesAtlas, we now interpolate if the user attempts to have the resolution vary across the batch. This doesn't look great if the resolution is already very low.
      
      For TexturesUV, a rectangle packing function is required, this does something simple.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23188773
      
      fbshipit-source-id: c013db061a04076e13e90ccc168a7913e933a9c5
      909dc835
    • Jeremy Reizenstein's avatar
      align_corners and padding for TexturesUV · e25ccab3
      Jeremy Reizenstein authored
      Summary:
      Allow, and make default, align_corners=True for texture maps. Allow changing the padding_mode and set the default to be "border" which produces more logical results. Some new documentation.
      
      The previous behavior corresponds to padding_mode="zeros" and align_corners=False.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23268775
      
      fbshipit-source-id: 58d6229baa591baa69705bcf97471c80ba3651de
      e25ccab3
  21. 22 Aug, 2020 4 commits
    • Eduardo Henrique Arnold's avatar
      Fix look_at_view_transform when object location is not (0,0,0) (#230) · d0cec028
      Eduardo Henrique Arnold authored
      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
      d0cec028
    • Nikhila Ravi's avatar
      Texture loading and rendering in ShapeNetCore and R2N2 data loaders · 778383ee
      Nikhila Ravi authored
      Summary:
      - Add support for loading textures from ShapeNet Obj files as a texture atlas.
      - Support textured rendering of shapenet models
      
      Reviewed By: gkioxari
      
      Differential Revision: D23141143
      
      fbshipit-source-id: 26eb81758d4cdbd6d820b072b58f5c6c08cb90bc
      778383ee
    • Nikhila Ravi's avatar
      Tutorials textures updates and fix bug in extending meshes with uv textures · 90f6a005
      Nikhila Ravi authored
      Summary:
      Found a bug in extending textures with vertex uv coordinates. This was due to the padded -> list conversion of vertex uv coordinates i.e.                 The number of vertices in the mesh and in verts_uvs can differ
      e.g. if a vertex is shared between 3 faces, it can
      have up to 3 different uv coordinates. Therefore we cannot convert directly from padded to list using _num_verts_per_mesh
      
      Reviewed By: bottler
      
      Differential Revision: D23233595
      
      fbshipit-source-id: 0c66d15baae697ead0bdc384f74c27d4c6539fc9
      90f6a005
    • Nikhila Ravi's avatar
      Website and docs updates · d3307658
      Nikhila Ravi authored
      Summary:
      - Added sbranson's fit mesh tutorial to the website
      - Updated rendering docs with info about texturing and new shader types.
      
      TODO:
      - add pointcloud rendering tutorial to the website as well (https://github.com/facebookresearch/pytorch3d/blob/master/docs/tutorials/render_colored_points.ipynb)
      - docs for camera
      - update some tutorials which depended on the Textures from structures.
      
      Reviewed By: gkioxari
      
      Differential Revision: D23143977
      
      fbshipit-source-id: 6843c9bf3ce11115c459c64da5b0ad778dc92177
      d3307658
  22. 21 Aug, 2020 5 commits
    • Jeremy Reizenstein's avatar
      Fix batching bug from TexturesUV packed ambiguity, other textures tidyup · 9a50cf80
      Jeremy Reizenstein authored
      Summary:
      faces_uvs_packed and verts_uvs_packed were only used in one place and the definition of the former was ambiguous. This meant that the wrong coordinates could be used for meshes other than the first in the batch. I have therefore removed both functions and build their common result inline. Added a test that a simple batch of two meshes is rendered consistently with the rendering of each alone. This test would have failed before.
      
      I hope this fixes https://github.com/facebookresearch/pytorch3d/issues/283.
      
      Some other small improvements to the textures code.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23161936
      
      fbshipit-source-id: f99b560a46f6b30262e07028b049812bc04350a7
      9a50cf80
    • Steve Branson's avatar
      Temporary fix for mesh rasterization bug for traingles partially behind the camera · 9aaba048
      Steve Branson authored
      Summary: A triangle is culled if any vertex in a triangle is behind the camera.  This fixes incorrect rendering of triangles that are partially behind the camera, where screen coordinate calculations are strange.  It doesn't work for triangles that are partially behind the camera but still intersect with the view frustum.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D22856181
      
      fbshipit-source-id: a9cbaa1327d89601b83d0dfd3e4a04f934a4a213
      9aaba048
    • Georgia Gkioxari's avatar
      camera refactoring · 57a22e73
      Georgia Gkioxari authored
      Summary:
      Refactor cameras
      * CamerasBase was enhanced with `transform_points_screen` that transforms projected points from NDC to screen space
      * OpenGLPerspective, OpenGLOrthographic -> FoVPerspective, FoVOrthographic
      * SfMPerspective, SfMOrthographic -> Perspective, Orthographic
      * PerspectiveCamera can optionally be constructred with screen space parameters
      * Note on Cameras and coordinate systems was added
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23168525
      
      fbshipit-source-id: dd138e2b2cc7e0e0d9f34c45b8251c01266a2063
      57a22e73
    • mlygao@devgpu002.atn3.facebook.com's avatar
      ShapeNetCore & R2N2 tutorial · 9242e7e6
      mlygao@devgpu002.atn3.facebook.com authored
      Summary: Tutorial for ShapeNetCore & R2N2.
      
      Reviewed By: gkioxari
      
      Differential Revision: D22916882
      
      fbshipit-source-id: 752742be87f44919164ec7eafcc9c09c17a0f8a3
      9242e7e6
    • Anton Troynikov's avatar
      Fix 404 link in Renderer Doc (#330) · 370f1c38
      Anton Troynikov authored
      Summary:
      Because of the way Sphinx was parsing this link in Markdown, the link wasn't working properly. This should fix it.
      
      Pull Request resolved: https://github.com/facebookresearch/pytorch3d/pull/330
      
      Test Plan: Tested via local Sphinx.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D23244163
      
      Pulled By: atroyn
      
      fbshipit-source-id: 019712a841d76391a5210dcd98c77a822947204a
      370f1c38