public static BoundingBox ToBoundingBox(this IEnumerable<Vector3> vertices) {
var ie = vertices.GetEnumerator();
if (!ie.MoveNext()) return new BoundingBox();
var v = ie.Current;
var minX = v.X;
var minY = v.Y;
var minZ = v.Z;
var maxX = v.X;
var maxY = v.Y;
var maxZ = v.Z;
while (ie.MoveNext()) {
var n = ie.Current;
if (minX > n.X) minX = n.X;
if (minY > n.Y) minY = n.Y;
if (minZ > n.Z) minZ = n.Z;
if (maxX < n.X) maxX = n.X;
if (maxY < n.Y) maxY = n.Y;
if (maxZ < n.Z) maxZ = n.Z;
}
return new BoundingBox(new Vector3(minX, minY, minZ), new Vector3(maxX, maxY, maxZ));
}