Outils pour utilisateurs

Outils du site


latence_de_l_osc_dans_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
Dernière révisionLes deux révisions suivantes
latence_de_l_osc_dans_blender [2018/07/22 13:02] sergelatence_de_l_osc_dans_blender [2020/12/01 17:40] – ↷ Liens modifiés en raison d'un déplacement. serge
Ligne 3: Ligne 3:
 ===== Définition: Wikipedia EN ===== ===== Définition: Wikipedia EN =====
  
-Le [[http://en.wikipedia.org/wiki/User_Datagram_Protocol#Packet_structure|buffer UDP]] est adressé en 16 bits. 2 puissance 16 = 65536 bits soit 8192 octets. Quelques octets sont occupés par des datas d'identification. Par exemple, une image 80 x 80 pixels avec un entier court entre 0 et 99 comme variable occupe 80 x 80 x 2 x 4 bits = 51200 bits. Le maxi serait 65000 / 2 x 4 = 8125 pixels soit 90 x 90 = 8100 pixels ! Avec 2 entiers courts possible sur chaque pixel ( ce n'est pas une image en couleurs ).+Le [[http://en.wikipedia.org/wiki/User_Datagram_Protocol#Packet_structure|buffer UDP sur en.wikipedia]] est adressé en 16 bits. 2 puissance 16 = 65536 bits soit 8192 octets. Quelques octets sont occupés par des datas d'identification. Par exemple, une image 80 x 80 pixels avec un entier court entre 0 et 99 comme variable occupe 80 x 80 x 2 x 4 bits = 51200 bits. Le maxi serait 65000 / 2 x 4 = 8125 pixels soit 90 x 90 = 8100 pixels ! Avec 2 entiers courts possible sur chaque pixel ( ce n'est pas une image en couleurs ).
  
 ===== Description du symptôme ===== ===== Description du symptôme =====
Ligne 15: Ligne 15:
 Si l'envoi de data se fait à une fréquence supérieure à la lecture, le Buffer se remplit et les datas qui sont lues dans ce buffer ne sont pas les dernières envoyées. Si l'envoi de data se fait à une fréquence supérieure à la lecture, le Buffer se remplit et les datas qui sont lues dans ce buffer ne sont pas les dernières envoyées.
  
-C'est un problème de **baignoire, de robinet et d'écoulement**: {{:Osc 05.jpg?300|fig:Osc 05.jpg}} Si le débit de sortie est plus faible que le débit d'entrèe, le niveau monte.+C'est un problème de **baignoire, de robinet et d'écoulement**: {{media_10:osc_05.jpg?300|fig:Osc 05.jpg}} Si le débit de sortie est plus faible que le débit d'entrèe, le niveau monte.
  
-En anglais, c'est une Queue LIFO : Last In First Out {{:Lifo queue.png?300|fig:Lifo queue.png}}+En anglais, c'est une Queue LIFO : Last In First Out {{media_08:lifo_queue.png?300|fig:Lifo queue.png}}
  
  
Ligne 26: Ligne 26:
 Le test ci-dessous montre des compteurs avec des valeurs de pulse de 0, 1 et 2. Le test ci-dessous montre des compteurs avec des valeurs de pulse de 0, 1 et 2.
  
-Blender tourne au maximum à 60 fps: {{:Pulse 1.png?300|fig:Pulse 1.png}}+Blender tourne au maximum à 60 fps: {{media_12:pulse_1.png?300|fig:Pulse 1.png}}
  
  
Ligne 39: Ligne 39:
 Le tableau ci-dessous donne les fréquences et périodes dans Blender et Pure Data. Le tableau ci-dessous donne les fréquences et périodes dans Blender et Pure Data.
  
-{{:Pulse 3.png|Pulse 3.png Pulse 3.png}}+{{media_12:pulse_3.png|Pulse 3.png}}
  
 La solution la plus rationnelle est de régler la fréquence d' envoi plus basse que la fréquence de réception dans Blender, idem est régler le "timer" dans pure data à une valeur supérieure à la période dans Blender. Le tableau ci-dessus donne la période en fonction du "Pulse Mode" si Blender est à 60 "fps"! Bourrer Blender ne le fera pas aller plus vite ! La solution la plus rationnelle est de régler la fréquence d' envoi plus basse que la fréquence de réception dans Blender, idem est régler le "timer" dans pure data à une valeur supérieure à la période dans Blender. Le tableau ci-dessus donne la période en fonction du "Pulse Mode" si Blender est à 60 "fps"! Bourrer Blender ne le fera pas aller plus vite !
Ligne 49: Ligne 49:
   GameLogic.socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)   GameLogic.socket.setsockopt(socket.SOL_SOCKET, socket.SO_RCVBUF, 1024)
  
-Ce {{:OSC buffer mini 2.49.zip|fig:OSC buffer mini 2.49.zip}} utilise cette option, si elle est commentée le cube est en retard.+Ce {{media_10:osc_buffer_mini_2.49.zip| OSC buffer mini 2.49.zip}} utilise cette option, si elle est commentée le cube est en retard.
  
 === 4 - Vider le buffer si il contient plus de 1 valeur === === 4 - Vider le buffer si il contient plus de 1 valeur ===
Ligne 109: Ligne 109:
         GameLogic.handWii = OSC.decodeOSC(data)         GameLogic.handWii = OSC.decodeOSC(data)
 </code> </code>
 +
 === 5 - Définir la taille du Buffer UDP avec Pure Data === === 5 - Définir la taille du Buffer UDP avec Pure Data ===
  
-{{:Osc 08.png|Osc 08.png Osc 08.png}}+{{media_10:osc_08.png|Osc 08.png}}
  
 bufsize 1024 sur packOSC définit la taille du buffer. bufsize 1024 sur packOSC définit la taille du buffer.
Ligne 121: Ligne 122:
 ===== Ressources ===== ===== Ressources =====
  
-  * http://blenderartists.org/forum/showthread.php?152785-BGE-Python-OSC-Performance-issues +  * [[http://blenderartists.org/forum/showthread.php?152785-BGE-Python-OSC-Performance-issues|OSC-Performance sur blenderartists]] 
-  * http://ubuntuforums.org/showthread.php?t=1757909+  * [[http://ubuntuforums.org/showthread.php?t=1757909|ubuntuforums.org]]
  
-{{tag>logiciels_de_communication sb}}+{{tag>logiciels_de_communication sb blender}}
latence_de_l_osc_dans_blender.txt · Dernière modification : 2021/04/08 06:01 de serge