-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathmain.c
85 lines (69 loc) · 1.48 KB
/
main.c
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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
/*
= FaceCap v1.3.4 - Realtime Face Mocap Server for Maya =
2012 Xantus S.A.
Check README.md for details.
*/
#include <unistd.h>
#include "FC_global.h"
void main(int argc, char **argv) {
int loopHack; // main window update
tryb = FC_INIT;
loopHack=0;
if (argc==3) {
printf("Setting %s x %s \n",argv[1],argv[2]);
maxX=atoi(argv[1]);
maxY=atoi(argv[2]);
}
fc_InitMarkers();
if(fc_InitOpenCV()<0) exit;
fc_InitMayaServer(argv[0]);
//main loop
tryb = FC_PREV;
while(1) {
if(tryb==FC_INIT) {
fc_InitMarkers();
fc_ClearMouse();
if(client_fd>0) {
fc_StopMayaServer();
serverStatus=FCM_STOP;
}
tryb = FC_PREV;
}
fc_GetFrame();
if(tryb > FC_FILTR) {
fc_ClearMarkerStatus();
fc_TrackMarkers();
fc_CalcFixedPos();
}
fc_MakeHUD();
fc_UpdateDisplay();
if(tryb == FC_MOCAP && serverStatus == FCM_INIT) {
if(loopHack > 10) {
fc_StartMayaServer();
loopHack=0;
}else loopHack++;
} else if (serverStatus == FCM_ACTIVE) {
clientStatus = fc_Klient(client_fd);
if(clientStatus < 0) serverStatus=FCM_STOP;
} else if (serverStatus == FCM_STOP && client_fd > 0) {
fc_StopMayaServer();
}
char c = (char)cvWaitKey(2);
switch(c) {
case 'n':
if(tryb < FC_MOCAP)
if (tryb!=FC_TRACK)tryb++;
break;
case 'c':
tryb=FC_INIT;
break;
case 's':
if(serverStatus==FCM_STOP)
serverStatus=FCM_INIT;
else serverStatus=FCM_STOP;
break;
default:
;
}
}
}