1. 17 Apr, 2020 3 commits
    • Roman Shapovalov's avatar
      Efficient PnP. · 04d8bf6a
      Roman Shapovalov authored
      Summary:
      Efficient PnP algorithm to fit 2D to 3D correspondences under perspective assumption.
      
      Benchmarked both variants of nullspace and pick one; SVD takes 7 times longer in the 100K points case.
      
      Reviewed By: davnov134, gkioxari
      
      Differential Revision: D20095754
      
      fbshipit-source-id: 2b4519729630e6373820880272f674829eaed073
      04d8bf6a
    • David Novotny's avatar
      Camera inheritance + unprojections · 7788a380
      David Novotny authored
      Summary: Made a CameraBase class. Added `unproject_points` method for each camera class.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20373602
      
      fbshipit-source-id: 7e3da5ae420091b5fcab400a9884ef29ad7a7343
      7788a380
    • David Novotny's avatar
      Pointcloud normals estimation. · 365945b1
      David Novotny authored
      Summary: Estimates normals of a point cloud.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20860182
      
      fbshipit-source-id: 652ec2743fa645e02c01ffa37c2971bf27b89cef
      365945b1
  2. 16 Apr, 2020 3 commits
    • David Novotny's avatar
      ICP - point-to-point version · 8abbe22f
      David Novotny authored
      Summary:
      The iterative closest point algorithm - point-to-point version.
      
      Output of `bm_iterative_closest_point`:
      Argument key: `batch_size dim n_points_X n_points_Y use_pointclouds`
      
      ```
      Benchmark                                         Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      IterativeClosestPoint_1_3_100_100_False              107569          111323              5
      IterativeClosestPoint_1_3_100_1000_False             118972          122306              5
      IterativeClosestPoint_1_3_1000_100_False             108576          110978              5
      IterativeClosestPoint_1_3_1000_1000_False            331836          333515              2
      IterativeClosestPoint_1_20_100_100_False             134387          137842              4
      IterativeClosestPoint_1_20_100_1000_False            149218          153405              4
      IterativeClosestPoint_1_20_1000_100_False            414248          416595              2
      IterativeClosestPoint_1_20_1000_1000_False           374318          374662              2
      IterativeClosestPoint_10_3_100_100_False             539852          539852              1
      IterativeClosestPoint_10_3_100_1000_False            752784          752784              1
      IterativeClosestPoint_10_3_1000_100_False           1070700         1070700              1
      IterativeClosestPoint_10_3_1000_1000_False          1164020         1164020              1
      IterativeClosestPoint_10_20_100_100_False            374548          377337              2
      IterativeClosestPoint_10_20_100_1000_False           472764          476685              2
      IterativeClosestPoint_10_20_1000_100_False          1457175         1457175              1
      IterativeClosestPoint_10_20_1000_1000_False         2195820         2195820              1
      IterativeClosestPoint_1_3_100_100_True               110084          115824              5
      IterativeClosestPoint_1_3_100_1000_True              142728          147696              4
      IterativeClosestPoint_1_3_1000_100_True              212966          213966              3
      IterativeClosestPoint_1_3_1000_1000_True             369130          375114              2
      IterativeClosestPoint_10_3_100_100_True              354615          355179              2
      IterativeClosestPoint_10_3_100_1000_True             451815          452704              2
      IterativeClosestPoint_10_3_1000_100_True             511833          511833              1
      IterativeClosestPoint_10_3_1000_1000_True            798453          798453              1
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: shapovalov, gkioxari
      
      Differential Revision: D19909952
      
      fbshipit-source-id: f77fadc88fb7c53999909d594114b182ee2a3def
      8abbe22f
    • Nikhila Ravi's avatar
      lint fixes · b530b0af
      Nikhila Ravi authored
      Summary: Resolved trailing whitespace warnings.
      
      Reviewed By: gkioxari
      
      Differential Revision: D21023982
      
      fbshipit-source-id: 14ea2ca372c13cfa987acc260264ca99ce44c461
      b530b0af
    • Nikhila Ravi's avatar
      remove nearest_neighbors · 3794f675
      Nikhila Ravi authored
      Summary: knn is more general and faster than the nearest_neighbor code, so remove the latter.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20816424
      
      fbshipit-source-id: 75d6c44d17180752d0c9859814bbdf7892558158
      3794f675
  3. 15 Apr, 2020 3 commits
  4. 11 Apr, 2020 1 commit
    • Georgia Gkioxari's avatar
      point mesh distances · 487d4d66
      Georgia Gkioxari authored
      Summary:
      Implementation of point to mesh distances. The current diff contains two types:
      (a) Point to Edge
      (b) Point to Face
      
      ```
      
      Benchmark                                       Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      POINT_MESH_EDGE_4_100_300_5000_cuda:0                2745            3138            183
      POINT_MESH_EDGE_4_100_300_10000_cuda:0               4408            4499            114
      POINT_MESH_EDGE_4_100_3000_5000_cuda:0               4978            5070            101
      POINT_MESH_EDGE_4_100_3000_10000_cuda:0              9076            9187             56
      POINT_MESH_EDGE_4_1000_300_5000_cuda:0               1411            1487            355
      POINT_MESH_EDGE_4_1000_300_10000_cuda:0              4829            5030            104
      POINT_MESH_EDGE_4_1000_3000_5000_cuda:0              7539            7620             67
      POINT_MESH_EDGE_4_1000_3000_10000_cuda:0            12088           12272             42
      POINT_MESH_EDGE_8_100_300_5000_cuda:0                3106            3222            161
      POINT_MESH_EDGE_8_100_300_10000_cuda:0               8561            8648             59
      POINT_MESH_EDGE_8_100_3000_5000_cuda:0               6932            7021             73
      POINT_MESH_EDGE_8_100_3000_10000_cuda:0             24032           24176             21
      POINT_MESH_EDGE_8_1000_300_5000_cuda:0               5272            5399             95
      POINT_MESH_EDGE_8_1000_300_10000_cuda:0             11348           11430             45
      POINT_MESH_EDGE_8_1000_3000_5000_cuda:0             17478           17683             29
      POINT_MESH_EDGE_8_1000_3000_10000_cuda:0            25961           26236             20
      POINT_MESH_EDGE_16_100_300_5000_cuda:0               8244            8323             61
      POINT_MESH_EDGE_16_100_300_10000_cuda:0             18018           18071             28
      POINT_MESH_EDGE_16_100_3000_5000_cuda:0             19428           19544             26
      POINT_MESH_EDGE_16_100_3000_10000_cuda:0            44967           45135             12
      POINT_MESH_EDGE_16_1000_300_5000_cuda:0              7825            7937             64
      POINT_MESH_EDGE_16_1000_300_10000_cuda:0            18504           18571             28
      POINT_MESH_EDGE_16_1000_3000_5000_cuda:0            65805           66132              8
      POINT_MESH_EDGE_16_1000_3000_10000_cuda:0           90885           91089              6
      --------------------------------------------------------------------------------
      
      Benchmark                                       Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      POINT_MESH_FACE_4_100_300_5000_cuda:0                1561            1685            321
      POINT_MESH_FACE_4_100_300_10000_cuda:0               2818            2954            178
      POINT_MESH_FACE_4_100_3000_5000_cuda:0              15893           16018             32
      POINT_MESH_FACE_4_100_3000_10000_cuda:0             16350           16439             31
      POINT_MESH_FACE_4_1000_300_5000_cuda:0               3179            3278            158
      POINT_MESH_FACE_4_1000_300_10000_cuda:0              2353            2436            213
      POINT_MESH_FACE_4_1000_3000_5000_cuda:0             16262           16336             31
      POINT_MESH_FACE_4_1000_3000_10000_cuda:0             9334            9448             54
      POINT_MESH_FACE_8_100_300_5000_cuda:0                4377            4493            115
      POINT_MESH_FACE_8_100_300_10000_cuda:0               9728            9822             52
      POINT_MESH_FACE_8_100_3000_5000_cuda:0              26428           26544             19
      POINT_MESH_FACE_8_100_3000_10000_cuda:0             42238           43031             12
      POINT_MESH_FACE_8_1000_300_5000_cuda:0               3891            3982            129
      POINT_MESH_FACE_8_1000_300_10000_cuda:0              5363            5429             94
      POINT_MESH_FACE_8_1000_3000_5000_cuda:0             20998           21084             24
      POINT_MESH_FACE_8_1000_3000_10000_cuda:0            39711           39897             13
      POINT_MESH_FACE_16_100_300_5000_cuda:0               5955            6001             84
      POINT_MESH_FACE_16_100_300_10000_cuda:0             12082           12144             42
      POINT_MESH_FACE_16_100_3000_5000_cuda:0             44996           45176             12
      POINT_MESH_FACE_16_100_3000_10000_cuda:0            73042           73197              7
      POINT_MESH_FACE_16_1000_300_5000_cuda:0              8292            8374             61
      POINT_MESH_FACE_16_1000_300_10000_cuda:0            19442           19506             26
      POINT_MESH_FACE_16_1000_3000_5000_cuda:0            36059           36194             14
      POINT_MESH_FACE_16_1000_3000_10000_cuda:0           64644           64822              8
      --------------------------------------------------------------------------------
      ```
      
      Reviewed By: jcjohnson
      
      Differential Revision: D20590462
      
      fbshipit-source-id: 42a39837b514a546ac9471bfaff60eefe7fae829
      487d4d66
  5. 07 Apr, 2020 1 commit
    • Jeremy Reizenstein's avatar
      heterogenous KNN · 01b5f7b2
      Jeremy Reizenstein authored
      Summary: Interface and working implementation of ragged KNN. Benchmarks (which aren't ragged) haven't slowed. New benchmark shows that ragged is faster than non-ragged of the same shape.
      
      Reviewed By: jcjohnson
      
      Differential Revision: D20696507
      
      fbshipit-source-id: 21b80f71343a3475c8d3ee0ce2680f92f0fae4de
      01b5f7b2
  6. 06 Apr, 2020 2 commits
    • Jeremy Reizenstein's avatar
      Allow conda's generated files. · 29b9c44c
      Jeremy Reizenstein authored
      Summary: The conda build process generates some files of its own, which we don't want to catch in our test for copyright notices.
      
      Reviewed By: nikhilaravi, patricklabatut
      
      Differential Revision: D20868566
      
      fbshipit-source-id: 76a786a3eb9a674d59e630cc06f346e8b82258a4
      29b9c44c
    • Jeremy Reizenstein's avatar
      fix recent lint · b87058c6
      Jeremy Reizenstein authored
      Summary: lint clean again
      
      Reviewed By: patricklabatut
      
      Differential Revision: D20868775
      
      fbshipit-source-id: ade4301c1012c5c6943186432465215701d635a9
      b87058c6
  7. 05 Apr, 2020 1 commit
    • David Novotny's avatar
      Initialization of Transform3D with a custom matrix. · 90dc7a08
      David Novotny authored
      Summary:
      Allows to initialize a Transform3D object with a batch of user-defined transformation matrices:
      ```
      t = Transform3D(matrix=torch.randn(2, 4, 4))
      ```
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20693475
      
      fbshipit-source-id: dccc49b2ca4c19a034844c63463953ba8f52c1bc
      90dc7a08
  8. 03 Apr, 2020 1 commit
    • Roman Shapovalov's avatar
      Weighted Umeyama. · e37085d9
      Roman Shapovalov authored
      Summary:
      1. Introduced weights to Umeyama implementation. This will be needed for weighted ePnP but is useful on its own.
      2. Refactored to use the same code for the Pointclouds mask and passed weights.
      3. Added test cases with random weights.
      4. Fixed a bug in tests that calls the function with 0 points (fails randomly in Pytorch 1.3, will be fixed in the next release: https://github.com/pytorch/pytorch/issues/31421 ).
      
      Reviewed By: gkioxari
      
      Differential Revision: D20070293
      
      fbshipit-source-id: e9f549507ef6dcaa0688a0f17342e6d7a9a4336c
      e37085d9
  9. 02 Apr, 2020 1 commit
    • David Novotny's avatar
      Umeyama · e5b1d6d3
      David Novotny authored
      Summary:
      Umeyama estimates a rigid motion between two sets of corresponding points.
      
      Benchmark output for `bm_points_alignment`
      
      ```
      Arguments key: [<allow_reflection>_<batch_size>_<dim>_<estimate_scale>_<n_points>_<use_pointclouds>]
      Benchmark                                                        Avg Time(μs)      Peak Time(μs) Iterations
      --------------------------------------------------------------------------------
      CorrespodingPointsAlignment_True_1_3_True_100_False                   7382            9833             68
      CorrespodingPointsAlignment_True_1_3_True_10000_False                 8183           10500             62
      CorrespodingPointsAlignment_True_1_3_False_100_False                  7301            9263             69
      CorrespodingPointsAlignment_True_1_3_False_10000_False                7945            9746             64
      CorrespodingPointsAlignment_True_1_20_True_100_False                 13706           41623             37
      CorrespodingPointsAlignment_True_1_20_True_10000_False               11044           33766             46
      CorrespodingPointsAlignment_True_1_20_False_100_False                 9908           28791             51
      CorrespodingPointsAlignment_True_1_20_False_10000_False               9523           18680             53
      CorrespodingPointsAlignment_True_10_3_True_100_False                 29585           32026             17
      CorrespodingPointsAlignment_True_10_3_True_10000_False               29626           36324             18
      CorrespodingPointsAlignment_True_10_3_False_100_False                26013           29253             20
      CorrespodingPointsAlignment_True_10_3_False_10000_False              25000           33820             20
      CorrespodingPointsAlignment_True_10_20_True_100_False                40955           41592             13
      CorrespodingPointsAlignment_True_10_20_True_10000_False              42087           42393             12
      CorrespodingPointsAlignment_True_10_20_False_100_False               39863           40381             13
      CorrespodingPointsAlignment_True_10_20_False_10000_False             40813           41699             13
      CorrespodingPointsAlignment_True_100_3_True_100_False               183146          194745              3
      CorrespodingPointsAlignment_True_100_3_True_10000_False             213789          231466              3
      CorrespodingPointsAlignment_True_100_3_False_100_False              177805          180796              3
      CorrespodingPointsAlignment_True_100_3_False_10000_False            184963          185695              3
      CorrespodingPointsAlignment_True_100_20_True_100_False              347181          347325              2
      CorrespodingPointsAlignment_True_100_20_True_10000_False            363259          363613              2
      CorrespodingPointsAlignment_True_100_20_False_100_False             351769          352496              2
      CorrespodingPointsAlignment_True_100_20_False_10000_False           375629          379818              2
      CorrespodingPointsAlignment_False_1_3_True_100_False                 11155           13770             45
      CorrespodingPointsAlignment_False_1_3_True_10000_False               10743           13938             47
      CorrespodingPointsAlignment_False_1_3_False_100_False                 9578           11511             53
      CorrespodingPointsAlignment_False_1_3_False_10000_False               9549           11984             53
      CorrespodingPointsAlignment_False_1_20_True_100_False                13809           14183             37
      CorrespodingPointsAlignment_False_1_20_True_10000_False              14084           15082             36
      CorrespodingPointsAlignment_False_1_20_False_100_False               12765           14177             40
      CorrespodingPointsAlignment_False_1_20_False_10000_False             12811           13096             40
      CorrespodingPointsAlignment_False_10_3_True_100_False                28823           39384             18
      CorrespodingPointsAlignment_False_10_3_True_10000_False              27135           27525             19
      CorrespodingPointsAlignment_False_10_3_False_100_False               26236           28980             20
      CorrespodingPointsAlignment_False_10_3_False_10000_False             42324           45123             12
      CorrespodingPointsAlignment_False_10_20_True_100_False              723902          723902              1
      CorrespodingPointsAlignment_False_10_20_True_10000_False            220007          252886              3
      CorrespodingPointsAlignment_False_10_20_False_100_False              55593           71636              9
      CorrespodingPointsAlignment_False_10_20_False_10000_False            44419           71861             12
      CorrespodingPointsAlignment_False_100_3_True_100_False              184768          185199              3
      CorrespodingPointsAlignment_False_100_3_True_10000_False            198657          213868              3
      CorrespodingPointsAlignment_False_100_3_False_100_False             224598          309645              3
      CorrespodingPointsAlignment_False_100_3_False_10000_False           197863          202002              3
      CorrespodingPointsAlignment_False_100_20_True_100_False             293484          309459              2
      CorrespodingPointsAlignment_False_100_20_True_10000_False           327253          366644              2
      CorrespodingPointsAlignment_False_100_20_False_100_False            420793          422194              2
      CorrespodingPointsAlignment_False_100_20_False_10000_False          462634          485542              2
      CorrespodingPointsAlignment_True_1_3_True_100_True                    7664            9909             66
      CorrespodingPointsAlignment_True_1_3_True_10000_True                  7190            8366             70
      CorrespodingPointsAlignment_True_1_3_False_100_True                   6549            8316             77
      CorrespodingPointsAlignment_True_1_3_False_10000_True                 6534            7710             77
      CorrespodingPointsAlignment_True_10_3_True_100_True                  29052           32940             18
      CorrespodingPointsAlignment_True_10_3_True_10000_True                30526           33453             17
      CorrespodingPointsAlignment_True_10_3_False_100_True                 28708           32993             18
      CorrespodingPointsAlignment_True_10_3_False_10000_True               30630           35973             17
      CorrespodingPointsAlignment_True_100_3_True_100_True                264909          320820              3
      CorrespodingPointsAlignment_True_100_3_True_10000_True              310902          322604              2
      CorrespodingPointsAlignment_True_100_3_False_100_True               246832          250634              3
      CorrespodingPointsAlignment_True_100_3_False_10000_True             276006          289061              2
      CorrespodingPointsAlignment_False_1_3_True_100_True                  11421           13757             44
      CorrespodingPointsAlignment_False_1_3_True_10000_True                11199           12532             45
      CorrespodingPointsAlignment_False_1_3_False_100_True                 11474           15841             44
      CorrespodingPointsAlignment_False_1_3_False_10000_True               10384           13188             49
      CorrespodingPointsAlignment_False_10_3_True_100_True                 36599           47340             14
      CorrespodingPointsAlignment_False_10_3_True_10000_True               40702           50754             13
      CorrespodingPointsAlignment_False_10_3_False_100_True                41277           52149             13
      CorrespodingPointsAlignment_False_10_3_False_10000_True              34286           37091             15
      CorrespodingPointsAlignment_False_100_3_True_100_True               254991          258578              2
      CorrespodingPointsAlignment_False_100_3_True_10000_True             257999          261285              2
      CorrespodingPointsAlignment_False_100_3_False_100_True              247511          248693              3
      CorrespodingPointsAlignment_False_100_3_False_10000_True            251807          263865              3
      ```
      
      Reviewed By: gkioxari
      
      Differential Revision: D19808389
      
      fbshipit-source-id: 83305a58627d2fc5dcaf3c3015132d8148f28c29
      e5b1d6d3
  10. 01 Apr, 2020 1 commit
    • Patrick Labatut's avatar
      Fix saving / loading empty PLY meshes · 83feed56
      Patrick Labatut authored
      Summary:
      Similar to D20392526, PLY files without vertices or faces should be allowed:
      - a PLY with only vertices can represent a point cloud
      - a PLY without any vertex or face is just empty
      - a PLY with faces referencing inexistent vertices has invalid data
      
      Reviewed By: gkioxari
      
      Differential Revision: D20400330
      
      fbshipit-source-id: 35a5f072603fd221f382c7faad5f37c3e0b49bb1
      83feed56
  11. 30 Mar, 2020 2 commits
    • Jeremy Reizenstein's avatar
      join_meshes_as_batch · b64fe513
      Jeremy Reizenstein authored
      Summary: rename join_meshes to join_meshes_as_batch.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20671293
      
      fbshipit-source-id: e84d6a67d6c1ec28fb5e52d4607db8e92561a4cd
      b64fe513
    • Jeremy Reizenstein's avatar
      fix recent lint · 27eb791e
      Jeremy Reizenstein authored
      Summary: Flowing of compositing comments
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20556707
      
      fbshipit-source-id: 4abdc85e4f65abd41c4a890b6895bc5e95b4576b
      27eb791e
  12. 29 Mar, 2020 2 commits
    • Patrick Labatut's avatar
      Address black + isort fbsource linter warnings · d57daa6f
      Patrick Labatut authored
      Summary: Address black + isort fbsource linter warnings from D20558374 (previous diff)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20558373
      
      fbshipit-source-id: d3607de4a01fb24c0d5269634563a7914bddf1c8
      d57daa6f
    • Jeremy Reizenstein's avatar
      Linter, deprecated type() · 37c5c8e0
      Jeremy Reizenstein authored
      Summary: Run linter after recent changes. Fix long comment in knn.h which clang-format has reflowed badly. Add crude test that code doesn't call deprecated `.type()` or `.data()`.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20692935
      
      fbshipit-source-id: 28ce0308adae79a870cb41a810b7cf8744f41ab8
      37c5c8e0
  13. 28 Mar, 2020 1 commit
    • Patrick Labatut's avatar
      Fix saving / loading empty OBJ files · 3061c5b6
      Patrick Labatut authored
      Summary:
      OBJ files without vertices or faces should be allowed:
      - an OBJ with only vertices can represent a point cloud
      - an OBJ without any vertex or face is just empty
      - an OBJ with faces referencing inexistent vertices has invalid data
      
      Reviewed By: gkioxari
      
      Differential Revision: D20392526
      
      fbshipit-source-id: e72c846ff1e5787fb11d527af3fefa261f9eb0ee
      3061c5b6
  14. 26 Mar, 2020 1 commit
    • Justin Johnson's avatar
      Implement K-Nearest Neighbors · 870290df
      Justin Johnson authored
      Summary:
      Implements K-Nearest Neighbors with C++ and CUDA versions.
      
      KNN in CUDA is highly nontrivial. I've implemented a few different versions of the kernel, and we heuristically dispatch to different kernels based on the problem size. Some of the kernels rely on template specialization on either D or K, so we use template metaprogramming to compile specialized versions for ranges of D and K.
      
      These kernels are up to 3x faster than our existing 1-nearest-neighbor kernels, so we should also consider swapping out `nn_points_idx` to use these kernels in the backend.
      
      I've been working mostly on the CUDA kernels, and haven't converged on the correct Python API.
      
      I still want to benchmark against FAISS to see how far away we are from their performance.
      
      Reviewed By: bottler
      
      Differential Revision: D19729286
      
      fbshipit-source-id: 608ffbb7030c21fe4008f330522f4890f0c3c21a
      870290df
  15. 23 Mar, 2020 1 commit
    • Jeremy Reizenstein's avatar
      use assertClose · 595aca27
      Jeremy Reizenstein authored
      Summary: use assertClose in some tests, which enforces shape equality. Fixes some small problems, including graph_conv on an empty graph.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20556912
      
      fbshipit-source-id: 60a61eafe3c03ce0f6c9c1a842685708fb10ac5b
      595aca27
  16. 22 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      run lint · 03f441e7
      Georgia Gkioxari authored
      Summary: Run `/dev/linter.sh` to fix linting
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20584037
      
      fbshipit-source-id: 69e45b33d22e3d54b6d37c3c35580bb3e9dc50a5
      03f441e7
  17. 20 Mar, 2020 1 commit
    • Georgia Gkioxari's avatar
      replace view with reshape, check for nans · 6c48ff6a
      Georgia Gkioxari authored
      Summary: Replace view with reshape, add check for nans before mesh sampling
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20548456
      
      fbshipit-source-id: c4e1b88e033ecb8f0f3a8f3a33a04ce13a5b5043
      6c48ff6a
  18. 19 Mar, 2020 1 commit
    • Olivia's avatar
      Accumulate points (#4) · 53599770
      Olivia authored
      Summary:
      Code for accumulating points in the z-buffer in three ways:
      1. weighted sum
      2. normalised weighted sum
      3. alpha compositing
      
      Pull Request resolved: https://github.com/fairinternal/pytorch3d/pull/4
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20522422
      
      Pulled By: gkioxari
      
      fbshipit-source-id: 5023baa05f15e338f3821ef08f5552c2dcbfc06c
      53599770
  19. 18 Mar, 2020 2 commits
  20. 17 Mar, 2020 2 commits
  21. 16 Mar, 2020 1 commit
    • Jeremy Reizenstein's avatar
      test_build · fa819533
      Jeremy Reizenstein authored
      Summary: Ensure copyright header consistency and translation unit name uniqueness.
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20438802
      
      fbshipit-source-id: 9820cfe4c6efab016a0a8589dfa24bb526692f83
      fa819533
  22. 15 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      [pytorch3d[ padded to packed function in struct utils · 20e457ca
      Nikhila Ravi authored
      Summary: Added a padded to packed utils function which takes either split sizes or a padding value to remove padded elements from a tensor.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20454238
      
      fbshipit-source-id: 180b807ff44c74c4ee9d5c1ac3b5c4a9b4be57c7
      20e457ca
  23. 13 Mar, 2020 1 commit
    • Patrick Labatut's avatar
      Add more complex mesh I/O benchmarks · d91c1d36
      Patrick Labatut authored
      Summary: Add more complex mesh I/O benchmarks: simple yet non-trivial procedural donut mesh
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390726
      
      fbshipit-source-id: b28b7e3a7f1720823c6bd24faabf688bb0127b7d
      d91c1d36
  24. 12 Mar, 2020 4 commits
    • Patrick Labatut's avatar
      Use more realistic number of vertices / faces in benchmarks · 098554d3
      Patrick Labatut authored
      Summary: Use more realistic number of vertices / faces in benchmarks: in typical meshes, |F| ~ 2 |V| (follows from Euler formula + triangles as faces)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390722
      
      fbshipit-source-id: d615e5810d6f4521391963b2573497c08a58db80
      098554d3
    • Patrick Labatut's avatar
      Simplify mesh I/O benchmarking methods · 94fc862f
      Patrick Labatut authored
      Summary: Rename mesh I/O benchmarking methods: always (re-)create file-like object and directly return a lambda
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390723
      
      fbshipit-source-id: b45236360869cccdf3d5458a0aafb3ebe269babe
      94fc862f
    • Patrick Labatut's avatar
      Rename mesh I/O benchmarks and associated methods · 797e468e
      Patrick Labatut authored
      Summary:
      Rename mesh I/O benchmarks and associated methods:
      - add `simple` qualifier (benchmark on more realistic mesh data to be added later)
      - align naming between OBJ and PLY
      - prefix with `bm_` to make the benchmarking purpose clear(er)
      
      Reviewed By: nikhilaravi
      
      Differential Revision: D20390764
      
      fbshipit-source-id: 7714520abfcfe1125067f3c52f7ce19bca359574
      797e468e
    • Patrick Labatut's avatar
      Remove shebang line when not strictly required · 3c71ab64
      Patrick Labatut authored
      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
      3c71ab64
  25. 11 Mar, 2020 1 commit
    • Jeremy Reizenstein's avatar
      getitem for textures · fb97ab10
      Jeremy Reizenstein authored
      Summary: Make Meshes.__getitem__ carry texture information to the new mesh.
      
      Reviewed By: gkioxari
      
      Differential Revision: D20283976
      
      fbshipit-source-id: d9ee0580c11ac5b4384df9d8158a07e6eb8d00fe
      fb97ab10
  26. 06 Mar, 2020 1 commit
    • Nikhila Ravi's avatar
      Fix coordinate system conventions in renderer · 15c72be4
      Nikhila Ravi authored
      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
      15c72be4