Skip to content

Releases: NVIDIAGameWorks/kaolin

v0.9.0

09 Dec 19:30
e38afca
Compare
Choose a tag to compare

Changelogs:

Highlights

The Kaolin 0.9 release include a reformat of the API and various improvment of the performance and the ergonomy of Kaolin.
A reformat was required to be able to have a maintainable, clean and reliable Kaolin in the long term.

Low level API

Mesh class contained too many attributes and methods that were too specific or unused or redundant.
Also given how quickly the field can shift to new methods, having a fixed class representation can be a constraint. We chose to focus on low-level functions with torch tensors as inputs / outputs, to favor reusability.
High-level representation will be added later once the common use cases get more easy to define.

Model Zoo

Maintainable and reliable Kaolin means a more compact library. We decided to move the model zoo out of Kaolin, this model zoo will have a dedicate repository, will rely on release of Kaolin, and so will be maintained separately.

Batching

Kaolin is now fully batched, by default with a fixed topology, but also (with limited support) representation for heterogenous structures using packed and padded approch, see documentation for more details.
We intend to provide more primitive ops for heterogenous structures.

Optimizations

We've been mostly focusing on GPU efficiency.
Among the optimizations, speedups are reported on:

  • kaolin.render.mesh.rasterization.dibr_rasterization(height, width, face_vertice_z, face_vertices_image, face_features, face_normals_z) (~1.35x faster).
  • GraphConv: added a functionality of pre-normalization of the adjacency matrix kaolin.ops.gcn.GraphConv(node_feat, adj, normalized_adj=False) (~1.85x faster).
  • kaolin.ops.mesh.check_sign(vertices, faces, points, hash_resolution): (~2.75x faster).
  • kaolin.ops.mesh.sample_points(vertices, faces, num_samples, areas): added a functionality of pre-computation of faces areas (~1.6x faster)
  • kaolin.ops.conversions.voxelgrids_to_cubic_meshes(voxelgrids, is_trimesh) (~17x faster on cpu, >10000x faster on gpu)
  • kaolin.ops.voxelgrid.downsample(voxelgrids, scale) (~6.2x faster on cpu, ~25x faster on gpu)
  • kaolin.ops.voxelgrid.fill(voxelgrids) (~1.3x faster on cpu)
  • kaolin.ops.voxelgrid.extract_surface(voxelgrids) (~6.9x faster on cpu, ~37x faster on gpu)
  • kaolin.ops.voxelgrid.extract_odms(voxelgrids) (~250x faster on cpu, ~1276x faster on gpu)
  • kaolin.ops.voxelgrid.project_odms(odms, voxelgrids, votes) (~125x faster on cpum ~882x faster on gpu)
    We added a cuda implementation of lorensen's marching cube (used in kaolin.ops.conversions.voxelgrids_to_trianglemeshes(voxelgrids, iso_value))
    We added backpropagation to the triangle distance (used in kaolin.metrics.trianglemesh.point_to_mesh_distance(pointcloud, vertices, faces)) and side distance (used in kaolin.metrics.pointcloud.sided_distance(p1, p2), kaolin.metrics.pointcloud.chamfer_distance(p1, p2, w1, w2), kaolin.metrics.pointcloud.f_score(gt_points, pred_points, radius, eps)).

USD Visualization

We now provide importer and exporter to Universal Scene Description files, see the documentation for more information.
You can open those file using the Omniverse companion app, see Kaolin Devpage.

Contributors

In alphabetical order:

Wenzheng Chen
Sanja Fidler
Clement Fuji Tsang
Jason Gorski
Jean-Francois Lafleche
Rev Lebaredian
Jianing Li
Frank Shen
Masha Shugrina
Gavriel State
Jiehan Wang
Tommy Xiang

v0.1

27 Nov 05:02
c537bf7
Compare
Choose a tag to compare
v0.1 Pre-release
Pre-release

first version of Kaolin
beta