Bonjour tout le monde

Je viens vers vous car j'ai un soucis avec une implémentation de vrpn en C++.
J'utilise actuellement le Leap Motion, et j'ai créé un serveur et un client vrpn pour transmettre les positions et orientations des doigts détectés.
Jusqu'ici, tout va bien, cela fonctionne parfaitement.
Le problème survient lorsque je tente de rajouter la vélocité.
Le code client est bon je pense, car les problèmes que je rencontre, je les aient également avec les clients par défaut (en ligne de commande).
Je précise que le serveur est sous Windows 7, si ca peut aider.

Voici le code server :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
void
LeapMotionVrpnTracker::mainloop()
{
    vrpn_gettimeofday(&_timestamp, NULL);
 
    vrpn_Tracker::timestamp = _timestamp;
 
    pos[0] = _finger->position().x;
    pos[1] = _finger->position().y;
    pos[2] = _finger->position().z;
 
    d_quat[0] = _finger->direction().x;
    d_quat[1] = _finger->direction().y;
    d_quat[2] = _finger->direction().z;
    d_quat[3] = 1.0f;
 
    vel[0] = _finger->velocity().x;
    vel[1] = _finger->velocity().y;
    vel[2] = _finger->velocity().z;
 
    vel_quat[0] = 0;
    vel_quat[1] = 0;
    vel_quat[2] = 0;
 
    vel_quat_dt = 0;
 
    d_sensor = _sensor;
 
    char msgbuf[1000];
    int  len = vrpn_Tracker::encode_to(msgbuf);
    if (d_connection->pack_message(len, vrpn_Tracker::timestamp, position_m_id, d_sender_id, msgbuf,
        vrpn_CONNECTION_LOW_LATENCY))
    {
        fprintf(stderr,"can't write message: tossing\n");
    }
 
    len = vrpn_Tracker::encode_to(msgbuf);
 
    if (d_connection->pack_message(len, vrpn_Tracker::timestamp, velocity_m_id, d_sender_id, msgbuf,
        vrpn_CONNECTION_LOW_LATENCY))
    {
        fprintf(stderr,"can't write message: tossing\n");
    }
 
    server_mainloop();
}
Et, voici l'erreur que reçoit les client vrpn me renvoient :

vrpn_Tracker: vel message payload error
(got 64, expected 72d)
vrpn_TypeDispatcher::doCallbacksFor: Nonzero user handler return.
vrpn_Endpoint::mainloop: UDP handling failed, dropping connection
Et si je commente la partie du code suivant, je n'ai plus de soucis.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
    if (d_connection->pack_message(len, vrpn_Tracker::timestamp, velocity_m_id, d_sender_id, msgbuf,
        vrpn_CONNECTION_LOW_LATENCY))
    {
        fprintf(stderr,"can't write message: tossing\n");
    }
Je ne comprend vraiment pas le soucis.
Si quelqu'un a une idée, je l'écoute avec plaisir

Edit :
Je précise que j'ai testé avec les api 7.29 et 7.30, que ce soit pour le client ou le serveur.