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
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
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
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
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
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
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
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
Summary:
Small fix to the softmax blending function.
To avoid overflow in the exponential for the softmax, the exponent is shifted by the maximum value. In the final calculation of the color there is a weighted sum between the pixel color and the background color - in order for the sum to be correct, the background color also needs to be handled in the same way witt the shifted exponent.
Reviewed By: gkioxari
Differential Revision: D23148301
fbshipit-source-id: 86066586ee7d3ce7bd4a2076b12ce191fbd151a7
Summary: Latest pytorch doesn't support cuda 10.0 and now its pytorch/conda-cuda docker image doesn't include it either. Here we remove the pytorch3d builds which use cuda 10.0.
Reviewed By: nikhilaravi
Differential Revision: D22999392
fbshipit-source-id: c834477fc7c812c2d0594dccd9e9471e33a4ec5e
Summary: The recently added part of a test was assuming that the random gpu was gpu 0.
Reviewed By: nikhilaravi
Differential Revision: D22948397
fbshipit-source-id: 88107e19fc3118e763f95be43a614941176a08f9
Summary:
The main pytorch wheels on PyPI support CUDA 10.2. Here we make pytorch3d's wheels do the same, instead of being cpu only. This should ultimately make life easier in colab.
Also a little script to count builds, which can be useful for nightly jobs.
Reviewed By: gkioxari
Differential Revision: D22924321
fbshipit-source-id: d6cea9bfbab49bcb0080f65608066c553ea8bb4d
Summary:
A fairly big refactor of the texturing API with some breaking changes to how textures are defined.
Main changes:
- There are now 3 types of texture classes: `TexturesUV`, `TexturesAtlas` and `TexturesVertex`. Each class:
- has a `sample_textures` function which accepts the `fragments` from rasterization and returns `texels`. This means that the shaders will not need to know the type of the mesh texture which will resolve several issues people were reporting on GitHub.
- has a `join_batch` method for joining multiple textures of the same type into a batch
Reviewed By: gkioxari
Differential Revision: D21067427
fbshipit-source-id: 4b346500a60181e72fdd1b0dd89b5505c7a33926
Summary: Reduce the size of the data in this test, so that on circleci it doesn't run out of memory when pytorch (1.6) is used.
Reviewed By: gkioxari
Differential Revision: D22801490
fbshipit-source-id: 9591253c3d47430facd769a2c51a0b1722e0a305
Summary: Make CI builds with pytorch 1.6.
Reviewed By: gkioxari
Differential Revision: D22790325
fbshipit-source-id: 5b0e075f952de9df2de03b65c16fd69140ab6fdd
Summary: Tutorial showing how to create a synthetic dataset by rendering a cow from multiple views, fit a mesh using a differential silhouette renderer, then fit a mesh using an RGB renderer.
Reviewed By: nikhilaravi
Differential Revision: D22513859
fbshipit-source-id: 24bdaac4ebec6dd01f98e2f5c702065f9335ff33
Summary:
Sample/Get all views at the loading phase instead of returning phase;
Load only views from the split instead of all 24 views;
Test the numbers of views loaded are correct for each category.
Reviewed By: nikhilaravi
Differential Revision: D22631414
fbshipit-source-id: 1c5ce99fe2bdf6618c1aa0b69bb6899473376bc2
Summary: Github does not support embedding youtube videos! Changing it to a link with a thumbnail.
Reviewed By: gkioxari
Differential Revision: D22601430
fbshipit-source-id: 1087657bc379a228a33eced1bee8492cef8373a7
Summary: Added link to the youtube video of the PyTorch hackathon tutorial to the README.
Reviewed By: bottler
Differential Revision: D22592655
fbshipit-source-id: 7b3791042a0d6f7e1d3b5602580f10b08a48fe43
Summary:
1. CircleCI tests fail because of different randomisation. I was able to reproduce it on devfair (with an older version of pytorch3d though), but with a new threshold, it works. Let’s push and see if it will work in CircleCI.
2. Fixing linter’s issue with `l` variable name.
Reviewed By: bottler
Differential Revision: D22573244
fbshipit-source-id: 32cebc8981883a3411ed971eb4a617469376964d
Summary:
Added support for barycentric clipping in the C++/CUDA rasterization kernels which can be switched on/off via a rasterization setting.
Added tests and a benchmark to compare with the current implementation in PyTorch - for some cases of large image size/faces per pixel the cuda version is 10x faster.
Reviewed By: gkioxari
Differential Revision: D21705503
fbshipit-source-id: e835c0f927f1e5088ca89020aef5ff27ac3a8769
Summary:
C++/CUDA implementation of forward and backward passes for the sigmoid alpha blending function.
This is slightly faster than the vectorized implementation in Python, but more importantly uses less memory due to fewer tensors being created.
Reviewed By: gkioxari
Differential Revision: D19980671
fbshipit-source-id: 0779055d2c68b1f20fb0870e60046077ef4613ff
Summary: Adding a render function for R2N2.
Reviewed By: nikhilaravi
Differential Revision: D22230228
fbshipit-source-id: a9f588ddcba15bb5d8be1401f68d730e810b4251
Summary: Skeleton of R2N2 that for now only returns verts and faces extracted from ShapeNetCore v1.
Reviewed By: nikhilaravi
Differential Revision: D22203656
fbshipit-source-id: 00db6ac76bfdb76fdbc77a2087c34a3f0ff01e6a
Summary: Adding collate_batched_meshes for datasets.utils: takes in a list of dictionaries and merge them into one dictionary (while adding a merged mesh to the dictionary).
Reviewed By: nikhilaravi
Differential Revision: D22180404
fbshipit-source-id: f811f9a140f09638f355ad5739bffa6ee415819f
Summary: Additional functionality for renderer in ShapeNetCore: users can select which objects to render by specifying their model_ids, or users could choose to render several random objects in some categories, or users could specify indices of the objects in the loaded dataset. (currently doesn't support changing lighting, still investigating why lighting is causing instability in renderings)
Reviewed By: nikhilaravi
Differential Revision: D22179594
fbshipit-source-id: 74c49094ffa3ea2eb71de9451f9e5da5053d356d
Summary: Adding a renderer to ShapeNetCore (Note that the lights are currently turned off for the test; will investigate why lighting causes instability in rendering)
Reviewed By: nikhilaravi
Differential Revision: D22102673
fbshipit-source-id: a704756a1e93b61d5a879f0e5ee14ebcb0df49d7
Summary: When rendering meshes with Phong shading, interpolate_face_attributes was taking up a nontrivial fraction of the overall shading time. This diff replaces our Python implementation of this function with a CUDA implementation.
Reviewed By: nikhilaravi
Differential Revision: D21610763
fbshipit-source-id: 2bb362a28f698541812aeab539047264b125ebb8
Summary: Make the `_open_file()` function return a context manager and remove the associated file closure
Reviewed By: nikhilaravi
Differential Revision: D20720506
fbshipit-source-id: 7d96ceb2fd64b6ee3985d0b0faf8d8bf791b1966
Summary: Finish extracting _open_file() to a separate utils module (started with D20754859 (c9267ab7af) / previous version of this diff).
Reviewed By: nikhilaravi
Differential Revision: D20720344
fbshipit-source-id: 77ef201ff37a8f2a0cd19be162cb97ee99480158
Summary: Remove abbreviated installation instructions from the homepage because they confuse.
Reviewed By: gkioxari
Differential Revision: D22160787
fbshipit-source-id: 8eb81030727f71951f8785f71c0a332ef58e790c
Summary:
There is a bug in efficient PnP that incorrectly weights points. This fixes it.
The test does not pass for the previous version with the bug.
Reviewed By: shapovalov
Differential Revision: D22449357
fbshipit-source-id: f5a22081e91d25681a6a783cce2f5c6be429ca6a
Summary: Conversion to/from the 6D representation of rotation from the paper http://arxiv.org/abs/1812.07035 ; based on David’s implementation.
Reviewed By: davnov134
Differential Revision: D22234397
fbshipit-source-id: 9e25ee93da7e3a2f2068cbe362cb5edc88649ce0