JuliaGL / GLVisualize.jl

Visualization library written in Julia and OpenGL
Other
247 stars 34 forks source link

Roadmap #80

Open SimonDanisch opened 8 years ago

SimonDanisch commented 8 years ago

I was wondering what I should concentrate on in the coming month to make GLVisualize a package that is pleasant to use. I currently have this list:

What do you as users of GLVisualize think are the most important work items? Does the API work out for you? Are the examples good to understand?

Best, Simon

CC: @StreetLevel, @timholy, @musmo, @joa-quim, @hustf, @dlfivefifty, @CarloLucibello, @kleinash @dpsanders

musm commented 8 years ago

List looks great. I would add better transparency handling as a priority. It's pretty broken right now.

What's your opinion on the Float32. Is it not cumbersome and ugly to have to ensure all your code is using 32 floats when using gl visualize. Is the performance penalty large enough to warrant the user be explicit regarding using Float32 as opposed to Float64.

SimonDanisch commented 8 years ago

Yeah transparency... That's a little more difficult to do efficiently. I can have a look at it, though! Actually, GLVisualize already handles the conversion automatically, I just don't encourage it ;) Please report if it doesn't work for you. The overhead is only the conversion, which can be troubling for animated data.

joa-quim commented 8 years ago

Hi Simon,

Regarding the sliders/buttons/checkboxes item, a more general question/doubt is how GLVisualize will play with a GUI building tool. Implementing menus and buttons seams an very big task no? But without them how could we use the rendering capabilities in 3rth party GUI toolkit?

Joaquim

SimonDanisch commented 8 years ago

I hope to offer a nice set of GUI elements. But you could still integrate GLVisualize into any GUI framework which offers an OpenGL context (e.g QT and TK), but not all of the integration will work that nicely (best example of why it's practical to make a visualization library good at GUI elements is probably the rotation cube from: http://www.glvisualize.com/examples/camera/#billiard)

2016-03-25 0:28 GMT+01:00 Joaquim notifications@github.com:

Hi Simon,

Regarding the sliders/buttons/checkboxes item, a more general question/doubt is how GLVisualize will play with a GUI building tool. Implementing menus and buttons seams an very big task no? But without them how could we use the rendering capabilities in 3rth party GUI toolkit?

Joaquim

— You are receiving this because you authored the thread. Reply to this email directly or view it on GitHub https://github.com/JuliaGL/GLVisualize.jl/issues/80#issuecomment-201072969

SimonDanisch commented 8 years ago

Also the stuff that plotly does will be very hard to achieve without a great basis for interactive GUI's: https://plot.ly/python/3d-parametric-plots/ I think a plotting library without this kind of interactivity would be pretty lame, so something like QT doesn't really offer a way out ;)

joa-quim commented 8 years ago

Ok, and to be more direct. Don't know how much you experimented with Mirone but do you think I could hope to be able to port it to Julia using only GLVisualize?

SimonDanisch commented 8 years ago

I think so. Most of the things you need are items on my list as well. Can you open a separate issue with detailed information on the functionality you need for a full port? I'm currently brain storming a bit with @shashi to see how we can use ComputeFramework to visualize and process data sets which are to big for GPU memory...

joa-quim commented 8 years ago

Ok, I did that but as stated in the issue it basically consists in listing some of the handle graphics capabilities available in Matlab and common to other GUI building toolkits. Once I start working on it I'm sure that many more details will come up.

hustf commented 8 years ago

Apart from following the issues and skimming through the new documentation, I am not actually updated on the developments, nor did I get the full understanding of how this - used to - work. I look forward to taking some hours to go through the examples in documentation line by line, test the arrows, and also the very interesting work I have seen posted by users with regards to graph layout and meshing.

The below relates very loosely to your first three points - if we can lump them toghether and call them interactivity. Interaction part is what makes 3d useful for other than presentations. The navigation needs to be second nature, or else a good 2d representation and doing the rest of the processing in your own brain works better for many problems. I wish for three navigation modes as part of the packages set, or else I would soon find myself implementing them instead of looking at the problem I wish to solve.

1) Flying, combined with mouse-wheel perspective control. Keyboard / mouse control as in computer games (q,w,e,a,s,d,x for camera movement and roll, mouse for yaw and pitch) can work well.

More effective for, say, inspecting a model is: 2) Static camera / navigation around a focus point. Perspective control is less important, and the mouse wheel can be used for fast moving forwards / backwards. To change the focus point by mouse clicking, we also need some kind of hit point detection with distance.

3) Interaction mode. No navigation is strictly necessary, just the ability to click on objects and inspect or change their properties. It is impossible to foresee all the "users" will want to do in this mode (it could be to change an axis label, move an object, add or remove a connection, stretch or scale an object). So the package system just needs to expose programmatic interfaces. I found the 'symbols' approach quite hard to understand and inspect, by the way.

Is it a bit early to focus on OpenCL kernels for computations?

Can we hope for more lectures, blogs or publications?

SimonDanisch commented 8 years ago

Is it a bit early to focus on OpenCL kernels for computations?

In the simplest form it should be very quick to add a few examples... It's basically already there ;)

Can we hope for more lectures, blogs or publications?

I hope! :)

Camera ...

Yeah, that's very essential. A lot of this should be straight forwad, though :) E.g. http://www.glvisualize.com/examples/camera/#camera already shows off a lot of the functionality you'll need.

ashleylid commented 8 years ago

My 2c:

Improve Camera

I think this is pretty far along. I think it would be nice to have better understand now to use it though, and to see how everything works together (GLFW, GLWindow, GLVisualize, GLAbstraction etc.) So links to GL for the base calls, and the ability to step through what is attaching to what.

Add interactive Labels and Axis

I find I never use interactive stuff, but it really helps when there are simple easy to use ways to annotate your diagram, so that when you re-plot everything looks the way it should for print. Things like drawing arrows, axes, labeling, highlighting, using Latex in labels (though this is probably there already)

remove most daring performance bottlenecks in GLAbstraction.

Yup - Is this in the area of parallelizing code? Or more on how OpenGL is being used? improve ray marcher (intersection with camera plane and remove bugs)

Seamless integration of OpenCL kernels for computations

this this talks to the above no?

add examples that walk you through the basic usage of GLVisualize and also some complex examples

yes please! but simple examples.. start basic, primitive even (mind numbingly basic), then re-write for adding things. Its great having nice colorful graphs and elegant code, but easy ways to manage, save, load data for plots is a real plus for me. I find that examples are normally really large, so its hard to see what each part is doing.

ChrisRackauckas commented 8 years ago

For me, the main thing will be being able to use it through Plots.jl. As a fast backend for Plots.jl I could get a lot of use out of this. That's more on Tom's side though.

I think compatibility with Float16's may be one way to help the GPU memory problem. Recent GPUs can store and compute on Float16s directly. Maybe not necessary, but something to think about.

ultradian commented 8 years ago

I am going through GLVisualize, attempting to learn its components. I have found the examples most helpful, but have a hard time finding out information through the API. I believe the functions in the edit and visualize folders look quite good, but I'm still figuring out how to use them (particularly textedit_signals). Perhaps I need a lower level tutorial (or could eventually create one!).

SimonDanisch commented 8 years ago

@ChrisRackauckas the Plots backend is almost finished :) The work final work just got hold up by my vacation and rebasing some branches of mine. I think GLVisualize should support Float16 fully. If not, please open an issue!

@ultradian sorry for the mess. This is a work which is only slowly progressing! I think I will refactor the edit and visualize folders soon and will take the chance to add a few comments! Have you checked out http://www.glvisualize.com/ ?

ultradian commented 8 years ago

@SimonDanisch No need to apologize. This is a large work. I find it overwhelming to just think of what GUI elements to add as everything gets so interconnected. I have gone through http://www.glvisualize.com/, but wanted to make an input text box which led me back to the code in the visualize folder. As I said before, I found the examples helpful, although there are use cases that aren't covered which made me want to either check an API or a basic tutorial. I am new to GitHub projects, but if I can help in some way to move this forward, let me know how.

SimonDanisch commented 8 years ago

Oh, text editing is broken right now! :( Bringing it back is my next project after merging the Plots backend ;)

SimonDanisch commented 8 years ago

Update:

SimonDanisch commented 7 years ago

Issues from other packages: GLAbstraction:

Plots: