pmndrs / use-cannon

👋💣 physics based hooks for @react-three/fiber
https://cannon.pmnd.rs
2.73k stars 153 forks source link

Suggestion: 'Inverted Collider' Option #444

Open espressom opened 6 months ago

espressom commented 6 months ago

I am working on a snow globe project in a React application and would like to propose an 'inverted' option:

image

The rationale behind this suggestion is as follows:

  1. This feature has been actively discussed a few years ago within the Unity community.

    • The Unity engine typically determines the direction of a collider based on normals. Therefore, by flipping the mesh's normals in Blender, it's possible to invert the collider.
  2. Similar requests have recently been posted in the forums of Babylon.js

I would be grateful if you could consider the introduction of an invert collider option to explore more possibilities on the web.

stockhuman commented 3 months ago

This is one of those features that makes a lot more sense in the real world than it does in a simulation; the way Cannon makes collision logic expedient is by first testing for axis-aligned bounding box intersection - imagine the entire simulation divided into cubes. When the cube approximation of a collider is within the grid space of another collider (a rather simple comparison), more precise math kicks in to actually compute a collision.

Inverting a collider alters the AABB logic: all colliders in your example will always intersect - at least without further resolving - which ends up looking like Trimesh collider logic. Perhaps setting up an approximation of your snow globe with programmatically created planes would suffice?