Skip to content

Commit

Permalink
exposed KdTree build flags & version bump
Browse files Browse the repository at this point in the history
  • Loading branch information
haraldsteinlechner committed Apr 4, 2024
1 parent 7fdf368 commit 62aeeee
Show file tree
Hide file tree
Showing 2 changed files with 27 additions and 7 deletions.
3 changes: 3 additions & 0 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
### 1.6.0
- exposed kdtree build flags

### 1.5.2
- creates relative paths for kdtrees as early as possible

Expand Down
31 changes: 24 additions & 7 deletions src/OPCViewer.Base/KdTrees.fs
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,22 @@ module KdTrees =
b.CodeT(ref kdTree)
Log.stop()

type KdTreeParameters = {
flags : KdIntersectionTree.BuildFlags
relativeMinCellSize : float
splitPlaneEpsilon : float
setObjectSetToNull : bool // can be recomputed on load
}

module KdTreeParameters =
let legacyDefault =
{
// retrieved from 2016 TextureConverter tool
flags = KdIntersectionTree.BuildFlags.Hierarchical ||| KdIntersectionTree.BuildFlags.MediumIntersection
relativeMinCellSize = 1E-06
splitPlaneEpsilon = 1E-07
setObjectSetToNull = true
}

let loadKdTrees'
(h: PatchHierarchy)
Expand All @@ -187,6 +203,7 @@ module KdTrees =
(ignoreMasterKdTree : bool)
(loadTriangles : Trafo3d -> string -> TriangleSet)
(surpressFileConstruction : bool)
(kdTreeParameters : KdTreeParameters)
: HashMap<Box3d, Level0KdTree> =

let masterKdPath =
Expand Down Expand Up @@ -244,13 +261,13 @@ module KdTrees =
let triangleSet = loadTriangles trafo objectSetPath

Log.startTimed $"Building KdTree for {info.Name}"
let flags =
KdIntersectionTree.BuildFlags.Picking
||| KdIntersectionTree.BuildFlags.FastBuild
||| KdIntersectionTree.BuildFlags.EmptySpaceOptimization

let kdTree = KdIntersectionTree(triangleSet, flags )
let kdTree = KdIntersectionTree(triangleSet, kdTreeParameters.flags, kdTreeParameters.relativeMinCellSize, kdTreeParameters.splitPlaneEpsilon)
Log.stop()

// can (and will) be recomputed from vertex data on load
if kdTreeParameters.setObjectSetToNull then
kdTree.ObjectSet <- null

Log.startTimed "saving KdTree to: %s" info.Name
saveKdTree kdTree kdPath
Log.stop()
Expand Down Expand Up @@ -348,4 +365,4 @@ module KdTrees =
(b: BinarySerializer) (forceRebuild : bool) (ignoreMasterKdTree : bool)
(loadTriangles : Trafo3d -> string -> TriangleSet) (surpressFileConstruction : bool) : HashMap<Box3d, Level0KdTree> =

loadKdTrees' h trafo true mode b forceRebuild ignoreMasterKdTree loadTriangles surpressFileConstruction
loadKdTrees' h trafo true mode b forceRebuild ignoreMasterKdTree loadTriangles surpressFileConstruction KdTreeParameters.legacyDefault

0 comments on commit 62aeeee

Please sign in to comment.