Outils pour utilisateurs

Outils du site


osc_avec_blender

Ceci est une ancienne révision du document !


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

osc_avec_blender.1611563678.txt.gz · Dernière modification : 2021/01/25 08:34 de serge