Skip to content

Commit be7608b

Browse files
Merge pull request #387 from pro3d-space/bugs/smallerkdtrees
Bugs/smallerkdtrees
2 parents 922d290 + 5f2cbfc commit be7608b

File tree

8 files changed

+76
-67
lines changed

8 files changed

+76
-67
lines changed

PRODUCT_RELEASE_NOTES.md

+6-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1+
## 4.23.1
2+
- tweaked kdtree split limit epsilon for smaller kdtrees
3+
4+
## 4.23.0
5+
- tweaked kdtree split limit epsilon for smaller kdtrees
6+
17
## 4.22.0
28
- further improved kdtree loading on NTFS/macbook
39

4-
510
## 4.21.0-prerelease3
611
- further improved kdtree loading on NTFS/macbook
712

paket.dependencies

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ nuget Aardvark.GeoSpatial.Opc ~> 5.10.8
5050

5151
nuget Aardium ~> 2.0.10-prerelease0007
5252

53-
nuget OPCViewer.Base ~> 1.5.2
53+
nuget OPCViewer.Base ~> 1.6.1
5454

5555
nuget Uncodium.Eigensystems ~> 1.1.2
5656
nuget Chiron ~> 6.3.1

paket.lock

+48-48
Original file line numberDiff line numberDiff line change
@@ -5,45 +5,45 @@ NUGET
55
Aardium (2.0.10-prerelease0007)
66
FSharp.Core (>= 4.7)
77
FSys (>= 0.0.1 < 0.1)
8-
Aardvark.Application (5.4.8)
8+
Aardvark.Application (5.4.9)
99
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
1010
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
11-
Aardvark.Rendering (5.4.8)
11+
Aardvark.Rendering (5.4.9)
1212
FShade.Core (>= 5.5.3 < 5.6)
1313
FShade.GLSL (>= 5.5.3)
1414
FSharp.Core (>= 5.0.1)
15-
Aardvark.Application.Slim (5.4.8)
16-
Aardvark.Application (5.4.8)
15+
Aardvark.Application.Slim (5.4.9)
16+
Aardvark.Application (5.4.9)
1717
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
1818
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
1919
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
20-
Aardvark.Rendering (5.4.8)
20+
Aardvark.Rendering (5.4.9)
2121
FShade (>= 5.5.3 < 5.6)
2222
FSharp.Core (>= 5.0.1)
2323
Silk.NET.GLFW (2.15)
2424
Unofficial.OpenTK (>= 3.0.21 < 3.1)
25-
Aardvark.Application.Slim.GL (5.4.8)
26-
Aardvark.Application (5.4.8)
27-
Aardvark.Application.Slim (5.4.8)
25+
Aardvark.Application.Slim.GL (5.4.9)
26+
Aardvark.Application (5.4.9)
27+
Aardvark.Application.Slim (5.4.9)
2828
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
2929
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
3030
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
3131
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
32-
Aardvark.Rendering (5.4.8)
33-
Aardvark.Rendering.GL (5.4.8)
32+
Aardvark.Rendering (5.4.9)
33+
Aardvark.Rendering.GL (5.4.9)
3434
FShade (>= 5.5.3 < 5.6)
3535
FSharp.Core (>= 5.0.1)
3636
Silk.NET.Core (2.15)
3737
Silk.NET.GLFW (2.15)
3838
Unofficial.OpenTK (>= 3.0.21 < 3.1)
39-
Aardvark.Application.Slim.Vulkan (5.4.8)
40-
Aardvark.Application (5.4.8)
41-
Aardvark.Application.Slim (5.4.8)
39+
Aardvark.Application.Slim.Vulkan (5.4.9)
40+
Aardvark.Application (5.4.9)
41+
Aardvark.Application.Slim (5.4.9)
4242
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
4343
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
4444
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
45-
Aardvark.Rendering (5.4.8)
46-
Aardvark.Rendering.Vulkan (5.4.8)
45+
Aardvark.Rendering (5.4.9)
46+
Aardvark.Rendering.Vulkan (5.4.9)
4747
FShade (>= 5.5.3 < 5.6)
4848
FSharp.Core (>= 5.0.1)
4949
GLSLangSharp (>= 0.4.14 < 0.5)
@@ -133,9 +133,9 @@ NUGET
133133
Aardvark.SceneGraph.Opc (>= 5.4 < 5.5)
134134
FSharp.Core (>= 5.0)
135135
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
136-
Aardvark.GPGPU (5.4.8)
136+
Aardvark.GPGPU (5.4.9)
137137
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
138-
Aardvark.Rendering (5.4.8)
138+
Aardvark.Rendering (5.4.9)
139139
FShade.Core (>= 5.5.3 < 5.6)
140140
FShade.GLSL (>= 5.5.3)
141141
FSharp.Core (>= 5.0.1)
@@ -147,67 +147,67 @@ NUGET
147147
Aardvark.Base.Tensors (>= 5.2.19 < 5.3)
148148
FSharp.Core (>= 5.0.1)
149149
Pfim (>= 0.11.2 < 0.12)
150-
Aardvark.Rendering (5.4.8)
150+
Aardvark.Rendering (5.4.9)
151151
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
152152
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
153153
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
154154
FShade.Core (>= 5.5.3 < 5.6)
155155
FShade.GLSL (>= 5.5.3)
156156
FSharp.Core (>= 5.0.1)
157157
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
158-
Aardvark.Rendering.GL (5.4.8)
158+
Aardvark.Rendering.GL (5.4.9)
159159
Aardvark.Assembler (>= 0.0.8 < 0.1)
160160
Aardvark.Base.Essentials (>= 5.2.27 < 5.3)
161161
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
162162
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
163163
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
164164
Aardvark.Geometry (>= 5.2.27 < 5.3)
165-
Aardvark.Rendering (5.4.8)
165+
Aardvark.Rendering (5.4.9)
166166
FShade (>= 5.5.3 < 5.6)
167167
FSharp.Core (>= 5.0.1)
168168
Unofficial.OpenTK (>= 3.0.21 < 3.1)
169-
Aardvark.Rendering.Text (5.4.8)
169+
Aardvark.Rendering.Text (5.4.9)
170170
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
171-
Aardvark.Rendering (5.4.8)
172-
Aardvark.SceneGraph (5.4.8)
171+
Aardvark.Rendering (5.4.9)
172+
Aardvark.SceneGraph (5.4.9)
173173
CommonMark.NET (>= 0.15.1 < 0.16)
174174
FShade.Core (>= 5.5.3 < 5.6)
175175
FShade.GLSL (>= 5.5.3)
176176
FSharp.Core (>= 5.0.1)
177177
Unofficial.LibTessDotNet (>= 2.0.2 < 2.1)
178178
Unofficial.Typography (>= 0.1 < 0.2)
179-
Aardvark.Rendering.Vulkan (5.4.8)
179+
Aardvark.Rendering.Vulkan (5.4.9)
180180
Aardvark.Base.FSharp (>= 5.2.27 < 5.3)
181181
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
182182
Aardvark.Base.Runtime (>= 5.2.27 < 5.3)
183183
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
184-
Aardvark.Rendering (5.4.8)
184+
Aardvark.Rendering (5.4.9)
185185
FShade (>= 5.5.3 < 5.6)
186186
FSharp.Core (>= 5.0.1)
187187
GLSLangSharp (>= 0.4.14 < 0.5)
188-
Aardvark.SceneGraph (5.4.8)
188+
Aardvark.SceneGraph (5.4.9)
189189
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
190-
Aardvark.Rendering (5.4.8)
190+
Aardvark.Rendering (5.4.9)
191191
FShade.Core (>= 5.5.3 < 5.6)
192192
FShade.GLSL (>= 5.5.3)
193193
FSharp.Core (>= 5.0.1)
194-
Aardvark.SceneGraph.IO (5.4.8)
194+
Aardvark.SceneGraph.IO (5.4.9)
195195
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
196196
Aardvark.Base.Tensors (>= 5.2.27 < 5.3)
197-
Aardvark.Rendering (5.4.8)
198-
Aardvark.SceneGraph (5.4.8)
197+
Aardvark.Rendering (5.4.9)
198+
Aardvark.SceneGraph (5.4.9)
199199
AssimpNet (>= 5.0.0-beta1 < 5.1.0-beta)
200200
FShade.Core (>= 5.5.3 < 5.6)
201201
FShade.GLSL (>= 5.5.3)
202202
FSharp.Core (>= 5.0.1)
203-
Aardvark.SceneGraph.Opc (5.4.8)
203+
Aardvark.SceneGraph.Opc (5.4.9)
204204
Aardvark.Base.Incremental (>= 5.2.27 < 5.3)
205205
Aardvark.Base.IO (>= 5.2.27 < 5.3)
206-
Aardvark.Rendering (5.4.8)
207-
Aardvark.SceneGraph (5.4.8)
206+
Aardvark.Rendering (5.4.9)
207+
Aardvark.SceneGraph (5.4.9)
208208
FSharp.Core (>= 5.0.1)
209209
SharpZipLib (>= 1.4.1 < 1.5)
210-
Aardvark.Service (5.4.2)
210+
Aardvark.Service (5.4.4)
211211
Aardvark.Application (>= 5.4.1)
212212
Aardvark.Base (>= 5.2.28 < 5.3)
213213
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
@@ -220,54 +220,54 @@ NUGET
220220
FsPickler (>= 5.3.2 < 5.4)
221221
FsPickler.Json (>= 5.3.2 < 5.4)
222222
Suave (>= 2.5.6 < 2.6)
223-
Aardvark.Service.Giraffe (5.4.2)
223+
Aardvark.Service.Giraffe (5.4.4)
224224
Aardvark.Application (>= 5.4.1)
225225
Aardvark.Base (>= 5.2.28 < 5.3)
226226
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
227227
Aardvark.GPGPU (>= 5.4.1 < 5.5)
228228
Aardvark.Rendering (>= 5.4.1 < 5.5)
229229
Aardvark.Rendering.GL (>= 5.4.1)
230230
Aardvark.Rendering.Vulkan (>= 5.4.1 < 5.5)
231-
Aardvark.Service (5.4.2)
232-
Aardvark.UI (5.4.2)
231+
Aardvark.Service (5.4.4)
232+
Aardvark.UI (5.4.4)
233233
FSharp.Core (>= 5.0.1)
234234
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
235235
FsPickler (>= 5.3.2 < 5.4)
236236
FsPickler.Json (>= 5.3.2 < 5.4)
237237
Giraffe (>= 5.0 < 5.1)
238238
Suave (>= 2.5.6 < 2.6)
239-
Aardvark.UI (5.4.2)
239+
Aardvark.UI (5.4.4)
240240
Aardvark.Application (>= 5.4.1)
241241
Aardvark.Base (>= 5.2.28 < 5.3)
242242
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
243243
Aardvark.Base.Incremental (>= 5.2.28 < 5.3)
244244
Aardvark.Rendering (>= 5.4.1 < 5.5)
245245
Aardvark.SceneGraph (>= 5.4.1 < 5.5)
246-
Aardvark.Service (5.4.2)
246+
Aardvark.Service (5.4.4)
247247
FSharp.Core (>= 5.0.1)
248248
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
249249
FsPickler (>= 5.3.2 < 5.4)
250250
FsPickler.Json (>= 5.3.2 < 5.4)
251251
Suave (>= 2.5.6 < 2.6)
252-
Aardvark.UI.Primitives (5.4.2)
252+
Aardvark.UI.Primitives (5.4.4)
253253
Aardvark.Application (>= 5.4.1)
254254
Aardvark.Base (>= 5.2.28 < 5.3)
255255
Aardvark.Base.FSharp (>= 5.2.28 < 5.3)
256256
Aardvark.Base.Incremental (>= 5.2.28 < 5.3)
257257
Aardvark.Rendering (>= 5.4.1 < 5.5)
258258
Aardvark.SceneGraph (>= 5.4.1 < 5.5)
259-
Aardvark.Service (5.4.2)
260-
Aardvark.UI (5.4.2)
261-
Adaptify.Core (>= 1.1.9 < 1.2)
259+
Aardvark.Service (5.4.4)
260+
Aardvark.UI (5.4.4)
261+
Adaptify.Core (>= 1.1.13 < 1.2)
262262
Aether (>= 8.3.1 < 8.4)
263263
FSharp.Core (>= 5.0.1)
264264
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
265265
FsPickler (>= 5.3.2 < 5.4)
266266
FsPickler.Json (>= 5.3.2 < 5.4)
267-
Adaptify.Core (1.1.9)
267+
Adaptify.Core (1.1.13)
268268
FSharp.Data.Adaptive (>= 1.2.13 < 1.3)
269-
Adaptify.MSBuild (1.1.9)
270-
Adaptify.Core (1.1.9)
269+
Adaptify.MSBuild (1.1.13)
270+
Adaptify.Core (1.1.13)
271271
Aether (8.3.1)
272272
FSharp.Core (>= 4.3.4)
273273
AssimpNet (5.0.0-beta1)
@@ -324,7 +324,7 @@ NUGET
324324
FSharp.Core (6.0.2)
325325
FSharp.Data (3.1.1)
326326
FSharp.Core (>= 4.3.4)
327-
FSharp.Data.Adaptive (1.2.14)
327+
FSharp.Data.Adaptive (1.2.15)
328328
FSharp.Core (>= 4.7)
329329
System.Reflection.Emit.Lightweight (>= 4.6)
330330
FsPickler (5.3.2)
@@ -418,7 +418,7 @@ NUGET
418418
NETStandard.Library (2.0.3)
419419
Microsoft.NETCore.Platforms (>= 1.1)
420420
Newtonsoft.Json (13.0.2)
421-
OPCViewer.Base (1.5.2)
421+
OPCViewer.Base (1.6.1)
422422
Aardvark.Base (>= 5.2.14 < 5.3)
423423
Aardvark.Base.FSharp (>= 5.2.14 < 5.3)
424424
Aardvark.Geometry.Intersection (>= 5.2.13 < 5.3)

src/PRo3D.Core/Surface.fs

+4-1
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

+10-10
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

+5-4
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/Program.fs

+1-1
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ let generateKdTrees (degreeOfParallelism : Option<int>) (forceKdTreeRebuild : bo
120120

121121

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

125125
for (bb,kdTree) in kdTrees do
126126
match kdTree with

src/opc-tool/Properties/launchSettings.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"profiles": {
33
"opc-tool": {
44
"commandName": "Project",
5-
"commandLineArgs": "--ignoremasterkdtree \"F:\\pro3d\\data\\20200220_DinosaurQuarry2\\Dinosaur_Quarry_2\" --forcekdtreerebuild"
5+
"commandLineArgs": "--ignoremasterkdtree \"I:\\OPC\\GardenCity\\MSL_Mastcam_Sol_926_id_48427\" --forcekdtreerebuild"
66
}
77
}
88
}

0 commit comments

Comments
 (0)