in the last year I have worked quite intensively with three.js and openFrameworks. I know that they have a totally different purpose in mind, and that three.js is specifically for 3D, while openFrameworks it isn’t.
But still, after working with 3D in three.js, having to create a 3D scene with some functionalities in OF is a kind of pain, because there are many things that are not implemented. Or it forces you to rely heavily on addons that sometimes are not maintained or that they require some fix before to get them working (usually to update them from ofVec3 to glm::vec3). I do believe that to have some improvements in the core of OF would make things easier for most of us using 3D with openFrameworks. I make a short list of what I think it would be nice to have:
These things should be quite easy to add:
- Adding a method to recalculate the normals in an ofMesh. People are keeping writing a method that just does this https://www.iquilezles.org/www/articles/normals/normals.htm, people are keeping wrtiting addons that do just this.
- Adding a BoundingBox to the ofPrimitive class.
- Adding a Ray and a Plane class. These 2 things are quite fundamentals.
- A Mesh for the the ofPolyline class, something like https://github.com/spite/THREE.MeshLine
Things that are more difficult to add, but they would be a nice to have.
- A GLTF importer (although we do not have a scene in OF, we could create a hierarchy of ofNode)
- A PBR material. Almost all 3D engines today have something like this. In one OF meetup in Berlin @arturo suggested to create an addon based on Google Filament and I do think it is a nice idea, but the problem is, would that addon be part of the core, or would it be another addon that brakes with a new release?
I am aware to the fact the OF it is used mostly for computer vision projects, but what I have always liked mostly in OF is the general oriented direction, the possibility to mix fields, like generative design and computer vision, arduino and 2D drawing, sound and sensors, etc… Having a more complete 3D toolset would be just a possibility more.