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:
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:
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: 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: It's easier to understand code changes if we don't store the output in the notebooks. This is just a run of nbstripout on all the notebooks.
Reviewed By: nikhilaravi
Differential Revision: D22357375
fbshipit-source-id: bffdb426af2f676d448630d717658d609c224811
Summary: Fix to enable a mesh/point rasterizer to be initialized without having to specify the camera.
Reviewed By: jcjohnson, gkioxari
Differential Revision: D21362359
fbshipit-source-id: 4f84ea18ad9f179c7b7c2289ebf9422a2f5e26de
Summary: Update version number for version 0.2.0.
Reviewed By: nikhilaravi
Differential Revision: D21157358
fbshipit-source-id: 32a5b93e5dc65a31a806a5ce7231f8603fe02e85
Summary:
Fix a bug which resulted in a rendering artifacts if the image size was not a multiple of 16.
Fix: Revert coarse rasterization to original implementation and only update fine rasterization to reverse the ordering of Y and X axis. This is much simpler than the previous approach!
Additional changes:
- updated mesh rendering end-end tests to check outputs from both naive and coarse to fine rasterization.
- added pointcloud rendering end-end tests
Reviewed By: gkioxari
Differential Revision: D21102725
fbshipit-source-id: 2e7e1b013dd6dd12b3a00b79eb8167deddb2e89a
Summary: Remove `bin_size` and `max_faces_per_pixel` from being specified. This means the coarse-to-fine rasterization will be used by default and will help avoid confusion with the naive version.
Reviewed By: jcjohnson
Differential Revision: D20908905
fbshipit-source-id: c181c88e844d888aa81a36870918307961dc1175
Summary:
Add a note about the difference between naive and coarse-to-fine rasterization to all the rendering tutorials.
Update the render pointclouds tutorial to wget the data file.
Reviewed By: gkioxari
Differential Revision: D20575257
fbshipit-source-id: a2806b9452438f97cb754f87e011c6e32e2545e4
Summary:
A few small website updates:
- changed the tutorials to point to the `stable` tag on github so we don't have to update the website each time we want to run them!
- changed the colab button
- re ran notebook cells to update the images for textured meshes
Once these fixes are landed I can build and publish the website.
Reviewed By: bottler
Differential Revision: D20484836
fbshipit-source-id: 603a05e752f631c60d1a3abb9adeb1b9b451ab98
Summary: Use a consistent case for PyTorch3D (matching the logo...): replace all occurrences of PyTorch3d with PyTorch3D across the codebase (including documentation and notebooks)
Reviewed By: wanyenlo, gkioxari
Differential Revision: D20427546
fbshipit-source-id: 8c7697f51434c51e99b7fe271935932c72a1d9b9
Summary: The shebang line `#!<path to interpreter>` is only required for Python scripts, so remove it on source files for class or function definitions. Additionally explicitly mark as executable the actual Python scripts in the codebase.
Reviewed By: nikhilaravi
Differential Revision: D20095778
fbshipit-source-id: d312599fba485e978a243292f88a180d71e1b55a
Summary:
Applying the changes added for mesh rasterization to ensure that +Y is up and +X is left so that the coordinate system is right handed.
Also updated the diagram in the docs to indicate that (0,0) is in the top left hand corner.
Reviewed By: gkioxari
Differential Revision: D20394849
fbshipit-source-id: cfb7c79090eb1f55ad38b92327a74a70a8dc541e
Summary: Bumping the version number to 0.1.1 and thereby documenting all the places where the version number currently appears in the code.
Reviewed By: nikhilaravi
Differential Revision: D20067382
fbshipit-source-id: 76a25ed1d4036f51357e4ae3e0f07de32ad114ae
Summary:
## Updates
- Defined the world and camera coordinates according to this figure. The world coordinates are defined as having +Y up, +X left and +Z in.
{F230888499}
- Removed all flipping from blending functions.
- Updated the rasterizer to return images with +Y up and +X left.
- Updated all the mesh rasterizer tests
- The expected values are now defined in terms of the default +Y up, +X left
- Added tests where the triangles in the meshes are non symmetrical so that it is clear which direction +X and +Y are
## Questions:
- Should we have **scene settings** instead of raster settings?
- To be more correct we should be [z clipping in the rasterizer based on the far/near clipping planes](https://github.com/ShichenLiu/SoftRas/blob/master/soft_renderer/cuda/soft_rasterize_cuda_kernel.cu#L400) - these values are also required in the blending functions so should we make these scene level parameters and have a scene settings tuple which is available to the rasterizer and shader?
Reviewed By: gkioxari
Differential Revision: D20208604
fbshipit-source-id: 55787301b1bffa0afa9618f0a0886cc681da51f3
Summary:
Renamed shaders to be prefixed with Hard/Soft depending on if they use a probabalistic blending (Soft) or use the closest face (Hard).
There is some code duplication but I thought it would be cleaner to have separate shaders for each task rather than:
- inheritance (which we discussed previously that we want to avoid)
- boolean (hard/soft) or a string (hard/soft) - new blending functions other than the ones provided would need if statements in the current shaders which might get messy.
Also added a `flat_shading` function and a `FlatShader` - I could make this into a tutorial as it was really easy to add a new shader and it might be a nice showcase.
NOTE: There are a few more places where the naming will need to change (e.g the tutorials) but I wanted to reach a consensus on this before changing it everywhere.
Reviewed By: jcjohnson
Differential Revision: D19761036
fbshipit-source-id: f972f6530c7f66dc5550b0284c191abc4a7f6fc4
Summary:
Create the textures and the Meshes object from OBJ files in a single call.
There is functionality in OBJ files (like normals) which is ignored by this function.
Reviewed By: gkioxari
Differential Revision: D19691699
fbshipit-source-id: e26442ed80ff231b65b17d6c54c9d41e22b4e4a3
Summary:
Update all colab notebooks to:
- Install pytorch3d using pip install from github.
- Retrieve data using `wget`. I set the wget commands to save the files in the same directory structure as in the PyTorch3d repo so that the rest of the tutorial would work for running locally or on Colab.
This should resolve the issues on GitHub with running the colab notebooks.
Reviewed By: gkioxari
Differential Revision: D19827450
fbshipit-source-id: d7b338597ddfd9a84c24592d4dccd274cae11d05
Summary:
Set up landing page, docs page, and html versions of the ipython notebook tutorials.
Pull Request resolved: https://github.com/fairinternal/pytorch3d/pull/11
Reviewed By: gkioxari
Differential Revision: D19730380
Pulled By: nikhilaravi
fbshipit-source-id: 5df8d3f2ac2f8dce4d51f5d14fc336508c2fd0ea