Skip to content

V-HACD modified for use as a simple C++ library

License

Notifications You must be signed in to change notification settings

RamblingMadMan/v-hacd

 
 

Repository files navigation

The V-HACD library decomposes a 3D surface into a set of "near" convex parts.

Approximate convex decomposition of "Camel"

This repo is a fork of the original that removes all binaries and alters the CMake files for use as a subproject.

Why do we need approximate convex decomposition?

Collision detection is essential for realistic physical interactions in video games and computer animation. In order to ensure real-time interactivity with the player/user, video game and 3D modeling software developers usually approximate the 3D models composing the scene (e.g. animated characters, static objects...) by a set of simple convex shapes such as ellipsoids, capsules or convex-hulls. In practice, these simple shapes provide poor approximations for concave surfaces and generate false collision detection.

Convex-hull vs. ACD

A second approach consists in computing an exact convex decomposition of a surface S, which consists in partitioning it into a minimal set of convex sub-surfaces. Exact convex decomposition algorithms are NP-hard and non-practical since they produce a high number of clusters. To overcome these limitations, the exact convexity constraint is relaxed and an approximate convex decomposition of S is instead computed. Here, the goal is to determine a partition of the mesh triangles with a minimal number of clusters, while ensuring that each cluster has a concavity lower than a user defined threshold.

ACD vs. ECD

More approximate convex decomposition results

V-HACD Results (1/4) V-HACD Results (2/4) V-HACD Results (3/4) V-HACD Results (4/4)

About

V-HACD modified for use as a simple C++ library

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 95.9%
  • Python 2.9%
  • Other 1.2%