Skip to content

Commit

Permalink
Merge pull request #387 from pro3d-space/bugs/smallerkdtrees
Browse files Browse the repository at this point in the history
Bugs/smallerkdtrees
  • Loading branch information
haraldsteinlechner authored Apr 23, 2024
2 parents 922d290 + 5f2cbfc commit be7608b
Show file tree
Hide file tree
Showing 8 changed files with 76 additions and 67 deletions.
7 changes: 6 additions & 1 deletion PRODUCT_RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,12 @@
## 4.23.1
- tweaked kdtree split limit epsilon for smaller kdtrees

## 4.23.0
- tweaked kdtree split limit epsilon for smaller kdtrees

## 4.22.0
- further improved kdtree loading on NTFS/macbook


## 4.21.0-prerelease3
- further improved kdtree loading on NTFS/macbook

Expand Down
2 changes: 1 addition & 1 deletion paket.dependencies
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ nuget Aardvark.GeoSpatial.Opc ~> 5.10.8

nuget Aardium ~> 2.0.10-prerelease0007

nuget OPCViewer.Base ~> 1.5.2
nuget OPCViewer.Base ~> 1.6.1

nuget Uncodium.Eigensystems ~> 1.1.2
nuget Chiron ~> 6.3.1
Expand Down
96 changes: 48 additions & 48 deletions paket.lock
Original file line number Diff line number Diff line change
Expand Up @@ -5,45 +5,45 @@ NUGET
Aardium (2.0.10-prerelease0007)
FSharp.Core (>= 4.7)
FSys (>= 0.0.1 < 0.1)
Aardvark.Application (5.4.8)
Aardvark.Application (5.4.9)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
Aardvark.Application.Slim (5.4.8)
Aardvark.Application (5.4.8)
Aardvark.Application.Slim (5.4.9)
Aardvark.Application (5.4.9)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade (>= 5.5.3 < 5.6)
FSharp.Core (>= 5.0.1)
Silk.NET.GLFW (2.15)
Unofficial.OpenTK (>= 3.0.21 < 3.1)
Aardvark.Application.Slim.GL (5.4.8)
Aardvark.Application (5.4.8)
Aardvark.Application.Slim (5.4.8)
Aardvark.Application.Slim.GL (5.4.9)
Aardvark.Application (5.4.9)
Aardvark.Application.Slim (5.4.9)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering.GL (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.Rendering.GL (5.4.9)
FShade (>= 5.5.3 < 5.6)
FSharp.Core (>= 5.0.1)
Silk.NET.Core (2.15)
Silk.NET.GLFW (2.15)
Unofficial.OpenTK (>= 3.0.21 < 3.1)
Aardvark.Application.Slim.Vulkan (5.4.8)
Aardvark.Application (5.4.8)
Aardvark.Application.Slim (5.4.8)
Aardvark.Application.Slim.Vulkan (5.4.9)
Aardvark.Application (5.4.9)
Aardvark.Application.Slim (5.4.9)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering.Vulkan (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.Rendering.Vulkan (5.4.9)
FShade (>= 5.5.3 < 5.6)
FSharp.Core (>= 5.0.1)
GLSLangSharp (>= 0.4.14 < 0.5)
Expand Down Expand Up @@ -133,9 +133,9 @@ NUGET
Aardvark.SceneGraph.Opc (>= 5.4 < 5.5)
FSharp.Core (>= 5.0)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
Aardvark.GPGPU (5.4.8)
Aardvark.GPGPU (5.4.9)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
Expand All @@ -147,67 +147,67 @@ NUGET
Aardvark.Base.Tensors (>= 5.2.19 < 5.3)
FSharp.Core (>= 5.0.1)
Pfim (>= 0.11.2 < 0.12)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
Aardvark.Rendering.GL (5.4.8)
Aardvark.Rendering.GL (5.4.9)
Aardvark.Assembler (>= 0.0.8 < 0.1)
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
Aardvark.Geometry (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade (>= 5.5.3 < 5.6)
FSharp.Core (>= 5.0.1)
Unofficial.OpenTK (>= 3.0.21 < 3.1)
Aardvark.Rendering.Text (5.4.8)
Aardvark.Rendering.Text (5.4.9)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.SceneGraph (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.SceneGraph (5.4.9)
CommonMark.NET (>= 0.15.1 < 0.16)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
Unofficial.LibTessDotNet (>= 2.0.2 < 2.1)
Unofficial.Typography (>= 0.1 < 0.2)
Aardvark.Rendering.Vulkan (5.4.8)
Aardvark.Rendering.Vulkan (5.4.9)
Aardvark.Base.FSharp (>= 5.2.27 < 5.3)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade (>= 5.5.3 < 5.6)
FSharp.Core (>= 5.0.1)
GLSLangSharp (>= 0.4.14 < 0.5)
Aardvark.SceneGraph (5.4.8)
Aardvark.SceneGraph (5.4.9)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.Rendering (5.4.9)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
Aardvark.SceneGraph.IO (5.4.8)
Aardvark.SceneGraph.IO (5.4.9)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.SceneGraph (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.SceneGraph (5.4.9)
AssimpNet (>= 5.0.0-beta1 < 5.1.0-beta)
FShade.Core (>= 5.5.3 < 5.6)
FShade.GLSL (>= 5.5.3)
FSharp.Core (>= 5.0.1)
Aardvark.SceneGraph.Opc (5.4.8)
Aardvark.SceneGraph.Opc (5.4.9)
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
Aardvark.Base.IO (>= 5.2.27 < 5.3)
Aardvark.Rendering (5.4.8)
Aardvark.SceneGraph (5.4.8)
Aardvark.Rendering (5.4.9)
Aardvark.SceneGraph (5.4.9)
FSharp.Core (>= 5.0.1)
SharpZipLib (>= 1.4.1 < 1.5)
Aardvark.Service (5.4.2)
Aardvark.Service (5.4.4)
Aardvark.Application (>= 5.4.1)
Aardvark.Base (>= 5.2.28 < 5.3)
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
Expand All @@ -220,54 +220,54 @@ NUGET
FsPickler (>= 5.3.2 < 5.4)
FsPickler.Json (>= 5.3.2 < 5.4)
Suave (>= 2.5.6 < 2.6)
Aardvark.Service.Giraffe (5.4.2)
Aardvark.Service.Giraffe (5.4.4)
Aardvark.Application (>= 5.4.1)
Aardvark.Base (>= 5.2.28 < 5.3)
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
Aardvark.GPGPU (>= 5.4.1 < 5.5)
Aardvark.Rendering (>= 5.4.1 < 5.5)
Aardvark.Rendering.GL (>= 5.4.1)
Aardvark.Rendering.Vulkan (>= 5.4.1 < 5.5)
Aardvark.Service (5.4.2)
Aardvark.UI (5.4.2)
Aardvark.Service (5.4.4)
Aardvark.UI (5.4.4)
FSharp.Core (>= 5.0.1)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
FsPickler (>= 5.3.2 < 5.4)
FsPickler.Json (>= 5.3.2 < 5.4)
Giraffe (>= 5.0 < 5.1)
Suave (>= 2.5.6 < 2.6)
Aardvark.UI (5.4.2)
Aardvark.UI (5.4.4)
Aardvark.Application (>= 5.4.1)
Aardvark.Base (>= 5.2.28 < 5.3)
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
Aardvark.Base.Incremental (>= 5.2.28 < 5.3)
Aardvark.Rendering (>= 5.4.1 < 5.5)
Aardvark.SceneGraph (>= 5.4.1 < 5.5)
Aardvark.Service (5.4.2)
Aardvark.Service (5.4.4)
FSharp.Core (>= 5.0.1)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
FsPickler (>= 5.3.2 < 5.4)
FsPickler.Json (>= 5.3.2 < 5.4)
Suave (>= 2.5.6 < 2.6)
Aardvark.UI.Primitives (5.4.2)
Aardvark.UI.Primitives (5.4.4)
Aardvark.Application (>= 5.4.1)
Aardvark.Base (>= 5.2.28 < 5.3)
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
Aardvark.Base.Incremental (>= 5.2.28 < 5.3)
Aardvark.Rendering (>= 5.4.1 < 5.5)
Aardvark.SceneGraph (>= 5.4.1 < 5.5)
Aardvark.Service (5.4.2)
Aardvark.UI (5.4.2)
Adaptify.Core (>= 1.1.9 < 1.2)
Aardvark.Service (5.4.4)
Aardvark.UI (5.4.4)
Adaptify.Core (>= 1.1.13 < 1.2)
Aether (>= 8.3.1 < 8.4)
FSharp.Core (>= 5.0.1)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
FsPickler (>= 5.3.2 < 5.4)
FsPickler.Json (>= 5.3.2 < 5.4)
Adaptify.Core (1.1.9)
Adaptify.Core (1.1.13)
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
Adaptify.MSBuild (1.1.9)
Adaptify.Core (1.1.9)
Adaptify.MSBuild (1.1.13)
Adaptify.Core (1.1.13)
Aether (8.3.1)
FSharp.Core (>= 4.3.4)
AssimpNet (5.0.0-beta1)
Expand Down Expand Up @@ -324,7 +324,7 @@ NUGET
FSharp.Core (6.0.2)
FSharp.Data (3.1.1)
FSharp.Core (>= 4.3.4)
FSharp.Data.Adaptive (1.2.14)
FSharp.Data.Adaptive (1.2.15)
FSharp.Core (>= 4.7)
System.Reflection.Emit.Lightweight (>= 4.6)
FsPickler (5.3.2)
Expand Down Expand Up @@ -418,7 +418,7 @@ NUGET
NETStandard.Library (2.0.3)
Microsoft.NETCore.Platforms (>= 1.1)
Newtonsoft.Json (13.0.2)
OPCViewer.Base (1.5.2)
OPCViewer.Base (1.6.1)
Aardvark.Base (>= 5.2.14 < 5.3)
Aardvark.Base.FSharp (>= 5.2.14 < 5.3)
Aardvark.Geometry.Intersection (>= 5.2.13 < 5.3)
Expand Down
5 changes: 4 additions & 1 deletion src/PRo3D.Core/Surface.fs
Original file line number Diff line number Diff line change
Expand Up @@ -149,6 +149,8 @@ module DebugKdTreesX =
let intersectKdTrees bb (hitObject : Surface) (cache : HashMap<string, ConcreteKdIntersectionTree>) (ray : FastRay3d) (kdTreeMap: HashMap<Box3d, KdTrees.Level0KdTree>) =

let kdtree, c = kdTreeMap |> HashMap.find bb |> loadObjectSet cache
if isNull kdtree.KdIntersectionTree.ObjectSet then
Log.warn "object set null"

let kdi = kdtree.KdIntersectionTree
let mutable hit = ObjectRayHit.MaxRange
Expand Down Expand Up @@ -228,7 +230,7 @@ module SurfaceIntersection =
let closestHit =
hitBoxes
|> List.choose(fun key ->
//Log.line "intersection: %s; pr: %f" surf.name surf.priority.value
Log.startTimed "intersection: %s; pr: %f" surf.name surf.priority.value
//let ray = r.Ray.Transformed(surf.preTransform.Backward) |> FastRay3d //combine pre and current transform
let backward =
if surf.transformation.flipZ then
Expand All @@ -241,6 +243,7 @@ module SurfaceIntersection =
let ray = r.Ray.Transformed(backward) |> FastRay3d
let hit, c =
kd |> DebugKdTreesX.intersectKdTrees key surf cache ray
Log.stop()
cache <- c
hit
)
Expand Down
20 changes: 10 additions & 10 deletions src/PRo3D.Core/Surface/Surface.Sg.fs
Original file line number Diff line number Diff line change
Expand Up @@ -171,24 +171,24 @@ module Sg =
[|
for h in patchHierarchies do
if createKdTrees then
yield KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false false DebugKdTreesX.loadTriangles' true
Log.startTimed "[KdTrees] Loading kdtrees: %s" h.opcPaths.Patches_DirAbsPath
let m = Aardvark.VRVis.Opc.KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false true DebugKdTreesX.loadTriangles' true
Log.stop()
if HashMap.isEmpty m then
Log.warn "[KdTrees], KdTree map for %s is empty." h.opcPaths.Patches_DirAbsPath
yield m
else
yield m
else
yield HashMap.empty
|]

let totalKdTrees = kdTreesPerHierarchy.Length
Log.line "creating %d kdTrees" totalKdTrees
Log.line "fusing %d kdTrees" totalKdTrees

let kdTrees =
kdTreesPerHierarchy
|> Array.Parallel.mapi (fun i e ->
Log.start "creating kdtree #%d of %d" i totalKdTrees
let r = e
Log.stop()
r
)
|> Array.fold (fun a b -> HashMap.union a b) HashMap.empty

|> Array.fold HashMap.union HashMap.empty


let createShadowContext (f : Aardvark.GeoSpatial.Opc.PatchLod.PatchNode) (scope : Scope) =
Expand Down
9 changes: 5 additions & 4 deletions src/PRo3D.Core/Surface/SurfaceApp.fs
Original file line number Diff line number Diff line change
Expand Up @@ -879,12 +879,13 @@ module SurfaceApp =
)
Log.stop()
Log.startTimed "[RebuildKdTrees] creating kdtrees"
let kdTrees =
hs |> Array.mapi (fun i h ->
KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ Serialization.binarySerializer true true PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false
let cnt =
hs |> Array.sumBy (fun h ->
let m = KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ Serialization.binarySerializer true true PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false Aardvark.VRVis.Opc.KdTrees.KdTreeParameters.legacyDefault
HashMap.count m
)
Log.stop()
Log.line "[RebuildKdTrees] created/validated KdTrees for %d opcs." kdTrees.Length
Log.line "[RebuildKdTrees] created/validated KdTrees for %d opcs." cnt
model
| None -> model
| _ -> model
Expand Down
2 changes: 1 addition & 1 deletion src/opc-tool/Program.fs
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ let generateKdTrees (degreeOfParallelism : Option<int>) (forceKdTreeRebuild : bo


let kdTrees =
KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ serializer forceKdTreeRebuild ignoreMasterKdTree PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false
KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ serializer forceKdTreeRebuild ignoreMasterKdTree PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false Aardvark.VRVis.Opc.KdTrees.KdTreeParameters.legacyDefault

for (bb,kdTree) in kdTrees do
match kdTree with
Expand Down
2 changes: 1 addition & 1 deletion src/opc-tool/Properties/launchSettings.json
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
"profiles": {
"opc-tool": {
"commandName": "Project",
"commandLineArgs": "--ignoremasterkdtree \"F:\\pro3d\\data\\20200220_DinosaurQuarry2\\Dinosaur_Quarry_2\" --forcekdtreerebuild"
"commandLineArgs": "--ignoremasterkdtree \"I:\\OPC\\GardenCity\\MSL_Mastcam_Sol_926_id_48427\" --forcekdtreerebuild"
}
}
}

0 comments on commit be7608b

Please sign in to comment.