Glvisualize suffering from bit rot, alternates?

I need something that will display “voxelized” graphics for some finite-difference code, i.e. I want to display the problem space in as the discrete blocks that make up the geometry.

I thought GLvisualize would be perfect for this but it’s definitely busted on 0.7, and when I look at github, a lot of the code hasn’t been touched in quite a while.

Does anyone know the plans for GLVisualize ?

Could someone suggest some packages that might be useful for what I am trying to do ?

Thank you !

1 Like

The successor to GLVisualize is

2 Likes

i hope I can make that work for the problem space visualization. I know that I can break openscad without too much trouble just by drawing enough cubes.

meanwhile, I’ll definitely try that out for the 3-d plots that i need to make.

thanks !

oh darn.
is there updated installation instructions ?
i’m getting a lot of errors.
in fact it seems to still depend on GLVisualize, which seems to mean that it’s going to be broken under 0.7…

There’s a 0.7 branch which doesn’t seem to depend on GLVisualize. Pretty sure it’s not completely ported to Julia 0.7 yet though.

@sdanisch we discussed before how GLVisualize now has a copy inside of Makie: are you planning to keep it a fully functional GUI/visualization engine separately from Makie as well?

1 Like

How come this is the solution? Makie doesn’t compile on 0.7? Has anyone got it working?

This will make Julia run on 0.7:

using Pkg
Pkg.pkg"add Makie#sd/07 AbstractPlotting#sd/07 GeometryTypes#sd/07 ImageMagick#sd/07"

@ChrisRackauckas

a fully functional GUI/visualization engine separately from Makie as well?

Makie is the fully functioning GUI/Visualization engine.

GLVisualize is the current main OpenGL backend and does indeed live in Makie right now to make installation and breaking changes easier!

I will move it out again, when the WebGL backend is finished :wink:

3 Likes

test Makie does not pass. Is that expected?

Let me check! Tests shouldn’t error, but I still haven’t updated the visual comparison, so they don’t really pass!
What’s the error?

[ Info: Downloading https://github.com/SimonDanisch/ReferenceImages/archive/v0.0.5.tar.gz to C:\Users\PetrKrysl\.julia\packages\Makie\V62fl\test\testimages\images.zip...
WARNING: importing deprecated binding Base.CartesianRange into ImageFiltering.
WARNING: Base.CartesianRange is deprecated, use CartesianIndices instead.
  likely near C:\Users\PetrKrysl\.julia\packages\ImageFiltering\cNt7n\src\utils.jl:31
WARNING: Base.CartesianRange is deprecated, use CartesianIndices instead.
  likely near C:\Users\PetrKrysl\.julia\packages\ImageFiltering\cNt7n\src\utils.jl:51
ERROR: LoadError: LoadError: TypeError: in apply_type, in Vararg count, expected Int64, got Type{CartesianIndex{0}}
Stacktrace:
 [1] top-level scope at none:0
 [2] include at .\boot.jl:317 [inlined]
 [3] include_relative(::Module, ::String) at .\loading.jl:1038
 [4] include at .\sysimg.jl:29 [inlined]
 [5] include(::String) at C:\Users\PetrKrysl\.julia\packages\ImageFiltering\cNt7n\src\ImageFiltering.jl:3
 [6] top-level scope at none:0
 [7] include at .\boot.jl:317 [inlined]
 [8] include_relative(::Module, ::String) at .\loading.jl:1038
 [9] include(::Module, ::String) at .\sysimg.jl:29
 [10] top-level scope at none:2
 [11] eval at .\boot.jl:319 [inlined]
 [12] eval(::Expr) at .\client.jl:399
 [13] top-level scope at .\none:3
in expression starting at C:\Users\PetrKrysl\.julia\packages\ImageFiltering\cNt7n\src\utils.jl:51
in expression starting at C:\Users\PetrKrysl\.julia\packages\ImageFiltering\cNt7n\src\ImageFiltering.jl:44
ERROR: LoadError: LoadError: Failed to precompile ImageFiltering [6a3955dd-da59-5b1f-98d4-e7296123deb5] to C:\Users\PetrKrysl\.julia\compiled\v0.7\ImageFiltering\MN5uU.ji.
Stacktrace:
 [1] error(::String) at .\error.jl:33
 [2] macro expansion at .\logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at .\loading.jl:1185
 [4] macro expansion at .\logging.jl:311 [inlined]
 [5] _require(::Base.PkgId) at .\loading.jl:941
 [6] require(::Base.PkgId) at .\loading.jl:852
 [7] macro expansion at .\logging.jl:311 [inlined]
 [8] require(::Module, ::Symbol) at .\loading.jl:834
 [9] include at .\boot.jl:317 [inlined]
 [10] include_relative(::Module, ::String) at .\loading.jl:1038
 [11] include(::Module, ::String) at .\sysimg.jl:29
 [12] include(::String) at .\client.jl:398
 [13] top-level scope at none:0
 [14] include at .\boot.jl:317 [inlined]
 [15] include_relative(::Module, ::String) at .\loading.jl:1038
 [16] include(::Module, ::String) at .\sysimg.jl:29
 [17] include(::String) at .\client.jl:398
 [18] top-level scope at none:0
in expression starting at C:\Users\PetrKrysl\.julia\packages\Makie\V62fl\test\visualregression.jl:4
in expression starting at C:\Users\PetrKrysl\.julia\packages\Makie\V62fl\test\runtests.jl:100
ERROR: Package Makie errored during testing

Guess you need to add :

add ImageFiltering#teh/update0.7
┌ Warning: `Matrix{T}(m::Integer, n::Integer) where T` is deprecated, use `Matrix{T}(undef, m, n)` instead.
│   caller = glyphbitmap(::FreeType.FT_Bitmap) at functions.jl:126
└ @ FreeTypeAbstraction C:\Users\PetrKrysl\.julia\packages\FreeTypeAbstraction\JKR5T\src\functions.jl:126
┌ Warning: `Array{T, 2}(m::Int, n::Int) where T` is deprecated, use `Array{T, 2}(undef, m, n)` instead.
│   caller = downsample(::Array{Float64,2}, ::Int64, ::Int64) at SignedDistanceFields.jl:76
└ @ SignedDistanceFields C:\Users\PetrKrysl\.julia\packages\SignedDistanceFields\p8IsP\src\SignedDistanceFields.jl:76
LoadError: UndefVarError: Serialize not defined
in expression starting at test_heatmap___image_overlap:3
failed to evaluate the example:
```julia
using Makie

     heatmap(rand(32, 32))
     image!(map(x->RGBAf0(x,0.5, 0.5, 0.8), rand(32,32)))

I can reproduce in a fresh environment… Ok let me see, I’m guessing there are more packages I had to check out initially!

I’ve been working a bit on trying to get the GLAbstraction part a bit more general and modular, hopefully to let it be a useful basis package for anyone that wants to do some quick opengl stuff or build a visualization tool themselves. Back on 0.6 it sort of worked but with 0.7 this is probably all broken again. Using that as a base, creating a visualization tool should be relatively simple. At the time I made a very simple tool using this but it was pretty useful nonetheless. So maybe after that’s done getting something like glvisualize back should be possible.

So, a bug sneaked into a code path, that only runs on first install, sorry about that!
I confirmed that this works in a clean environment:

add Makie#sd/07 AbstractPlotting#sd/07 GeometryTypes#sd/07 ImageMagick#sd/07
add ImageFiltering#teh/update0.7
test Makie 

This has one error and an issue with normals of meshes not coming through correctly, which I will look at tomorrow!

You might also want to checkout this branch for less depwarns:


Which must be done with git directly due to it being a fork…

Edit:

Didn’t realize I already had a new branch for reactive, which is not a fork:

add Makie#sd/07 AbstractPlotting#sd/07 GeometryTypes#sd/07 ImageMagick#sd/07 Reactive#sd/07
add ImageFiltering#teh/update0.7

What is a ‘clean environment’ ?

I’m still getting errors:

ERROR: LoadError: LoadError: TypeError: in apply_type, in Vararg count, expected Int64, got Type{CartesianIndex{0}}
Stacktrace:
 [1] top-level scope at none:0
 [2] include at ./boot.jl:317 [inlined]
 [3] include_relative(::Module, ::String) at ./loading.jl:1038
 [4] include at ./sysimg.jl:29 [inlined]
 [5] include(::String) at .julia/packages/ImageFiltering/cNt7n/src/ImageFiltering.jl:3
 [6] top-level scope at none:0
 [7] include at ./boot.jl:317 [inlined]
 [8] include_relative(::Module, ::String) at ./loading.jl:1038
 [9] include(::Module, ::String) at ./sysimg.jl:29
 [10] top-level scope at none:2
 [11] eval at ./boot.jl:319 [inlined]
 [12] eval(::Expr) at ./client.jl:399
 [13] top-level scope at ./none:3
in expression starting at .julia/packages/ImageFiltering/cNt7n/src/utils.jl:51
in expression starting at .julia/packages/ImageFiltering/cNt7n/src/ImageFiltering.jl:44
ERROR: LoadError: LoadError: Failed to precompile ImageFiltering [6a3955dd-da59-5b1f-98d4-e7296123deb5] to .julia/compiled/v0.7/ImageFiltering/MN5uU.ji.
Stacktrace:
 [1] error(::String) at ./error.jl:33
 [2] macro expansion at ./logging.jl:313 [inlined]
 [3] compilecache(::Base.PkgId, ::String) at ./loading.jl:1185
 [4] macro expansion at ./logging.jl:311 [inlined]
 [5] _require(::Base.PkgId) at ./loading.jl:941
 [6] require(::Base.PkgId) at ./loading.jl:852
 [7] macro expansion at ./logging.jl:311 [inlined]
 [8] require(::Module, ::Symbol) at ./loading.jl:834
 [9] include at ./boot.jl:317 [inlined]
 [10] include_relative(::Module, ::String) at ./loading.jl:1038
 [11] include(::Module, ::String) at ./sysimg.jl:29
 [12] include(::String) at ./client.jl:398
 [13] top-level scope at none:0
 [14] include at ./boot.jl:317 [inlined]
 [15] include_relative(::Module, ::String) at ./loading.jl:1038
 [16] include(::Module, ::String) at ./sysimg.jl:29
 [17] include(::String) at ./client.jl:398
 [18] top-level scope at none:0
in expression starting at .julia/packages/Makie/V62fl/test/visualregression.jl:4
in expression starting at .julia/packages/Makie/V62fl/test/runtests.jl:100
ERROR: Package Makie errored during testing

I’ve mentioned this a few times (and don’t really have the competence to help writing the shaders and all that’s needed) but I’m super excited about a WebGL backend with Interact integration!

IIRC there was talk of a Cairo backend at some point - did that happen and does it work? Thanks for all your work on this!

You’ll need to add ImageFiltering#teh/update0.7 to the add command!