J'envoie constamment la matrice de position d'une caméra via UDP depuis Houdini et la positionne dans Cinema4d. Les deux sont des logiciels 3D. Les données sont correctes mais Cinema4d se bloque et est lent lors de la mise à jour de la matrice depuis houdini. Pourquoi cela arrive-t-il?Pourquoi un logiciel ralentit-il lors de la réception de données d'un autre via UDP (python)?
est ici le code python j'envoie de Houdini:
import socket
UDP_IP = '192.168.1.8'
UDP_PORT = 7864
cam = hou.selectedNodes()
camerac4d = hou.node('/obj/obj_andcamera/cam1')
xform = camerac4d.worldTransform() #get the camera matrix
data_string = str(xform)
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # UDP
sock.sendto(data_string, (UDP_IP, UDP_PORT))
récepteur UDP dans le cinéma 4d:
import socket
def main():
operateon = doc.SearchObject('Camera') #get cinema 4d camera
UDP_IP = '192.168.1.8'
UDP_PORT = 7864
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
sock.bind((UDP_IP,UDP_PORT))
data_string,addr = sock.recvfrom(1024)
data_string = ast.literal_eval(data_string) #converts string list
#set houdini matrix to cinema 4d camera
off = v(newlist[3][0],newlist[3][1], -newlist[3][2])
v1 = v(-newlist[0][0],newlist[0][1], newlist[0][2])
v2 = v(-newlist[1][0], -newlist[1][1], -newlist[1][2])
v3 = v(-newlist[2][0], -newlist[2][1], newlist[2][2])
mat = c4d.Matrix(off,v1*-1,v2*-1,v3)
newpos = operateon.SetMg(mat)