dimforge / parry

2D and 3D collision-detection library for Rust.
https://parry.rs
Apache License 2.0
557 stars 97 forks source link

Docs: Make clear that TriMeshes are not treated as solid for point queries, even when `solid` flag given #4

Open clbarnes opened 3 years ago

clbarnes commented 3 years ago

The same was true in ncollide.

clbarnes commented 3 years ago

Related: a method to check whether points are inside meshes, see https://github.com/dimforge/ncollide/issues/317

sebcrozet commented 3 years ago

Hi! The solid flags indicates that the projection will be the point itself if it lies on the interior of the shape. But in 3D, our TriMesh has no interior by definition, therefore the solid flag is meaningless. It does have a meaning in 2D though (because in 2D triangles have an interior).

The ray-cast based alternative you suggested in dimforge/ncollide#317 remains the best way of doing this. Maybe we could provide it as an inherent method of TriMesh?

clbarnes commented 3 years ago

That would certainly be useful to me, although my use case may be atypical (generic mesh queries rather than game engine specific). It's made a bit harder by this bug https://github.com/dimforge/ncollide/issues/335 ; it's safest to fire a number of rays in different directions and find the consensus. I also haven't found any references to backfaces in the codebase, although I haven't been able to search too deeply yet.

clbarnes commented 8 months ago

This issue is potentially resolved by oriented trimeshes now doing an actual containment check for contains{_local}_point, which is great news! Will do a bit more testing on my end before closing.