Merge pull request #204 from coltfox/bvh-extents-calc

Correctly calculate BVH item extents
This commit is contained in:
dexyfex 2023-08-21 14:36:25 +10:00 committed by GitHub
commit 378e66ef3b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 11 deletions

View File

@ -2880,7 +2880,7 @@ namespace CodeWalker.GameFiles
if (child != null)
{
var cbox = new BoundingBox(child.BoxMin, child.BoxMax);
var tcbox = cbox.Transform(child.Position, child.Orientation, child.Scale);
var tcbox = cbox.Transform(child.Transform);
var it = new BVHBuilderItem();
it.Min = tcbox.Minimum;
it.Max = tcbox.Maximum;
@ -2894,16 +2894,7 @@ namespace CodeWalker.GameFiles
}
}
var bvh = BVHBuilder.Build(items, 1); //composites have BVH item threshold of 1
BoxMin = bvh.BoundingBoxMin.XYZ();
BoxMax = bvh.BoundingBoxMax.XYZ();
BoxCenter = bvh.BoundingBoxCenter.XYZ();
SphereCenter = BoxCenter;
SphereRadius = (BoxMax - BoxCenter).Length();
BVH = bvh;
BVH = BVHBuilder.Build(items, 1); //composites have BVH item threshold of 1
}
public void UpdateChildrenFlags()

View File

@ -127,6 +127,11 @@ namespace CodeWalker
public static BoundingBox Transform(this BoundingBox b, Vector3 position, Quaternion orientation, Vector3 scale)
{
var mat = Matrix.Transformation(Vector3.Zero, Quaternion.Identity, scale, Vector3.Zero, orientation, position);
return b.Transform(mat);
}
public static BoundingBox Transform(this BoundingBox b, Matrix mat)
{
var matabs = mat;
matabs.Column1 = mat.Column1.Abs();
matabs.Column2 = mat.Column2.Abs();