OF for museum style kiosks


I work for a charity, we produce a large number of interactive software for public spaces, sometimes touch screen based, sometimes interacting with hardware and sensors, sometimes a mixture of all sorts of technologies. We currently are 100% Flash but want to start making the transition away, and I’m looking for ideas and advice on where to go.

HTML5 is the generic answer, but it’s simply not capable enough.

I’ve looked at Cinder, along with C# and WPF. We want and need to be able to access web services, connect to hardware via sockets, and split the front end code up from the logic. We’d like to create a library of skinable GUI components and behaviours for those components.

Any advice or suggestions would be greatly appreciated.


That is all possible in all of the languages that you mention. I (and a lot of other people on this forum) have used OF for Museum installation pieces, it’s very well suited for that. Creating a GUI library is a lot of work, but again, it’s doable, and if you know what you’re going to need, then it’s just a matter of writing up all the GUI logic. That’s the one thing that OF is missing that you might get from something like C#. However, in my opinion, the advantages you get (multiple platforms, easy hardware access, lots of addons for interactive/generative) outweigh that.

1 Like

I know this is a bit of an old thread but a while back I made a simple example of buttons that could be used for kiosk type setups or tablets, since I was using them a lot. Hope it’s helpful to someone out there!

This look simple and neat at the same time :slight_smile:
Is there a reason this wouldn’t work on windows and linux ?
(I see only OSX and IOS examples in your github)

Everything I used is from OF core (no addons / dependencies) and should work cross platform with ease. If you’re using the latest version of OF it might require you to update some of the calls. I will update myself shortly.

If you’re needing to use a lot of…

  • Graphical interfaces
  • Accessing web services
  • Connecting via (web?)sockets
    … then I would actually recommend using web technologies!

I tend to use openFrameworks on certain projects when they absolutely require high-performance graphics (GPU accelerated), computer vision (camera-based tracking), and/or connections directly to sensors or electronics that require fast, realtime communication (e.g. LED matrixes or LIDAR scanners).

Otherwise, I use web technologies (NodeJS on the backend and combinations of React, WebGL/ThreeJS and canvas drawing on the frontend) wherever possible. My motivations for preferring web tech in most cases are the following:

  • GUIs are much much much easier to create and style using the web
  • Javascript (and its associated tooling) is far friendlier for getting things up and running quickly, especially in the prototyping stages
  • Getting data in and out of your applications is much, much simpler because you can easily use HTTP requests, JSON formatted data, websockets, etc. with very little trouble. These things are all “possible” in C++ but extremely tricky to get working.
  • Frameworks, libraries and good developers are much more plentiful in the Javascript/web world than in C++ world

But it all depends on what you need to build. Often a combination of the two works quite well. For example, do GUI stuff using a web browser, and communicate to your high-performance C++ oF application as required, perhaps using a websocket to a NodeJS server which in turn communicates using OSC to the oF application (this is quite a common setup for my work).

Good luck!