Archive:Wiimote dans Blender avec le module python 2.6 de cwiid
De Centre de Ressources Numériques - Labomedia
Révision de 4 décembre 2016 à 18:50 par Serge (discussion | contributions)
Le module python utilisé ici ne fonctionne qu'avec python 2.6 et donc seulement avec Blender 2.49b.
Sommaire
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]