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:46] 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===== =====oscpy=====
Ligne 9: Ligne 11:
   * **[[kivy_oscpy|]]**   * **[[kivy_oscpy|]]**
  
 +=====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 osc}}+{{tag> blender logiciels_de_communication osc }}
osc_avec_blender.1611560783.txt.gz · Dernière modification : 2021/01/25 07:46 de serge