The C++ implementation of fast_winding_number supports building a BVH or octree to perform multiple sets of queries for both triangle meshes/soups and point clouds, but currently the Python bindings only support a workflow where a BVH is built over a mesh (V,F) before evaluating on the provided query points, without supporting points or pre-built trees. Meanwhile, the tree-based API for computing unsigned squared distances to a mesh is now supported by the bindings, so it would be nice to have tree support for winding numbers as well for full signed distance support in the Python bindings. (I have some binding code for a subset of this functionality and can set up a PR at some point, though not for a few weeks.)