This is a read-only mirror of pymolwiki.org
RUCAP UM-5
Revision as of 20:47, 10 May 2013 by Ignat99 (talk | contribs) (→Getting UM-5 Data into your Script)
RUCAP UM-5 tracker
RUCAP UM-5 tracker is a wireless joystick for view control in PyMol.
The code based on project ImmersiveViz.
Our system contains a head tracking thread which communicates the users position to a PyMol script via a socket. The PyMol script unpacks the message and updates the world respectively. All rotation is done around the virtual origin in PyMol and zoom is also considered.
Getting UM-5 data of the users position into socket by your script rucap.py
# -*- coding: cp1251
# Take data from UM-5 and put to the socket on port 4440.
#----- The server used to listen for head tracking
# self.server = Server(self, 4440)
#----- The server used to listen for the GUI to update the values / display info
# self.gui = Server(self, 4441)
from ctypes import *
RUCAP_VERSION = 3
RUCAP_RESULT_OK = 0;
RUCAP_RESULT_FAIL = 1;
RUCAP_RESULT_TRACKERAPP_OFF = 2;
RUCAP_RESULT_UNPLUGGED = 3;
RUCAP_RESULT_DEVICE_NOT_CREATED = 4;
RUCAP_RESULT_BAD_VERSION = 5;
# load dll
a = CDLL("rucap.dll")
# call function, that returned int
a.RucapCreateDevice.restype = c_int
print "RucapCreateDevice:"
print a.RucapCreateDevice(c_int(RUCAP_VERSION))
# initialisation of device
if (a.RucapCreateDevice(c_int(RUCAP_VERSION)) == RUCAP_RESULT_OK): print "Can`t create ruCap device\n"
a.RucapGetHeadPos.restype = c_int
x = c_float(0.0)
y = c_float(0.0)
z = c_float(0.0)
# main loop
while (1) :
if a.RucapGetHeadPos(byref(x),byref(y),byref(z)):
print "No Position!"
else :
#print '%f %f %f\n' % ( x.value, y.value, z.value)
print x.value, y.value, z.value
Availability
Additional Information
- RUCAP UM-5 tracker: http://rucap.ru/en/um5/about
PyMol Script of ImmersiveViz
- Project Page: http://code.google.com/p/immersive-viz/
- Source: here and here
- Instructions: here and here