[ANN] GLVisualize

658 views
Skip to first unread message

Simon Danisch

unread,
Feb 26, 2016, 5:11:02 PM2/26/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
Hi

this is the first release of GLVisualize.jl, a 2D/3D visualization library completely written in Julia and OpenGL.

You can find some crude documentation on glvisualize.com.
I hope to improve the examples and the documentation in the coming weeks.
The biggest problem for most people right now will be a slightly flaky camera and missing guides and labels.
This is being worked on! If someone beats me to the guide/axis creation, I'd be very happy. This could be a fun project to get started with GLVisualize.
Please feel free to open any issue concerning missing documentation, discrepancies and bugs!

Relation to GLPlot:
GLPlot is now a thin wrapper for GLVisualize with a focus on plotting. Since I concentrated mostly on finishing GLVisualize, it's a reeally thin wrapper. 
It basically just forwards all calls to GLVisualize, and adds a boundingbox around the objects. 
In the future, it should offer some basic UI, automatic creation of axis/labels, screenshots and an alternative API that is more familiar to people that are coming from other plotting libraries (e.g. functions like surf, contourf, patches).
If anyone has specific plans on how this could look like don't hesitate to open issues and PR's!

Outlook:
I'd like to make GLVisualize more independent of the rendering backend by using some backend agnostic geometry representation.
This will make it easier to integrate backends like FireRender, WebGL, Vulkan (why Vulkan), or some text based backends like PDF/SVG.

Furthermore, I'd like to improve the performance and interaction possibilities.

I have to thank the Julia Group for supporting me :) It's a pleasure to be a part of the Julia community!

I'm looking forward to the great visualizations you'll create!

Best,
Simon Danisch

Tom Breloff

unread,
Feb 26, 2016, 6:34:01 PM2/26/16
to julia-users
How exciting... congrats!  I've been following the progress... I hope I find time to get my hands dirty with it soon.

Jeffrey Sarnoff

unread,
Feb 26, 2016, 11:53:10 PM2/26/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
Last night I was wondering about what software to use to make visualizables; there was nothing for that within Julia then. You must work very fast.  Thank you.

Sisyphuss

unread,
Feb 27, 2016, 5:05:34 AM2/27/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
It's just fantastic! I wonder if it will be the Matplotlib of Julia

Tim Holy

unread,
Feb 27, 2016, 7:00:33 AM2/27/16
to julia...@googlegroups.com
Congrats and thanks, Simon! You've really moved mountains here.

The MIP demo is especially appreciated.

Best,
--Tim

On Friday, February 26, 2016 02:11:02 PM Simon Danisch wrote:
> Hi
>
> this is the first release of GLVisualize.jl
> <https://github.com/JuliaGL/GLVisualize.jl>, a 2D/3D visualization library
> completely written in Julia and OpenGL.
>
> You can find some crude documentation on glvisualize.com
> <http://www.glvisualize.com/>.
> I hope to improve the examples and the documentation in the coming weeks.
> The biggest problem for most people right now will be a slightly flaky
> camera and missing guides and labels.
> This is being worked on! If someone beats me to the guide/axis creation,
> I'd be very happy. This could be a fun project to get started with
> GLVisualize.
> Please feel free to open any issue concerning missing documentation,
> discrepancies <http://www.dict.cc/englisch-deutsch/discrepancies.html> and
> bugs!
>
> Relation to GLPlot <https://github.com/SimonDanisch/GLPlot.jl>:
> GLPlot is now a thin wrapper for GLVisualize with a focus on plotting.
> Since I concentrated mostly on finishing GLVisualize, it's a reeally thin
> wrapper.
> It basically just forwards all calls to GLVisualize, and adds a boundingbox
> around the objects.
> In the future, it should offer some basic UI, automatic creation of
> axis/labels, screenshots and an alternative API that is more familiar to
> people that are coming from other plotting libraries (e.g. functions like
> surf, contourf, patches).
> If anyone has specific plans on how this could look like don't hesitate to
> open issues and PR's!
>
> Outlook:
> I'd like to make GLVisualize more independent of the rendering backend by
> using some backend agnostic geometry
> <https://github.com/JuliaGeometry/GeometryTypes.jl/issues/46>
> representation.
> This will make it easier to integrate backends like FireRender
> <https://github.com/JuliaGraphics/FireRender.jl>, WebGL, Vulkan
> <https://github.com/JuliaGPU/Vulkan.jl/tree/api> (why Vulkan
> <http://randomfantasies.com/2016/02/why-im-betting-on-vulkan-and-julia/>),

Alan Edelman

unread,
Feb 27, 2016, 7:04:47 AM2/27/16
to Sisyphuss, julia-users, Viral Shah, gino....@number26.de, ma...@wire.com, cru...@3c58.net
Haven't looked yet.  Is there an example that works with @manipulate?  

Simon Danisch

unread,
Feb 27, 2016, 8:46:56 AM2/27/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
Thanks :)

>I wonder if it will be the Matplotlib of Julia

While possible, it will need quite a bit of work :) Offering the flexibility and usability of Matplotlib is no easy task! 
Right now the strength rather lies in interactivity and easy means to visualize animated and large data sets.

But there could be shortcuts like implementing a backend for Matplotlib first.

@Alan, I can create one ;)
Also, as you can see in http://www.glvisualize.com/examples/interactive/, something similar to @manipulate can be implemented in GLVisualize.

Valentin Churavy

unread,
Feb 29, 2016, 1:29:48 AM2/29/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
Congratulations Simon :) Now let's get quickly to a Vulkan backend

Job van der Zwan

unread,
Feb 29, 2016, 8:22:34 AM2/29/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
On Saturday, 27 February 2016 14:46:56 UTC+1, Simon Danisch wrote:
Thanks :)

>I wonder if it will be the Matplotlib of Julia

While possible, it will need quite a bit of work :) Offering the flexibility and usability of Matplotlib is no easy task! 
Right now the strength rather lies in interactivity and easy means to visualize animated and large data sets.

But there could be shortcuts like implementing a backend for Matplotlib first.

If not MatplotLib, could this become the Processing (and by extension OpenFrameworks, LibCinder) of Julia?

@Alan, I can create one ;)
Also, as you can see in http://www.glvisualize.com/examples/interactive/, something similar to @manipulate can be implemented in GLVisualize.

Oh, it looks like you partially answered that question already! :P 

Josef Heinen

unread,
Feb 29, 2016, 9:55:28 AM2/29/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
>I wonder if it will be the Matplotlib of Julia
 
While possible, it will need quite a bit of work :) Offering the flexibility and usability of Matplotlib is no easy task! 
Right now the strength rather lies in interactivity and easy means to visualize animated and large data sets.
 
But there could be shortcuts like implementing a backend for Matplotlib first.

@Simon: Matplotlib is probably too slow to produce graphics output for a library like Glvisualize. I had the same idea - after I finished writing a GR backend for MPL, I was really disappointed when I realized, that most of the time  (>95%) was spent in Matplotlib's artist layer.

Your shaders would probably be bored or fall asleep ;-)

Simon Danisch

unread,
Feb 29, 2016, 10:03:10 AM2/29/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
> If not MatplotLib, could this become the Processing (and by extension OpenFrameworks, LibCinder) of Julia?

That's definitely more the direction I'd like to take (although with a very different approach).
I hope that it will enable us to create a nice platform for accelerated data processing in general. With FireRender as a backend it might also appeal to artists more!


@Josef, that's exactly the other concern!
You might have noted that I've written a backend for Gadfly. While Gadfly is not that slow, it's written in a way that it's really hard to apply the optimizations needed to display large data-set and it's even worse for animations.


Am Freitag, 26. Februar 2016 23:11:02 UTC+1 schrieb Simon Danisch:

Job van der Zwan

unread,
Mar 3, 2016, 7:05:44 AM3/3/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
On Monday, 29 February 2016 16:03:10 UTC+1, Simon Danisch wrote:
> If not MatplotLib, could this become the Processing (and by extension OpenFrameworks, LibCinder) of Julia?

That's definitely more the direction I'd like to take (although with a very different approach).
I hope that it will enable us to create a nice platform for accelerated data processing in general. With FireRender as a backend it might also appeal to artists more!

I have to say, after years of Processing API indoctrination (which almost every other CC framework follows), I didn't quite understand how the interactive examples[0] work. It took me a while to realise all the input is handled by the Reactive package (which I wasn't familiar with) - maybe you want to mention that in the documentation somehow?

(offtopic: is there a package for capturing live camera feeds? I'd like to mess around with slitscanning[1][2] as my "Hello World" project for this package; and it looks like working with volumes is relatively easy[3] in Julia)

feza

unread,
Mar 6, 2016, 3:40:31 PM3/6/16
to julia-users, vi...@juliacomputing.com, gino....@number26.de, ede...@math.mit.edu, ma...@wire.com, cru...@3c58.net
Package looks like great. In light of this comment, how's the 2d graphics? Can we expect some processing style API, I would love to help anyway I can.

Also I find some of the examples to be rough (antialiasing issues?)
Thanks.

Simon Danisch

unread,
Mar 6, 2016, 5:02:43 PM3/6/16
to julia-users
@Job van der Zwan 
Thanks, I will include a few more introductions with my next Documentation run!
VideoIO can give you video streams. It's not in the best state whatsoever :(
I had it included into GLVisualize at some point, but removed it because of reoccuring build errors and conflicting dependencies.
Someone, maybe me, should put some work into the package, it'd be worth it!

@feza
I'm not a big fan of the processing API. It seems to be very hard to optimize, so the API already prohibits speed.
But I actually have never looked into it that deeply. If anyone wants, it should be possible to create a processing API layer over GLVisualize.
I'm not sure how it would compare to the GLVisualize + GLAbstraction API ;) I, obviously, would much rather improve the GLVisualize API!

One could also target the representation that I propose here: https://github.com/JuliaGeometry/GeometryTypes.jl/issues/46

The anti aliasing for 3D is indeed problematic right now, for 2D it should be very high quality though!
I have different ideas about how to fix the 3D anti-aliasing, but I need to find the time for it and decide on a strategy!

Am Freitag, 26. Februar 2016 23:11:02 UTC+1 schrieb Simon Danisch:
Reply all
Reply to author
Forward
0 new messages