Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save BenVlodgi/9b2d0a5143cf14aad725ab0521b88992 to your computer and use it in GitHub Desktop.
Save BenVlodgi/9b2d0a5143cf14aad725ab0521b88992 to your computer and use it in GitHub Desktop.
Unreal Engine: Accessing Static Mesh Collision Primitive Data

Unreal Engine: Accessing Static Mesh Collision Primitive Data

Useful if you want to extract the authored collision information to use in other system. Perhaps ones that rely on SDFs; Like a 3d fluid simulation.

#include "PhysicsEngine/BodySetup.h"

void GetMeshCollision(const UStaticMeshComponent* Component)
{
	// Get to the Mesh Geometry
	const UStaticMesh* Mesh = Component->GetStaticMesh();
	const UBodySetup* MeshBodySetup = Mesh->GetBodySetup();
	const FKAggregateGeom& MeshGeometry = MeshBodySetup->AggGeom;

	// Access to the collision primitive definitions.
	const TArray<FKBoxElem>& Boxes = MeshGeometry.BoxElems;
	const TArray<FKSphereElem>& Spheres = MeshGeometry.SphereElems;
	const TArray<FKSphylElem>& Capsules = MeshGeometry.SphylElems;
	const TArray<FKTaperedCapsuleElem>& TaperedCapsules = MeshGeometry.TaperedCapsuleElems;
	const TArray<FKConvexElem>& ConvexShapes = MeshGeometry.ConvexElems;
	const TArray<FKLevelSetElem>& LevelSets = MeshGeometry.LevelSetElems;
	const TArray<FKSkinnedLevelSetElem>& SkinnedLevelSets = MeshGeometry.SkinnedLevelSetElems;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment