facebookresearch / habitat-sim

A flexible, high-performance 3D simulator for Embodied AI research.
https://aihabitat.org/
MIT License
2.58k stars 419 forks source link

[WIP] - interaction surface points #2442

Open aclegg3 opened 2 months ago

aclegg3 commented 2 months ago

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:

Example:

https://github.com/user-attachments/assets/6d69586c-541f-4a7c-ab08-fe833e7d9c32

Types of changes

Checklist