Archive:Wiimote dans Blender avec le module python 2.6 de cwiid

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

Le module python utilisé ici ne fonctionne qu'avec python 2.6 et donc seulement avec Blender 2.49b.

Ressources

Installation

  • Installer Blender 2.49b, libcwiid1,
  • Activer le Bluetooth: Il suffit de connecter un dongle bluetooth, il est automatiquement reconnu, et l'icône Bluetooth apparait dans la zone de notification !

Un fichier exemple

  • Rappel: La wiimote ne retourne que des accélérations. Les accélération de rotation viennent du MotionPlus: elles sont de bonnes qualité. Les accélérations de position sont médiocre entre autre parce que la valeur moyenne dépend de l'orientation de la wiimote.
  • Fichier:Cwiid-python-blender.tar.gz

Sur l'exemple ci-dessous les accélérations sont utilisées pour la position et l'orientation de l'objet wiimote: cela permet de visualiser les mouvements.

Exemple de scripts python

Se connecter

import cwiid
import time

# Get controller and owner
controller = GameLogic.getCurrentController()
owner = controller.owner

# Conect wii
print 'Press 1+2 be on your Wiimote before Press "P" in Blender' 
wm = cwiid.Wiimote()

time.sleep(1)

# Set status
wm.enable(cwiid.FLAG_MOTIONPLUS)
#wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_MOTIONPLUS | cwiid.RPT_NUNCHUK | cwiid.RPT_BTN

wm.rpt_mode = cwiid.RPT_ACC | cwiid.RPT_MOTIONPLUS | cwiid.RPT_BTN

# Save status in GameLogic
GameLogic.wm = wm

owner['connected'] = True

Récupérer les datas

import GameLogic

wm = GameLogic.wm

#wm.rpt_mode = cwiid.RPT_BTN | cwiid.RPT_ACC | cwiid.RPT_MOTIONPLUS

# print wm.state get a dictionnary
# {'acc': (104, 130, 129), 'led': 0, 'rpt_mode': 150, 'ext_type': 4, 'motionplus': {'angle_rate': (8052, 8314, 8031)}, 'buttons': 0, 'rumble': 0, 'error': 0, 'battery': 83}
# {  0  :     0          ,   1  : 1,       2   :  2 ,     3     : 3,     4       : {    0       0 ( 0  ,    1,    2)},     5    : 5,     6   : 6,     7  : 7,     8    : 8 }

accX = 10.0 * wm.state['acc'][1]
accY = 10.0 * wm.state['acc'][0]
accZ = 10.0 * wm.state['acc'][2]

motionplus = wm.state['motionplus']
# {'angle_rate': (8044, 8359, 8033)}
mpPitch = motionplus['angle_rate'][0]
mpRoll =  motionplus['angle_rate'][1]
mpYaw =   motionplus['angle_rate'][2]