.NET Core 3.1 library to find intersecting meshes in 3D glTF files.
Not the fastest yet, but stable and 100% pure C#, ready to be built and utilized in any .NET codebase.
Get the package from GitHub Packages or NuGet.org
dotnet add package GS.Gltf.Collisions --version 1.0.0
Add using GS.Gltf.Collisions;
Create settings according to which collisions will be detected, supplying paths to one or many glTF files:
var inputFiles = new List<string> { "Just.gltf", "An.glb", "Example.glb" };
var settings = new CollisionSettings(inputFiles);
Create detector object and run detection method
var detector = new CollisionDetector(settings);
var result = detector.Detect();
Result of collision detection is the list of CollisionResult
objects, each containing pair of intersecting elements and BoundingBox
s.
Each of both elements is represented by KeyValuePair
where key is model index, value is glTF node index.
All bounding boxes are axis aligned. There are minimum one - around points of intersection, and maximum - around intersecting elements.
CollisionSettings.OutputMode
enumeration has 3 options:
InMemory
- just calculates intersection result without writing any files to diskSeparateFile
- creates glTF file containing red axis aligned bounding boxes for each intersected pair of elementsMergeAll
- creates one glTF file with all input models merged and adds red bounding boxes nodes in it
https://github.com/jslee02/awesome-collision-detection#other-awesome-lists