Outils pour utilisateurs

Outils du site


osc_avec_blender

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
osc_avec_blender [2021/01/25 07:45] – Tag0 Added: blender,osc sergeosc_avec_blender [2021/03/04 16:19] (Version actuelle) – [Initialisation dans Blender] serge
Ligne 2: Ligne 2:
  
 <WRAP center round box 60% centeralign> <WRAP center round box 60% centeralign>
-**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2F|English Version]]**+**[[http://translate.google.com/translate?hl=&sl=auto&tl=en&u=https%3A%2F%2Fressources.labomedia.org%2Fosc_avec_blender|English Version]]**
 </WRAP> </WRAP>
  
 +Ce tuto a été réalise sur Debian 10, avec Blender 2.79b
  
 +=====oscpy=====
 +Pour l'installation, voir la page
 +  * **[[kivy_oscpy|]]**
  
-{{tag>blender osc}}+=====Envoyer et recevoir sur une même machine===== 
 +Pour envoyer et recevoir sur une même machine, il y aura 2 serveurs, le serveur dans Blender et un serveur dans l'application (ou le script externe). Ces 2 serveurs ne peuvent pas utiliser le même port: il faut un serveur **et** un client pour chaque application. 
 + 
 +====Un exemple==== 
 + 
 +  * **[[https://github.com/sergeLabo/blender_osc|blender_osc]]** 
 +===Lancement du BGE et du script externe=== 
 +Dans le dossier du projet, ouvrir un terminal: 
 +  python3 external_script.py 
 +  
 +Dans un autre terminal: 
 +  blender blender_osc.blend 
 +puis [P]\\ 
 +ou 
 +  blenderplayer blender_osc.blend 
 + 
 +Si un script plante, les threads OSC peuvent continuer à tourner, et vous avez un message qui dit que le port est utilisé! Vous êtes obligés de vous déconnecter et reconnecter. Killer le processus qui continue à tourner oblige à trouver le bon processus et là, ce n'est pas évident. 
 + 
 +===Logic Editor in BGE=== 
 + 
 +{{ :media_14:blender_osc_1.png?800 |}} 
 + 
 +{{ :media_14:blender_osc_2.png?800 |}} 
 +=====Initialisation dans Blender===== 
 +  * [[https://github.com/sergeLabo/blender_osc/blob/main/once.py|once.py]] exécuté une seule fois! 
 +<code python> 
 +from bge import logic as gl 
 + 
 +from oscpy.client import OSCClient 
 +from oscpy.server import OSCThreadServer 
 + 
 +def on_action(action): 
 +    gl.action = 1 if action == 1 else -1 
 +    gl.action_new = 1 
 + 
 +def on_reset(*args): 
 +    gl.reset = args 
 +    gl.num_reset = 0 
 + 
 +def osc_server_init(): 
 +    gl.server = OSCThreadServer() 
 +    gl.server.listen('localhost', port=8001, default=True) 
 +    # Les callbacks du serveur 
 +    gl.server.bind(b'/action', on_action) 
 +    gl.server.bind(b'/reset', on_reset) 
 + 
 +def main(): 
 +    print("Lancement de once.py ..."
 + 
 +    gl.action = 0 
 +    gl.action_new = 0 
 +    gl.reset = 0 
 +    gl.num_reset = 0 
 +    gl.server = None 
 + 
 +    osc_server_init() 
 +    # Un client pour envoyer sur la même machine 
 +    gl.client = OSCClient(b'localhost', 8003) 
 + 
 +main() 
 +</code> 
 + 
 +=====Le script en cours dans Blender===== 
 +  * [[https://github.com/sergeLabo/blender_osc/blob/main/always.py|always.py]] exécuté à chaque frame. 
 +<code python> 
 +def main(): 
 + 
 +    print("gl.reset =", gl.reset) 
 +    print("gl.action =", gl.action) 
 + 
 +    gl.client.send_message(b'/result', [1]) 
 + 
 +main() 
 +</code> 
 + 
 +=====Un script externe pour communiquer avec le BGE===== 
 + 
 +  * [[https://github.com/sergeLabo/blender_osc/blob/main/external_script.py|external_script.py]] 
 + 
 +<code python> 
 +from oscpy.client import OSCClient 
 +from oscpy.server import OSCThreadServer 
 + 
 + 
 +def on_result(arg): 
 +    print("waouh ...", arg) 
 + 
 +server = OSCThreadServer() 
 +server.listen('localhost', port=8003, default=True) 
 +server.bind(b'/result', on_result) 
 + 
 +client = OSCClient(b'localhost', 8001) 
 + 
 +toto = 0 
 +while 1: 
 +    if toto % 2 == 0: 
 +        client.send_message(b'/action', [toto]) 
 +    else: 
 +        client.send_message(b'/reset', [toto]) 
 +    toto += 1 
 +</code> 
 + 
 +{{tag> blender logiciels_de_communication osc }}
osc_avec_blender.1611560719.txt.gz · Dernière modification : 2021/01/25 07:45 de serge