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
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
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
Summary: Support rendering different color backgrounds for pointclouds for both compositors
Reviewed By: nikhilaravi
Differential Revision: D23611043
fbshipit-source-id: ab029650d51349340372c5bd66700e6577d48851
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
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
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
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
Summary: When raster_settings.clip_barycentric_coords is unspecified, clip_barycentric_coords is turned on if blur_radius is greater than 0. This matches the behavior prior to D21705503 (cc70950f40).
Reviewed By: gkioxari
Differential Revision: D23375257
fbshipit-source-id: 4b87588aabb69d4d835d4dcceb11153628121d30
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
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
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
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
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