osc_avec_blender
Ceci est une ancienne révision du document !
Table des matières
OSC avec Blender
oscpy
Pour l'installation, voir la page
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
Logic Editor in BGE
Initialisation dans Blender
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()
Le script en cours dans Blender
def main(): print("gl.reset =", gl.reset) print("gl.action =", gl.action) gl.client.send_message(b'/result', [1]) main()
Un script externe pour communiquer avec le BGE
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
Les sources d'un exemple
- blender_osc sur github
osc_avec_blender.1611563706.txt.gz · Dernière modification : 2021/01/25 08:35 de serge