Graph Type Rendering Updates (Graph UI)

classic Classic list List threaded Threaded
69 messages Options
1234
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
.. another demo or better application would be a font browser
similar (but with far less features) to FontForge.

An initial version could simply show a grid of a range of glyphs.

When selecting, clicking one, we could zoom it out and show the
glyph details, attributes.
Perhaps also showing the actual line and curve segments.

A GraphUI slide-view (scrollview) might come handy here to
scroll through the many glyphs as well.

This little app could also help with debugging remaining issues
with our Graph engine (tessellation).
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Sven Gothel wrote
.. another demo or better application would be a font browser
similar (but with far less features) to FontForge.

An initial version could simply show a grid of a range of glyphs.
...
something like this FontView01, using a Group w/ GlyphShape + Rectangle per glyph
within a Group-GridLayout

Screenshot avail here.

Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
GraphUI – FontView App (Micro FontForge)

https://jausoft.com/blog/2023/04/14/graphui-fontview-app-micro-fontforge/

Refining the UI elements in our Graph Type Rendering and UI saga, pushing demos and apps for use cases. This time its FontView01, which may become a micro FontForge using it as its role model. It also demonstrate that our GraphUI scenegraph allows reusing instances, rendering it effectively a Directed Acyclic Graph (DAG).

Reusing Shape instances is especially useful if maintaining its position and scale, i.e. adding another view of the same thing as shown below by the new FontView01. The glyph `ae` is presented within two Groups, the main-grid on the left and the info-grid on the right....
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Graph + GraphUI: Consolidate Vertex: Drop SVertex and factory, use Vec[234]f instead of float[] and remove unused VectorUtil methods
After Matrix4f consolidation and proving same or better performance on non array types,
this enhances code readability, simplifies API, reduces bugs and may improve performance.
This was AFAIK the last ugly `float[]`math utilization replaced now,
already lead to one follow-up bug-fix :)

Now back to CSS style layout code, at least some proper Grid and Flex mode
to allow hacking a UI quickly together w/o manual creepy layout math in user code :)
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

gouessej
Administrator
I know those two layouts, supporting them in JOGL would be awesome.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
GridLayout so and so working, usable w/ and w/o cell-size,
Gap can be configures and optional Padding is part of Shape including optional Border.

https://jausoft.com/blog/wp-content/uploads/2023/04/UILayoutGrid01-vbaa-cols-s04-fsaa0-snap00-1280x0720-1.png
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

gouessej
Administrator
It rocks, it's typically the kind of thing I'll have to do in ardor3d-web-ui to replace ardor3d-ui. Excellent job. Keep up the good work :) It's very promising for the future of UI in JogAmp with NEWT :)
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
In reply to this post by Sven Gothel
.. and a little over the weekend animation work done

main commit https://jogamp.org/cgit/jogl.git/commit/?id=4448010d8d787c73d48f54b296c3a8c2499aeaa0
GraphUI: Extract generalized AnimGroup functionality from UISceneDemo03*, providing sets of animated Shapes (GlyphShape or any other)
Hardcoding the whole animation process into user code is not feasible to allow a quick add-on.

GraphUI's new AnimGroup is a Group and allows to add multiple AnimGroup.Set of AnimGroup.ShapeData.

+++

AnimGroup.ShapeData holds the actual Shape and its start- and target position
as well as its active animation state and an optional user object attachment.

AnimGroup.Set holds a list of AnimGroup.ShapeData as well as the animation properties
and states like acceleration and velocity for translation and angular operations.
It also contains the AnimGroup.LerpFunc for linear interpolation of the next position
as called via AnimGroup.tick() over all sets.

AnimGroup.LerpFunc is intended to perform the linear interpolation for the next position,
either user provided or one of the provided may be used, i.e. TargetLerp, ScrollLerp and SineLerp.

To setup the start- and target position for each AnimGroup.ShapeData,
a AnimGroup.ShapeSetup is used - user implementated or one of the build-in
of AnimGroup.addGlyphSetHorizScroll01(..), AnimGroup.assGlyphSetRandom01(..).

+++

UISceneDemo03 consolidated UISceneDemo03 + UISceneDemo03b (deleted)
and shows the following AnimGroup capabilities:

- Two repetitive scrolling text lines. One text shorter than the line-width and one longer.

- One line of animated rectangles, rotating around their z-axis

- A text animation assembling one line of text,
  each glyph coming from from a random 3D point moving to its destination all at once including rotation.

- One line of text with sine wave animation
Screenshots .. well, will followup with a video + blog as still images can't tell the story I guess ;-)
- https://jausoft.com/blog/wp-content/uploads/2023/08/UISceneDemo03-vbaa-s04-fsaa0-snap03-1280x0720-1.png
- https://jausoft.com/blog/wp-content/uploads/2023/08/UISceneDemo03-vbaa-s04-fsaa0-snap05-1280x0720-1.png
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
The video https://jausoft.com/Files/media/20230827-UISceneDemo03.mp4

I added sound using our GLMediaPlayer ( FFmpeg + JOAL/OpenAL).

Sound is: Heaven by Zero G, i.e.
- https://archive.org/details/Agree_to_Disagree_an_index_of_possibilities-12891/Zero_V_-_05_-_Heaven.mp3

May write a blog later ..
Cheers, Sven
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
.. and time for a little roundup with pretty pictures ..

https://jausoft.com/blog/2023/09/26/graphui-css-style-layout-fonts-more/

And now .. the painful but required call for related project work, funding or otherwise.

    All big & medium sized firms – as well other hybrid commercial projects,
    are strongly invited to contact me to discuss the next steps forward (if any).
    I would suggest to setup meetings with their stakeholders and discuss a plan forward.

    A one person full time compensation might be enough, two person support would be awesome.
    See How to pay professional maintainers.


    ^^ this is not directed to any hobby or small-biz entity using the project,
    but more so directed at whats left in the ethics department of the bigger corps & orgs :-/
    Interestingly enough, it always were the small biz corps supporting this project the most!
    THANK YOU!
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

gouessej
Administrator
Good job :) I understand your position, there's a lot of unpaid work to drive all this possible.
Julien Gouesse | Personal blog | Website
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
In reply to this post by Sven Gothel
As earlier posted ..
A little GraphUI widget progress ..

Pushed GraphUI's MediaUI01 media widget, screenshot.

This is part of Bug 805
...

Organized the (new) 'Widget' (Bug 805)
commit feb3d34be097bcbef5ebc40342b405a832ac581f

Bug 805: GraphUI: Add Widget 'marker' (a Group), derived by {MediaUI01 -> MediaPlayer} and new RangeSlider

- A widget specifies specific UI semantics including individual controls.
- Being a {@link Group}, implementations provide shape(s) and its instance can be added to the user's scene.
- Due to the specific nature of widgets,
  individual controls/listener may be provided with semantic values.

+++

MediaPlayer exposes a RangeSlider for current position (view and control).
...

Hence GraphUI is ready to implement these so called widgets,
i.e. higher level UI elements based on Group and Shape(s)
and using more convenient CSS like layouting (padding, gap, ..).

See examples
- RangeSlider https://jogamp.org/cgit/jogl.git/tree/src/graphui/classes/com/jogamp/graph/ui/widgets/RangeSlider.java#n46
- MediaPlayer https://jogamp.org/cgit/jogl.git/tree/src/graphui/classes/com/jogamp/graph/ui/widgets/MediaPlayer.java#n71

Edit: Updated MediaPlayer screenshot 
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
So far ..
- Enhanced the RangeSlider
  - With marks for i.e. GLMediaPlayer chapters
- Added Tooltip and initial TooltipText implementation (mouse hover bubble help)
- Added basic AABBox clipping in Graph via its shader (pixel correct)
  - Need to wire it w/ Shape/Group and demo a clipped sliding group
...


Edited: AABBox clipping in Graph via its shader (pixel correct)
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Resolved chunks / Updates:

- Bug 1485 - Graph: Support AABBox Clipping to [GL]Region
  https://jogamp.org/bugzilla//show_bug.cgi?id=1485

- Bug 805 comment 10 - comment 13
  https://jogamp.org/bugzilla//show_bug.cgi?id=805

Notable compounding feature demoed in FontView01
  GraphUI: Added RangedGroup Widget, displaying a clipped content Group
  with optional horizontal and/or vertical RangeSlider;

  FontView01 now uses RangedGroup scrolling GlyphGrid smooth per-pixel

  https://jausoft.com/blog/wp-content/uploads/2024/01/FontView01-vbaa-q1-s03-fsaa0-FreeSerif_Regular_cp21-snap00-1280x0720-1.png

I shall also use the RangedGroup (clipping) for the MediaPlayer grid scrolling
through hundreds of media files w/o a performance bottleneck.
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
GraphUI Clipping + Culling Enhancement,
i.e. now a RangedGroup shall be easy to use for 'scrolling content'
w/o manually added code hacks.

https://jogamp.org/bugzilla//show_bug.cgi?id=805#c14
Reply | Threaded
Open this post in threaded view
|

Re: Graph Type Rendering Updates (Graph UI)

Sven Gothel
Administrator
Bug 1487 - Graph: Use Frustum Clipping instead of AABBox + GraphUI Support
https://jogamp.org/bugzilla//show_bug.cgi?id=1487

.. and then some enhancements to Tooltip* and the Fontview01 demo
https://jogamp.org/bugzilla//show_bug.cgi?id=805#c17

...
1234