Wiimote : Script python avec cwiid pour envoyer et recevoir en OSC

Ce wiki a été archivé en 2018.

Le nouveau wiki se trouve à: ressources.labomedia.org

Les fonctionnalités sont désactivées: vous pouvez faire une recherche sur Google site:https://wiki.labomedia.org et découvrir La Labomedia.

De Centre de Ressources Numériques - Labomedia
Aller à : navigation, rechercher

Ressources

Principe

Dans le dossier cwiid2OSC, un script en python2.7 tourne pour se connecter à la wiimote, récupérer les datas et envoyer le tout en OSC. Il reçoit aussi en OSC pour le rumble. Le fichier OSC.py est pour python2.7 !

Dans le dossier blender, Blender reçoit les datas et les exploite. Il utilise le fichier OSC.py pour python 3.2 !

Les avantages du script extérieur sont:

  • Le script tourne dans un processus différent de blender, soit un coeur pour blender et une moitié de cœur pour le script ce qui permet au deux de tourner de façon optimale.
  • Le script tourne vite donc intègre bien la vitesse du gyroscope, néanmoins des dérives se produisent si la wiimote est secouée fortement.

Inconvénients de cwiid:

  • Plus de développement depuis 2 ans.
  • Impossible d'avoir le Motion Plus et le Nunchuk: il faut choisir !

Fichiers

Des fichiers sont dans :

Envoyer en OSC avec OSC.py

La seule doc est dans OSC.py

Exemple

Comment envoyer x égal 823.56 et y égal 21.5

Créer la connexion

# OSC basic client
c = OSC.OSCClient()
c.connect(('127.0.0.1', 9000))

Créer un bundle

osc_bundle = OSC.OSCBundle()

Créer un message

m1 = OSC.OSCMessage('/position/X')

Ajouter une valeur au message

x = 823.56
m1.append(x)

Ajouter le message au bundle

osc_bundle.append(m1)

Créer un autre message

m2 = OSC.OSCMessage('/position/Y')

Ajouter une valeur au message

y = 21.5
m2.append(y)

Ajouter le message au bundle

osc_bundle.append(m2)

Envoyer le message

try:
    # Send Bundle
    c.send(osc_bundle)
except:
    pass
# Reset bundle
osc_bundle.clearData()

Vous recevrez

['#bundle', 0.0, ['/position/X', ',f', 823.56], ['/position/Y', ',f', 21.5]]

0.0 est le temps d'envoi mais n'est pas gérer dans cet exemple.