Skip to content

Clash detection between meshes of glTF files.

License

Notifications You must be signed in to change notification settings

griffelstudio/gltf-collision-detection

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

80 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GS.Gltf.Collisions contributions welcome HitCount

.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.

image

Quick Start Package Deploy

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();

Help

Result of collision detection is the list of CollisionResult objects, each containing pair of intersecting elements and BoundingBoxs.

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 disk
  • SeparateFile - creates glTF file containing red axis aligned bounding boxes for each intersected pair of elements
  • MergeAll - creates one glTF file with all input models merged and adds red bounding boxes nodes in it

Resources

https://github.com/jslee02/awesome-collision-detection#other-awesome-lists