I finally fixed many problems, optimised the scripts so no more crash on all my systems now
I fixed and understand also the world coordinate system in Openframeworks and how to make it like in classic openGL.
I added all primitives, and many methods for all the 3d and 2d shape to be able to do transformation localy.
Also added a screen grabber.
The there are so many things to explore, this library is endless...
I tried to create a global camera for every rendering, but it doesn't work yet. (if somebody know why?)
Thanks for checking @Jona. I will try on my other OSX system, but I am sure I did something wrong in my windows creation or in primitive instantiation...
about [ofSetColor] and other "simple" abstractions, that's part of my project: to allow a set of object for workshop, and avoid problems I experienced in the past;
- User friendly: The user need to fill the exact number of arguments with classic Ofelia objects, otherwise the object "couldn't create". Students might get quickly frustrated if an object "couldn't create" for the 5th times... in [gl.color] and all [gl.abstraction] if user fill 1, 2, 3 or 4 arguments the object is created and fill empty arguments with default white color.
- Consistency with Gem and OpenGl: Some [gl.abstraction] like [gl.draw] put the coordinate system 0,0,0 at center and activate the depthTest by default, Openframeworks has the coordinate, 0,0,0 top left which I find less intuitive (would be nice to switch between the 2 coordinate systems later). in Ofelia, [ofSetColor] is black by default, so [gl.color], is white by default, like Gem (white on black default logic).
- Convenience: Users can also set a list of all arguments at once with all [gl.abstraction]. So in [gl.color] user can change all channel in one single message, where Gem had 2 objects for that and many weird behaviors).
Here is a new package with some -help files to understand
use the [ofelia] object to import external Lua scripts instead of hard coding the script in each Pd abstraction.
Yes, definitely, it's more convenient to use sublime editor when I am doing complete stuffs sometimes... But on a pedagogical purpose, I like the idea to check and modify the code one click away from abstraction.
Thanks @Jona, I checked your patches before, and the glsl one is pretty nice thanks. The problem I have is only 3 or 4 of them works in my system (GL_FRAGMENT_SHADER shader failed to compile pb), maybe it's because another OpenGl version should be setuped inside ofelia?
Going back to my problems with my abstractions instantiation, it's more sensitive on OSX systems and perfectly stable in Windows. With simple 3d geo like [ofDrawBox], no problem at all. But as soon as I use [ofBoxPrimitive] in my lua scripts, I get crash sometimes at windows creation in OSX...
I prefer to use of3dPrimitive functions because It offers more rendering options. Maybe there is a better way to write the lua scripts? It opens a lots of questions regarding pd objects and lua, because there are many ways to do...
No worry @Jona, there was some ambiguity in my first post since I am asking for hints and presenting a "project" at the same time
As I said it's still experimental but it is working well on my OSX and Windows10 systems.
There's still a lot of work to do, and many opened questions with lua and good practice. The first one being the way I am instanciating box / plane etc 3d primitives in lua and pd.
Thanks for your reply @Jona
It looks like I am a little bit further than what you thought
I can display almost any (basic) things I want with ofelia, the problem is making abstraction and modularize the logic of Openframeworks/lua/ofelia in puredata.
Sorry for the name clash with Gem, I fixed it and proposed [gl.name] objects now (The same name convention used in pd-ceammc, which is the perfect tool for workshop with students).
I've done a video player, video cam input etc... the files are updated in the main post.
I have also found a fix for the basic prim object and windows (re)creation crash. I guess the problem is primitive class instantiation that should be at setup time and not object creation time... but I am not sure.
It works for me this way but still thinking...
The tricky part of this project is that I want to have completely modularize objects + arguments + real time variable etc etc...
Thanks, I have updated the files with a simple imager reader object, so we could see the benefit of such a project.
But since there is many 3d primitives abstractions to create, I prefer to wait a bit untill I found a fix and a better lua code paradigm for the abstractions...
Lua / Openframeworks coders hints are very welcome
Gem was a perfect tool for small workshops: easy to understand for a beginner and fun.
It's now very outdated and have many consistencies problems on various plateforms (fullscreen, key codes pb, camera, media etc...).
So I need a good visual tool for my next pd workshop and Ofelia is the perfect library... but it's also a bit difficult for beginners / fast prototyping because :
- Too many objects for fast prototyping
- Sometimes long object names with uppercases etc
- help files lead to OpenFrameworks documentation
So I made a few abstractions in order to think of a kind of "Gem" replacement.
Main ideas are:
- Modular single blocs primitives like Gem, with many methods and arguments + their help file.
- Allows to draw and see something on screen even with unfilled arguments (and expandable default arguments)
- Remove all dependencies but Ofelia (no need for more dependencies with this lib)
Here is a first test... I am learning Lua at the same time so it's a bit experimental.
Somebody have good hints to share? Best lua / Openframeworks practise?
(of course the only lib needed is Ofelia)