Skip to content

Commit 58db4cd

Browse files
better debugging when kdtrees are missing
1 parent 3e7c242 commit 58db4cd

File tree

5 files changed

+21
-16
lines changed

5 files changed

+21
-16
lines changed

src/PRo3D.Base/PRo3D.Base.fsproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
</PropertyGroup>
1818
<ItemGroup>
1919
<!-- <Compile Include="InteropHelpers.fs" /> -->
20+
<Compile Include="KdTrees.fs" />
2021
<Compile Include="Multitexturing.fs" />
2122
<Compile Include="ErrorReporting.fs" />
2223
<EmbeddedResource Include="resources\CooTransformationConfig.zip" />

src/PRo3D.Core/Surface.fs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,8 @@ module DebugKdTreesX =
149149
let intersectKdTrees bb (hitObject : Surface) (cache : HashMap<string, ConcreteKdIntersectionTree>) (ray : FastRay3d) (kdTreeMap: HashMap<Box3d, KdTrees.Level0KdTree>) =
150150

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

153155
let kdi = kdtree.KdIntersectionTree
154156
let mutable hit = ObjectRayHit.MaxRange
@@ -228,7 +230,7 @@ module SurfaceIntersection =
228230
let closestHit =
229231
hitBoxes
230232
|> List.choose(fun key ->
231-
//Log.line "intersection: %s; pr: %f" surf.name surf.priority.value
233+
Log.startTimed "intersection: %s; pr: %f" surf.name surf.priority.value
232234
//let ray = r.Ray.Transformed(surf.preTransform.Backward) |> FastRay3d //combine pre and current transform
233235
let backward =
234236
if surf.transformation.flipZ then
@@ -241,6 +243,7 @@ module SurfaceIntersection =
241243
let ray = r.Ray.Transformed(backward) |> FastRay3d
242244
let hit, c =
243245
kd |> DebugKdTreesX.intersectKdTrees key surf cache ray
246+
Log.stop()
244247
cache <- c
245248
hit
246249
)

src/PRo3D.Core/Surface/Surface.Sg.fs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -171,24 +171,24 @@ module Sg =
171171
[|
172172
for h in patchHierarchies do
173173
if createKdTrees then
174-
yield KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false false DebugKdTreesX.loadTriangles' true
174+
Log.startTimed "[KdTrees] Loading kdtrees: %s" h.opcPaths.Patches_DirAbsPath
175+
let m = Aardvark.VRVis.Opc.KdTrees.loadKdTrees h Trafo3d.Identity ViewerModality.XYZ Serialization.binarySerializer false true DebugKdTreesX.loadTriangles' true
176+
Log.stop()
177+
if HashMap.isEmpty m then
178+
Log.warn "[KdTrees], KdTree map for %s is empty." h.opcPaths.Patches_DirAbsPath
179+
yield m
180+
else
181+
yield m
175182
else
176183
yield HashMap.empty
177184
|]
178185

179186
let totalKdTrees = kdTreesPerHierarchy.Length
180-
Log.line "creating %d kdTrees" totalKdTrees
187+
Log.line "fusing %d kdTrees" totalKdTrees
181188

182189
let kdTrees =
183190
kdTreesPerHierarchy
184-
|> Array.Parallel.mapi (fun i e ->
185-
Log.start "creating kdtree #%d of %d" i totalKdTrees
186-
let r = e
187-
Log.stop()
188-
r
189-
)
190-
|> Array.fold (fun a b -> HashMap.union a b) HashMap.empty
191-
191+
|> Array.fold HashMap.union HashMap.empty
192192

193193

194194
let createShadowContext (f : Aardvark.GeoSpatial.Opc.PatchLod.PatchNode) (scope : Scope) =

src/PRo3D.Core/Surface/SurfaceApp.fs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -879,12 +879,13 @@ module SurfaceApp =
879879
)
880880
Log.stop()
881881
Log.startTimed "[RebuildKdTrees] creating kdtrees"
882-
let kdTrees =
883-
hs |> Array.mapi (fun i h ->
884-
KdTrees.loadKdTrees' h Trafo3d.Identity true ViewerModality.XYZ Serialization.binarySerializer true true PRo3D.Core.Surface.DebugKdTreesX.loadTriangles' false
882+
let cnt =
883+
hs |> Array.sumBy (fun h ->
884+
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
885+
HashMap.count m
885886
)
886887
Log.stop()
887-
Log.line "[RebuildKdTrees] created/validated KdTrees for %d opcs." kdTrees.Length
888+
Log.line "[RebuildKdTrees] created/validated KdTrees for %d opcs." cnt
888889
model
889890
| None -> model
890891
| _ -> model

src/opc-tool/Properties/launchSettings.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"opc-tool": {
44
"commandName": "Project",
5-
"commandLineArgs": "--ignoremasterkdtree \"I:\\OPC\\GardenCity\\MSL_Mastcam_Sol_925_id_48420\" --forcekdtreerebuild"
5+
"commandLineArgs": "--ignoremasterkdtree \"I:\\OPC\\GardenCity\\MSL_Mastcam_Sol_926_id_48427\" --forcekdtreerebuild"
66
}
77
}
88
}

0 commit comments

Comments
 (0)