On-the-fly visualization of generated 3d points - where to start?
JOGL and the tools using it look great, but like an universe - I am looking for hints where to start for my challenge I have to solve:
In a research project I have to visualize 3D position data from several sensors that move around. The sensors move on
the surface of a non-geometric body and deliver their data at a rate of about 5-20 Hz (each sensor delivers separate
data; we could make the rate lower, but will probably need at least 5 Hz for good accuracy). Visualization must be
on-the-fly, it could be a point cloud or a mesh that is continually extended with the new points.
A GUI must display the surface acquired so far. It will be possible to stop the data flow coming in, during that time
the GUI should allow to rotate the surface in space to see how it looks like from various angles, to see where data is
missing. Then the data flow could be started again to acquire more data for the "missing pieces".
As an additional challenge, the scanned body can also move in space. Therefore, the surface has reference sensors fixed
to it, and the position data of the moving sensors must be converted from the coordinate frame given by these reference
sensors to the "world" coordinate frame.
Again in short what I need:
- on-the-fly handling of large amounts of 3D-points, translating them from a local to a global coordinate frame
- on-the-fly visualization of the translated 3D points (or the mesh they define)
- a GUI allowing to rotate the visualization (during that time we can assure that no new points are coming in)
- the whole thing should be developed in Kotlin or Java
I studied the websites of various tools listed on https://jogamp.org/jogl/www/, ruled out the outdated ones and those
that do apparently something different from what I need. Still there remain several candidates for tools / libraries
that might help me with my challenge:
- Scilab (not sure if it can handle point-clouds and on-the-fly generated data)
- Gephi (same)
- Jzy3d (seems to be able to handle "scatters", but not sure of on-the-fly generated data and of programming of the GUI)
- (Jzy3d has an API, could also be in this category)
- libGDX: seems to be very powerful, but maybe overly complicated?
- Java3D: not sure if it is capable enough
- KOOL: (this is not based on JOGL, but seems also a valuable possibility)
So my question:
Do you have any hints or recommendations about which tool/library I should look into first? Or a hint why some tool or
library cannot fulfill my requirements (e.g. because it can only handle "files" and not "on-the-fly-generated data")?
Other useful information? Or even an example that does something similar than I want to achieve? Remember that I am
looking for something in Kotlin or Java.
Of course, I can try all the above libraries, but profiting from the considerable amount of knowledge out there in the
community and knowing where to start and where not to look could save me lots of time. Thus, my question for useful
hints, and many thanks in advance!
Re: On-the-fly visualization of generated 3d points - where to start?
Martin may confirm, Jzy3d is the right tool to do what you want to achieve.
This forum is about JogAmp, you will probably get no help here about Kotlin. I assume that you have no bad intention but please refrain yourself from mentioning APIs based on JOGL competitors, it's not the right place to do that, you don't urinate in the same place you pee, do you?
Jzy3D uses JOGL. JOGL is a binding to the OpenGL library. Jzy3D is a charting library, helping to think at your geometry and application level, whereas JOGL help you think at your GPU level. You probably want Jzy3D.
Gephi is both an application and library but intended for graph drawing, so not what you are looking for (Gephi also uses JOGL).
Our main competitor started a FUD campaign against JOGL in 2008 as far as I remember, some of its users impersonated me on an IRC channel, it's a long story. I had to encourage many developers to come here to ask JOGL specific questions because the situation was difficult to manage on websites (including some forums, StackOverflow, etc) where people could talk about our main competitor and JOGL. Actually, it's still occasionally a source of troubles on StackOverflow, some supporters of our main competitor reply to JOGL specific questions with examples not based on JOGL even when the original poster explicitly states that a reply based on JOGL is expected. I'm a bit harsh but this forum is a peaceful place to talk about JogAmp APIs. By the way, if you're really interested in next generation APIs like Vulkan and WebGPU, let us know.