I’m a computer scientist, researching geometry processing, computer graphics/vision, and 3D machine learning. My work seeks new algorithms and new representations to make computing with geometric data easy, efficient, and reliable. Currently I’m finishing my PhD at Carnegie Mellon University, advised by Keenan Crane and supported by an NSF Graduate Research Fellowship.

Previously, I was an undergraduate at Virginia Tech, where I worked with T.M. Murali on computational systems biology, and was active in competitive programming. Outside of work, I’m a big fan of long-distance running, hockey, and cooking.


Research

teaser img

You Can Find Geodesic Paths in Triangle Meshes by Just Flipping Edges

Nicholas Sharp and Keenan Crane

ACM Trans. on Graph. (SIGGRAPH Asia 2020)

A simple greedy strategy of intrinsic edge flips will provably shorten a given path, loop, or curve network to an exact, locally-shortest geodesic. The procedure also generates a triangulation with these geodesics as edges, which is useful for many applications.

project pdf (17mb) bibtex
teaser img

PointTriNet: Learned Triangulation of 3D Point Sets

Nicholas Sharp and Maks Ovsjanikov

European Conference on Computer Vision (ECCV 2020)

What if we tried deep point set triangulation? PointTriNet presents a classifier + proposal architecture, iteratively generating triangles in a mesh. The method is general, scalable, and differentiable, serving as a triangulation layer for 3D learning.

project pdf (18mb) code talk supplement bibtex arxiv
teaser img

A Laplacian for Nonmanifold Triangle Meshes

Nicholas Sharp and Keenan Crane

Symposium on Geometry Processing (SGP 2020)

Best Student Paper Award

We extend intrinsic triangulations to apply to any triangle mesh, even those that are nonmanifold and have boundary—the resulting high-quality Laplacian improves the performance and robustness of many algorithms. This strategy also yields a point cloud Laplacian with similar properties!

pdf talk code (C++) code (python)
teaser img

Navigating Intrinsic Triangulations

Nicholas Sharp, Yousuf Soliman, Keenan Crane

ACM Trans. on Graph. (SIGGRAPH 2019)

We describe a data structure for encoding high-quality intrinsic triangulations on top of a low-quality input mesh. This data structure serves as a black box for robust geometric computation.

pdf code talk
teaser img

The Vector Heat Method

Nicholas Sharp, Yousuf Soliman, Keenan Crane

ACM Trans. on Graph. (SIGGRAPH 2019)

We show that parallel transport is effectively computed via short-time heat flow. In turn, this leads to efficient algorithms for velocity extension, computing the log map, and much more.

project pdf (24mb) code talk bibtex
teaser img

Variational Surface Cutting

Nicholas Sharp, Keenan Crane

ACM Trans. on Graph. (SIGGRAPH 2018)

Good surface cuts are short, yet allow a shape to be flattened with little distortion. Here, we show shape optimization can be applied to the Yamabe equation to directly compute smooth cuts with arbitrarily low distortion.

pdf code talk shape opt tutorial derivations
teaser img

Xtalk: a path-based approach for identifying crosstalk between signaling pathways

Allison N Tegge, Nicholas Sharp, TM Murali

Bioinformatics 2016

teaser img

Pathways on demand: automated reconstruction of human signaling networks

Anna Ritz, Christopher L Poirel, Allison N Tegge, Nicholas Sharp, Kelsey Simmons, Allison Powell, Shiv D Kale, TM Murali

npj Systems Biology and Applications 2016



Software

teaser img

Polyscope

A C++ & Python viewer and user interface for the rapid prototyping and debugging of geometric algorithms in 3D geometry processing. The lofty objective of Polyscope is to offer a useful visual interface to your data via a single line of code.

website code
teaser img

Geometry Central

A modern C++ codebase providing the low-level tools to implement algorithms in geometry processing, scientific computing, and computer graphics/vision, with a particular focus on the geometry of surfaces.

website code
teaser img

Happly

A C++ header-only parser for the .ply file-format. Includes reading and writing in plaintext or binary mode, general and mesh-specific elements, and automatic type promotion.

code