osc_avec_blender
Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
osc_avec_blender [2021/01/25 07:46] – serge | osc_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:// | + | **[[http:// |
</ | </ | ||
+ | |||
+ | 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' | ||
+ | |||
+ | ====Un exemple==== | ||
+ | |||
+ | * **[[https:// | ||
+ | ===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=== | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | {{ : | ||
+ | =====Initialisation dans Blender===== | ||
+ | * [[https:// | ||
+ | <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(' | ||
+ | # Les callbacks du serveur | ||
+ | gl.server.bind(b'/ | ||
+ | gl.server.bind(b'/ | ||
+ | |||
+ | def main(): | ||
+ | print(" | ||
+ | |||
+ | 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' | ||
+ | |||
+ | main() | ||
+ | </ | ||
+ | |||
+ | =====Le script en cours dans Blender===== | ||
+ | * [[https:// | ||
+ | <code python> | ||
+ | def main(): | ||
+ | |||
+ | print(" | ||
+ | print(" | ||
+ | |||
+ | gl.client.send_message(b'/ | ||
+ | |||
+ | main() | ||
+ | </ | ||
+ | |||
+ | =====Un script externe pour communiquer avec le BGE===== | ||
+ | |||
+ | * [[https:// | ||
+ | |||
+ | <code python> | ||
+ | from oscpy.client import OSCClient | ||
+ | from oscpy.server import OSCThreadServer | ||
+ | |||
+ | |||
+ | def on_result(arg): | ||
+ | print(" | ||
+ | |||
+ | server = OSCThreadServer() | ||
+ | server.listen(' | ||
+ | server.bind(b'/ | ||
+ | |||
+ | client = OSCClient(b' | ||
+ | |||
+ | toto = 0 | ||
+ | while 1: | ||
+ | if toto % 2 == 0: | ||
+ | client.send_message(b'/ | ||
+ | else: | ||
+ | client.send_message(b'/ | ||
+ | toto += 1 | ||
+ | </ | ||
- | {{tag> | + | {{tag> blender |
osc_avec_blender.1611560783.txt.gz · Dernière modification : 2021/01/25 07:46 de serge