diff --git a/Project.toml b/Project.toml index 12e2307b..63eb1ec8 100644 --- a/Project.toml +++ b/Project.toml @@ -51,7 +51,7 @@ LinearAlgebra = "1" Makie = "0.24" MapTiles = "1" OrderedCollections = "1" -PointClouds = "0.3" +PointClouds = "1" Proj = "1" Scratch = "1" Statistics = "1" diff --git a/docs/Project.toml b/docs/Project.toml index c80b3198..678457f6 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -20,9 +20,8 @@ OSMMakie = "76b6901f-8821-46bb-9129-841bc9cfe677" TileProviders = "263fe934-28e1-4ae9-998a-c2629c5fede6" Tyler = "e170d443-b9d6-418a-9ee8-061e966341ef" -[compat] -DocumenterVitepress = ">=0.2" - [sources] Tyler = {path = ".."} -OSMMakie = {url = "https://github.com/MakieOrg/OSMMakie.jl", rev = "sd/makie-v0.24"} + +[compat] +DocumenterVitepress = ">=0.2" diff --git a/src/provider/pointclouds/geotiles-pointcloud-provider.jl b/src/provider/pointclouds/geotiles-pointcloud-provider.jl index b46911e9..e39a2de6 100644 --- a/src/provider/pointclouds/geotiles-pointcloud-provider.jl +++ b/src/provider/pointclouds/geotiles-pointcloud-provider.jl @@ -44,10 +44,11 @@ function load_tile_data(provider::GeoTilePointCloudProvider, path::String) proj = provider.projs[Threads.threadid()] points = get_points(pc, Point3f(pc.coord_offset), Point3f(pc.coord_scale), proj) extrema = Point3f.(proj.(Point3f[pc.coord_min, pc.coord_max])) - if hasproperty(pc.points[1], :color_channels) + if !ismissing(PointClouds.IO.color_channels(pc.points[1])) color = map(pc.points) do p - c = map(x -> N0f8(x / 255), p.color_channels) - return RGB(c[1], c[2], c[3]) + c = PointClouds.IO.color_channels(p) + # TODO, PointClouds says values should be in 0-1 range, but they seem to require *255 to be in 0-1 range. + return RGB(c[1] * 255, c[2] * 255, c[3] * 255) end else color = last.(points) # z as fallback @@ -90,7 +91,7 @@ end function get_points(las, offset, scale, proj) return map(las.points) do p - point = Point3f(offset .+ Point3f(p.coords) .* scale) + point = Point3f(offset .+ Point3f(PointClouds.IO.coordinates(Integer, p)) .* scale) Point3f(proj(point.data)) end -end \ No newline at end of file +end diff --git a/src/tile-plotting.jl b/src/tile-plotting.jl index b81d2747..bab80872 100644 --- a/src/tile-plotting.jl +++ b/src/tile-plotting.jl @@ -300,6 +300,7 @@ function create_tileplot!( markerspace=:data, fxaa=false, inspectable=false, + transparency=true, config.attributes... ) return p diff --git a/test/test-providers.jl b/test/test-providers.jl index 631ed6c7..3b540c1a 100644 --- a/test/test-providers.jl +++ b/test/test-providers.jl @@ -47,7 +47,7 @@ begin lat, lon = (47.087441, 13.377214) delta = 0.3 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta) - cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=FastShading, material=mat, colormap=:alpine) + cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=true, material=mat, colormap=:alpine) m = Tyler.Map3D(ext; provider=ElevationProvider(nothing), plot_config=cfg) end @@ -66,7 +66,7 @@ begin image = ElevationProvider(nothing) cfg = Tyler.MeshScatterPlotconfig(markersize=5, marker=Rect3f(Vec3f(0), Vec3f(1))) m1 = Tyler.Map3D(ext; provider=provider, plot_config=cfg, max_parallel_downloads=1) - cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=FastShading, colormap=:alpine, postprocess=(p-> translate!(p, 0, 0, -1f0))) + cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=true, colormap=:alpine, postprocess=(p-> translate!(p, 0, 0, -1f0))) m2 = Tyler.Map3D(m1; provider=image, plot_config=cfg, max_parallel_downloads=1) m1 end @@ -83,7 +83,7 @@ begin # subset = "AHN4_T" # Takes _really_ long to load, even from disk (~300mb compressed points per tile) provider = GeoTilePointCloudProvider(subset=subset) m1 = Tyler.Map3D(ext; provider=provider, max_parallel_downloads=1) - cfg = Tyler.PlotConfig(shading=FastShading, colormap=:alpine, postprocess=(p -> translate!(p, 0, 0, -100.0f0))) + cfg = Tyler.PlotConfig(shading=true, colormap=:alpine, postprocess=(p -> translate!(p, 0, 0, -100.0f0))) m2 = Tyler.Map3D(ext; provider=ElevationProvider(), figure=m1.figure, axis=m1.axis, max_parallel_downloads=1, plot_config=cfg) m1 end @@ -170,7 +170,7 @@ begin delta = 0.5 ext = Rect2f(lon - delta / 2, lat - delta / 2, delta, delta) mat = (type=:Uber, roughness=0.2, ior=1.390) - cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=FastShading, material=plastic, colormap=:alpine) + cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=true, material=plastic, colormap=:alpine) m = Tyler.Map3D(ext; provider=ElevationProvider(nothing), plot_config=cfg, max_plots=5) render_rpr(m, "alpine", 10000000) end @@ -185,7 +185,7 @@ begin mat = plastic_material() cfg = Tyler.MeshScatterPlotconfig(markersize=5, material=mat) m = Tyler.Map3D(ext; provider=provider, plot_config=cfg, max_plots=3, size=(2000, 2000)) - cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=FastShading, material=mat, colormap=:Blues) + cfg = Tyler.PlotConfig(preprocess=pc -> map(p -> p .* 2, pc), shading=true, material=mat, colormap=:Blues) m2 = Tyler.Map3D(m; provider=ElevationProvider(nothing), plot_config=cfg, max_plots=5) wait(m) render_rpr(m, "pointclouds")