Some updates in the world of pymt. txprog, sharath and myself have been working on pymt. We’ll “release” a beta when we are done with a few more features and get some more documentation written up. Here is a quick peek at a menu and window manager that can load pymt apps. Other new features include built in touch simulator for debugging, video widget, animation support, a bunch of different widgets, 3D support, and all th python goodness you want
If you can’t wait, you are of course welcome to check out the current svn release or help us work out the kimks and introduce new features. We are talking about pymt development on #pymt on freenode. The svn and project page are here: http://pymt.googlecode.com
We’d also love to get some help with other things than programming, like gui design and skinning if anyone wants to help out!
Mhh, it should work with TUIO. Maybe there is a bug somewhere. Which port are you using to send you TUIO over OSC? it tries to hook up to port 3333 on 127.0.0.1 (localhost), maybe you are using a different port or a seperate machine?. It works here with my touchlib osc on linux and QMTSim TUIO on xp simulator running on the same machine.
Really nice work thomas, it’s always good to see that there are other good python projects.
Python deserves more attention from multitouch community, hopely with more apps we can make it more popular.
nice work there! Since i am a complete Python dummy (only have some little experience with NodeBox): what exactly do i have to do to run your examples on OSX 1.5? I was trying to rund some of the examples (sse the screenshot) but i am doing probably something terribly wrong ))
The root folder of has a file called setup.py. you can instal pymt by running ‘sudo python setup.py install’ (or just python setup.py install on windows). that will install pymt to your system, which should make all the example apps runs no matter where you run them from. alternatly you can copy the pymt folder (also in the root directory) into the directory you are running the python program from (i.e. copy it into one of the example apps folder). python searches the default instalation path and the current directory for modules. hopes this helps!
well - thank YOU for sharing it! I have not done yet the right way, but pasted a few minutes after my first post the pyglet and pymt directories in the NodeBox folder in the Application Support folder where all the NodeBox libraries are… Now i am able to run and edit your examples in NodeBox - and that is fine for an ignorant like me )
The apps are really cool! They perform very smooth and well even on that little MacMini we have bulit in inside our MT-Table. Unfortunately i don’t really have the spare time to play around (i wish i had that!) with them - would be a mazing to see if i could use some NodeBox features (like coreimage, colors etc.) with your library…
It currently only supports /tuio/2Dcur. I have only been working on touch interfaces.
I would like if pymt supported 2Dobj and more input types(multiple mice kind of works on windows), but i have to finish some other things i’m working on for the moment. If you have time or want to look at it yourself, all the parsing of TUIO messages and window event handlers are in the file pymt/mtpyglet.py. I think it could be done by extending the TUIOGetter class to handle 2Dobj messages.
Is the data of 2Dobj simillar to that of 2Dcur? The way e.g. the mouse support works is that mouse events just get made into touch events. The touchID would is “mouse0”. If doing something simmilar with 2Dobj is possible, it wouldn’t be that much work.
It currently only supports /tuio/2Dcur. I have only been working on touch interfaces.
I would like if pymt supported 2Dobj and more input types(multiple mice kind of works on windows), but i have to finish some other things i’m working on for the moment. If you have time or want to look at it yourself, all the parsing of TUIO messages and window event handlers are in the file pymt/mtpyglet.py. I think it could be done by extending the TUIOGetter class to handle 2Dobj messages.
Is the data of 2Dobj simillar to that of 2Dcur? The way e.g. the mouse support works is that mouse events just get made into touch events. The touchID would is “mouse0”. If doing something simmilar with 2Dobj is possible, it wouldn’t be that much work.
hi Thomas,
First , I did the 2Dobj extension ... if you want , I may make available for you , but I must document it !
I have some problems with pymt and the reacTVision simulator and a real MT Table with reacTVison software. When I run app first and then the simulator or when I stop using the simulator during a little time (such as 3-5 seconds) , the app doesn’t work (it doesn’t receive messages anymore).
I can add you to the google code project / give you write access to the svn repo if you want (let me know your google id) or i can add the code if you send me a patch. As for documentation, I have started writing down a little bit (still very unfinished) in a temporary wiki I have set up here : http://tehansen.de/cgi-bin/moin.cgi, feel free to add anything about code or questions (its world editable right now, ill leave it that way until it starts getting spammed).
As for the bug you are describing. Are you running on windows? I have had simmilar issues with touchlib on windows, tbeta works great on linux for me. I think I also had that problem with qtsim on windows. I’m not sure exactly what the bug is, but i think the simulator/touchlib on windows dont send any TUIO messages when there are no touches. maybe python osc closes the OSC connection when there is no incoming messages for a certain time? I’ll try to check out the details later, it might be an easy fix of just forcing the socket to stay open somehow or re-estabishing it once its down.
Ok, If you add me in the project will be better , because I have some ideias to improve pymt ... ,such as , you use a disk as an area of selection for ZoomAbleObjects, but an OBB(oriented bounding box) or an ellipse fits better this regions, because we may use objects that have another shapes and the region will be limited to the center of the object ( think in a long rectangle). The events should pass a list of parameters not only the x,y positions ...
So , we can talk about these things.
My gmail is ... but I the extension is not robust ... then I’ll not upload it yet!
yeah..the disk never got changed because i was too lazy… no transformations to keep track of with disks
i added you to the project. we can chat some other time, i added you to my gtalk buddy list as well. I’m a little busy the rest of this week, but hopefully next week i can get some coding done. need to do some cleaning up with the code as well.
you can actually access the other parameters by using the touchID to index the touches dictionary that is also passed, i just figured passing x and y was some nice sugar so you didnt have to write touches[touchID].x everytime you wanted to access just x or y coordinate.
thanks so much for helping out with this!, python is awesome and with openGL underneath I think there is potential to do really some fancy graphics as well (im working on shader support for widgets).
I’m new here and I want first thanks you thomas for your really good work.
After i have tried to work with flash (very slow, and not stable for me), i have tried your PyMT toolkit,
and now i will not use other language.
Python is exactly what i looked for.It’ easy to learn, stable and fast when using OpenGL.
Here a video with some existing applications and some applications i have coded with your PyMT toolkit (it’s my first shoot).