bonjour à tous,
je n'ai pas trouver, ou su trouver de forum blender sur codelab donc je poste ici. cependant mon problème est davantage lié je pense à blender. en fait j'ai testé l'exemple de communication osc entre pure data et blender que l'on peut trouver sur le très utile wiki labomedia :
http://wiki.labomedia.org/index.php/Com … er_en_OSC.
le patch pd et les scripts python font effectivement ce qu'on leur demande. cela marche plutpot bien avec un cube. le problème c'est que blender rame terriblement... le framerate chute drastiquement et ce dès le lancement du jeu. grâce aux informations retournées par blender je constate que le niveau logic est à 60 voire 70%... mon pc n'est certes pas un foudre de guerre mais quand même, c'est une config lambda et récente. j'ai l'habitude d'utiliser l'osc avec processing et pd depuis pas mal de temps et je n'avais jamais remarquée que l'osc pouvait être aussi lourd. bien sûr si je baisse la fréquence du sensor always on retrouve un niveau de sollicitation de la partie logic correct mais on se retrouve évidemment avec une latence en conséquence.
j'en viens à ma question : est ce qu' il existerait une solution pour rendre la communication osc dans blender plus légère ? pourquoi la communication osc dans blender est elle si lourde comparée à pure data ou processing ?
y a t-il d'autres moyens de procéder ?
je précise que j'ai aussi testé le script python (disponible sur le site) qui diminue la latence mais là c'est pire (logic 90%).
merci d'avance !
Dernière modification par bolpka (2013-11-02 22:33:03)
Hors ligne
Salut,
Est-ce un problème de latence ou de frame rate de blender faible ?
L'OSC n'est ni lourd, ni lent. C'est une méthode simple pour sérialiser et désérialiser des datas, ça prend des nano secondes, et c'est supporté par beaucoup de logiciel.
Les datas sont envoyées en UDP ou TCP. Pour que la communication soit rapide, c'est UDP.
Si c'est un problème de latence, les pages du wiki explique tout:
http://wiki.labomedia.org/index.php/Lat … ns_Blender
Pure Data envoie très vite, 100 à 600 Hz, il ne calcule pas d'image contrairement à Blender. Le Blender Game Engine tourne au mieux à 60 Hz, ça ne sert à rien d'aller plus vite pour l'image.
Deux très bonnes solutions pour réduire la latence:
1 - http://wiki.labomedia.org/index.php/Lat … Buffer_UDP
2 - Ralentir les envois de Pure Data en rajoutant un timer d'au moins 17ms
Lenteur de Blender:
Quelle version de Blender utilises-tu?
Entre la 2.62 et la 2.66, un gros changement a été fait: je ne sais pas quoi, je n'ai rien lu la-dessus. Avant le Game Engine tirait toujours 1 proc à fond. Ce n'est plus le cas dans la 2.66, le profil est très différent et c'est Rasterizer la plus grosse consommation.
La 2.66 a eu beaucoup de correction de bug car un développeur Blender (Dalai Felinto) vient d'écrire un bouquin sur le Game Engine et il a corrigé beaucoup de bug.
La lenteur que tu as me fait penser au Time Out qui fait attendre dans le script que les datas arrivent ! Ce time out est de 0.01 à 0.04 s. Mais c'est absurde, l'UDP en local ne sort probablement pas du proc, c'est quasi instantané. Tu peux réduire ce timeout à 0.005, il n'y aura plus de lenteur mais si ça ne reçoit pas, il y a un problème Réseau. IP = 127.0.01 ou 192..... ou 10...... ?
Serge
Hors ligne
avec un cube je n'ai pas latence particulière mais sur des .blend plus lourd le fps général finit par piquer du nez... non mon problème est plutôt au niveau logic. quand je coche l'option Framerate and Profile dans blender (2.68a) :
-je constate une utilisation de la partie logic de 80% quand pure data n'envoie rien.
-logic chute à 40% avec un métro réglé sur une frequence d'envoi de 20ms (~60hz) dans pure data.
citation :
La lenteur que tu as me fait penser au Time Out qui fait attendre dans le script que les datas arrivent ! Ce time out est de 0.01 à 0.04 s. Mais c'est absurde, l'UDP en local ne sort probablement pas du proc, c'est quasi instantané. Tu peux réduire ce timeout à 0.005
j'ai suivi ton conseil et testé .settimeout(0.005), cela fait descendre le niveau logic autour de ~22% et de 18% lorsque pure data envoie des paquets. c'est nettement mieux ! on passe de 80% sans modif du TimeOut à 22% y a pas photo... c'était bien ça !
bon je vais tester tout ça sur mes projets ! mille merci pour tes réponses serge et pour les ressources du wiki !
Dernière modification par bolpka (2013-11-07 12:45:07)
Hors ligne