[WIP] - interaction surface points #2442
Draft
+696
−95
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Motivation and Context
This PR contains a prototype viewer.py application for computing "interaction surface points".
Context:
In many scenarios a heuristic of unoccluded point to surface distance is desired.
Instead, "interaction surface points" provide a pre-computed set of points which cover the surface of an object allowing distance and occlusion checks against a set of points in order to reduce the likely-hood of edge cases.
Implementation:
Concretely, we use horizontal raycasting from the AABB boundary to collect a set of exterior surface points.
We then cull the point set by removing points with lowest pairwise distance until a configurable maximum number of points remain. This provides a heuristically uniform distribution.
We cache the points in MarkerSets and serialize to template metadata such that pre-computed points can be re-loaded from the SceneDataset rather than re-computed at runtime.
TODO: migrate to a util, pre-compute over dataset
How Has This Been Tested
Viewer application demo code.
Try it out:
viewer.py
on your scene of choice.Example:
interaction_surface_points-2024-08-07_17.16.46.mp4
Types of changes
Checklist