Add options to account for perspective projection.

This allows properly tracking the face in 3d, rather than it
just scaling up and down as its on-screen size changes.
This commit is contained in:
Nathan Vegdahl 2022-06-10 18:14:08 -07:00
parent 159359540c
commit d538041c9d
4 changed files with 586 additions and 490 deletions

Binary file not shown.

View File

@ -1,484 +1,484 @@
# Blender 3.1.0
# www.blender.org
o FaceMesh
v 0.000000 -0.041968 0.026858
v 0.000000 -0.015171 0.050020
v 0.000000 -0.023985 0.028034
v -0.006552 0.014237 0.039959
v 0.000000 -0.006117 0.052954
v 0.000000 0.005987 0.049892
v -0.000000 0.034861 0.029552
v -0.056519 0.035433 -0.002649
v -0.000000 0.055907 0.025395
v -0.000000 0.068134 0.027961
v -0.000000 0.115763 0.021217
v 0.000000 -0.044206 0.025427
v 0.000000 -0.046358 0.022531
v 0.000000 -0.048050 0.018078
v 0.000000 -0.053321 0.018260
v 0.000000 -0.057228 0.018925
v 0.000000 -0.061770 0.020524
v 0.000000 -0.066710 0.019180
v 0.000000 -0.073474 0.010821
v 0.000000 -0.019465 0.045691
v -0.007727 -0.019628 0.034144
v -0.092583 0.070195 -0.039241
v -0.033365 0.029697 0.005504
v -0.041949 0.028460 0.005009
v -0.050026 0.028586 0.002770
v -0.059813 0.032472 -0.004272
v -0.026009 0.032171 0.004602
v -0.047768 0.053147 0.008836
v -0.037692 0.052886 0.008953
v -0.056506 0.050840 0.006026
v -0.061665 0.047135 0.002686
v -0.067153 0.027208 -0.008740
v -0.028692 -0.086954 0.000228
v -0.059283 0.037380 -0.005315
v -0.093329 0.030461 -0.045278
v -0.076747 0.032790 -0.016627
v -0.040481 -0.006775 0.011031
v -0.010038 -0.040066 0.025853
v -0.009347 -0.045538 0.021275
v -0.019373 -0.041914 0.020768
v -0.025912 -0.043911 0.014284
v -0.017092 -0.045551 0.017901
v -0.023150 -0.046305 0.011945
v -0.037296 -0.057468 0.000198
v -0.006375 -0.014908 0.049347
v -0.007345 -0.006125 0.052032
v -0.074654 0.053659 0.001508
v -0.023775 0.015149 0.013316
v -0.025140 -0.011786 0.028842
v -0.025496 -0.006850 0.026319
v -0.064854 -0.005541 0.000608
v -0.006996 0.004926 0.047449
v -0.056159 0.063681 0.016223
v -0.067436 0.060095 0.009788
v -0.084558 0.087086 -0.021994
v -0.018350 0.058071 0.022980
v -0.028730 0.049600 0.006418
v -0.043675 -0.049521 -0.001186
v -0.078384 -0.051267 -0.073625
v -0.019381 -0.017261 0.025577
v -0.013126 -0.019915 0.025946
v -0.035118 -0.047419 -0.000708
v -0.033047 -0.047550 0.001606
v -0.072275 0.065365 0.006218
v -0.025646 -0.015138 0.023971
v -0.040074 0.063723 0.020752
v -0.042117 0.070884 0.022985
v -0.049370 0.110307 0.010550
v -0.077501 0.077595 -0.005850
v -0.043648 0.091615 0.017568
v -0.079628 0.057332 -0.005227
v -0.086018 0.064229 -0.020935
v -0.009835 -0.043064 0.024476
v -0.018261 -0.043855 0.019604
v -0.024608 -0.045069 0.013721
v -0.017666 -0.018760 0.023786
v -0.034051 -0.047481 0.000539
v -0.030102 -0.050361 0.005395
v -0.031984 -0.047727 0.001917
v -0.015177 -0.014594 0.037485
v -0.021913 -0.047266 0.010171
v -0.015951 -0.047021 0.014006
v -0.008705 -0.047315 0.017073
v -0.011183 -0.073018 0.010414
v -0.011539 -0.065504 0.018601
v -0.010876 -0.060591 0.019719
v -0.009970 -0.056044 0.017959
v -0.008987 -0.052477 0.017235
v -0.022060 -0.050052 0.010080
v -0.023723 -0.051417 0.010856
v -0.025668 -0.053470 0.011730
v -0.027256 -0.056131 0.010184
v -0.034527 -0.036552 0.012058
v -0.090510 -0.010153 -0.082701
v 0.000000 -0.022110 0.034384
v -0.026437 -0.049165 0.005337
v -0.028247 -0.049600 0.005670
v -0.010552 -0.023226 0.025722
v -0.023042 -0.020302 0.017434
v -0.011758 -0.021578 0.026169
v -0.032311 0.010175 0.010099
v -0.045862 0.004365 0.007566
v -0.027012 -0.010555 0.021397
v -0.070741 0.100925 -0.004523
v -0.063951 0.087158 0.006513
v -0.059505 0.070513 0.015336
v -0.030353 -0.063606 0.004280
v -0.021831 0.069566 0.026869
v -0.023099 0.092814 0.023770
v -0.026541 0.114894 0.019144
v -0.056345 0.029713 -0.000853
v -0.075999 0.021152 -0.013657
v -0.021246 0.034384 0.003644
v -0.069444 0.043182 -0.004160
v -0.018108 0.020736 0.016539
v -0.020069 -0.008943 0.037251
v -0.084885 0.014908 -0.023427
v -0.070689 0.015316 -0.006619
v -0.060352 0.012612 0.000796
v -0.044397 0.014300 0.004501
v -0.032547 0.018250 0.006392
v -0.023877 0.022663 0.008898
v -0.007637 0.032489 0.026358
v -0.082497 -0.003141 -0.022230
v -0.076336 0.044317 -0.007684
v -0.003881 -0.019205 0.045217
v -0.023041 0.006367 0.016293
v -0.096435 0.030178 -0.073121
v -0.017470 0.027286 0.010560
v -0.027773 -0.011261 0.012846
v -0.063269 0.037112 -0.007025
v -0.020282 -0.002933 0.034168
v -0.085449 -0.030799 -0.080371
v -0.021081 0.037278 0.002018
v -0.013790 0.001956 0.042380
v -0.060950 -0.068424 -0.030229
v -0.059200 -0.078307 -0.045890
v -0.089225 -0.007189 -0.052189
v -0.071053 -0.057756 -0.040060
v -0.090270 0.048535 -0.035330
v -0.029450 -0.095291 -0.005342
v -0.003263 -0.021780 0.033816
v -0.030460 0.000172 0.012861
v -0.083282 0.031235 -0.024950
v -0.049037 0.033118 0.002306
v -0.042035 0.032907 0.004337
v -0.031726 -0.051476 0.003902
v -0.079982 -0.020733 -0.026168
v -0.015341 -0.106374 -0.007728
v -0.037438 -0.096061 -0.023787
v -0.047236 -0.088790 -0.033392
v -0.000000 0.092680 0.025511
v 0.000000 -0.107565 -0.005550
v -0.034794 0.034014 0.004680
v -0.027808 0.035753 0.003547
v -0.023269 0.036544 0.002077
v -0.081975 0.045938 -0.015937
v -0.029171 0.043362 0.005133
v -0.036992 0.045179 0.006646
v -0.044494 0.044850 0.006322
v -0.051406 0.042923 0.004227
v -0.055393 0.040672 0.001409
v -0.096204 0.052003 -0.057931
v -0.053525 0.034151 -0.000346
v 0.000000 -0.030411 0.025676
v -0.026211 -0.032277 0.017044
v -0.019238 -0.015933 0.029078
v -0.011427 -0.030431 0.024872
v -0.000000 0.045688 0.024301
v -0.050173 -0.079142 -0.022662
v -0.039947 -0.087265 -0.014640
v -0.016232 -0.100613 0.002496
v -0.069219 -0.066890 -0.060608
v -0.023636 0.039899 0.003373
v -0.012660 0.018211 0.027995
v 0.000000 -0.101793 0.004254
v -0.027231 -0.102238 -0.013965
v -0.084918 -0.025988 -0.052274
v -0.016115 -0.051261 0.014086
v -0.017730 -0.053846 0.014984
v -0.019275 -0.057306 0.016171
v -0.020457 -0.061686 0.014962
v -0.021818 -0.069013 0.008447
v -0.028251 -0.047035 0.006599
v -0.029752 -0.046377 0.006644
v -0.030998 -0.045676 0.006850
v -0.040907 -0.042353 0.005804
v -0.070283 -0.024449 -0.009304
v -0.012719 0.027108 0.020855
v -0.016354 0.044105 0.007986
v -0.020793 0.043008 0.004947
v -0.026734 -0.047770 0.005509
v -0.069683 -0.045259 -0.023267
v -0.010317 0.045206 0.018557
v -0.025497 -0.077877 0.003818
v 0.000000 0.015740 0.042726
v -0.007150 0.022986 0.034190
v 0.000000 0.024901 0.036041
v -0.018096 0.004460 0.027243
v 0.000000 -0.093530 0.009533
v 0.000000 -0.083089 0.010058
v -0.013380 -0.082513 0.008472
v -0.043618 -0.062071 -0.004540
v -0.034691 -0.018011 0.010562
v -0.035113 -0.071088 -0.000837
v -0.053669 -0.016812 0.007175
v -0.042620 -0.026475 0.008404
v -0.060150 -0.030489 -0.000305
v -0.015670 -0.092637 0.007516
v -0.022874 -0.000250 0.020879
v -0.049083 -0.069375 -0.012657
v -0.038670 -0.078692 -0.007582
v -0.050627 -0.051599 -0.004722
v -0.076987 -0.035353 -0.030096
v -0.059539 -0.053605 -0.012789
v -0.079629 -0.042947 -0.050147
v -0.049187 -0.036676 0.003864
v -0.017671 0.012337 0.021652
v -0.017630 -0.012932 0.039237
v -0.022722 -0.014888 0.029724
v -0.014099 -0.007282 0.045074
v -0.023703 0.051626 0.010931
v -0.038549 0.056449 0.012564
v -0.051176 0.056720 0.011857
v -0.061051 0.054237 0.008265
v -0.067196 0.049872 0.003077
v -0.069207 0.035218 -0.010440
v -0.092425 0.011630 -0.049223
v -0.062638 0.023696 -0.004696
v -0.054551 0.021692 0.000242
v -0.043373 0.022043 0.003503
v -0.032681 0.024480 0.004982
v -0.024389 0.027673 0.005546
v -0.018799 0.030530 0.006190
v -0.093935 0.009918 -0.080625
v -0.022721 -0.016911 0.025496
v -0.012642 0.010097 0.033998
v -0.012010 -0.013642 0.045521
v -0.008054 -0.017791 0.041864
v -0.012081 -0.015049 0.041467
v -0.020674 -0.019342 0.022415
v -0.006438 -0.018621 0.044032
v -0.005841 -0.021046 0.034005
v -0.018392 0.037014 0.003094
v -0.014686 0.035356 0.007793
v -0.012858 0.034181 0.013323
v -0.057585 0.038981 -0.001519
v -0.064457 0.042855 -0.002126
v 0.006552 0.014237 0.039959
v 0.056519 0.035433 -0.002649
v 0.007727 -0.019628 0.034144
v 0.092583 0.070195 -0.039241
v 0.033365 0.029697 0.005504
v 0.041949 0.028460 0.005009
v 0.050026 0.028586 0.002770
v 0.059813 0.032472 -0.004272
v 0.026009 0.032171 0.004602
v 0.047768 0.053147 0.008836
v 0.037692 0.052886 0.008953
v 0.056506 0.050840 0.006026
v 0.061665 0.047135 0.002686
v 0.067153 0.027208 -0.008740
v 0.028692 -0.086954 0.000228
v 0.059283 0.037380 -0.005315
v 0.093329 0.030461 -0.045278
v 0.076747 0.032790 -0.016627
v 0.040481 -0.006775 0.011031
v 0.010038 -0.040066 0.025853
v 0.009347 -0.045538 0.021275
v 0.019373 -0.041914 0.020768
v 0.025912 -0.043911 0.014284
v 0.017092 -0.045551 0.017901
v 0.023150 -0.046305 0.011945
v 0.037296 -0.057468 0.000198
v 0.006375 -0.014908 0.049347
v 0.007345 -0.006125 0.052032
v 0.074654 0.053659 0.001508
v 0.023775 0.015149 0.013316
v 0.025140 -0.011786 0.028842
v 0.025496 -0.006850 0.026319
v 0.064854 -0.005541 0.000608
v 0.006996 0.004926 0.047449
v 0.056159 0.063681 0.016223
v 0.067436 0.060095 0.009788
v 0.084558 0.087086 -0.021994
v 0.018350 0.058071 0.022980
v 0.028730 0.049600 0.006418
v 0.043675 -0.049521 -0.001186
v 0.078384 -0.051267 -0.073625
v 0.019381 -0.017261 0.025577
v 0.013126 -0.019915 0.025946
v 0.035118 -0.047419 -0.000708
v 0.033047 -0.047550 0.001606
v 0.072275 0.065365 0.006218
v 0.025646 -0.015138 0.023971
v 0.040074 0.063723 0.020752
v 0.042117 0.070884 0.022985
v 0.049370 0.110307 0.010550
v 0.077501 0.077595 -0.005850
v 0.043648 0.091615 0.017568
v 0.079628 0.057332 -0.005227
v 0.086018 0.064229 -0.020935
v 0.009835 -0.043064 0.024476
v 0.018261 -0.043855 0.019604
v 0.024608 -0.045069 0.013721
v 0.017666 -0.018760 0.023786
v 0.034051 -0.047481 0.000539
v 0.030102 -0.050361 0.005395
v 0.031984 -0.047727 0.001917
v 0.015177 -0.014594 0.037485
v 0.021913 -0.047266 0.010171
v 0.015951 -0.047021 0.014006
v 0.008705 -0.047315 0.017073
v 0.011183 -0.073018 0.010414
v 0.009687 -0.065583 0.018382
v 0.010876 -0.060591 0.019719
v 0.009970 -0.056044 0.017959
v 0.008987 -0.052477 0.017235
v 0.022060 -0.050052 0.010080
v 0.023723 -0.051417 0.010856
v 0.025668 -0.053470 0.011730
v 0.027256 -0.056131 0.010184
v 0.034527 -0.036552 0.012058
v 0.090510 -0.010153 -0.082701
v 0.026437 -0.049165 0.005337
v 0.028247 -0.049600 0.005670
v 0.010552 -0.023226 0.025722
v 0.023042 -0.020302 0.017434
v 0.011758 -0.021578 0.026169
v 0.032311 0.010175 0.010099
v 0.045862 0.004365 0.007566
v 0.027012 -0.010555 0.021397
v 0.070741 0.100925 -0.004523
v 0.063951 0.087158 0.006513
v 0.059505 0.070513 0.015336
v 0.030353 -0.063606 0.004280
v 0.021831 0.069566 0.026869
v 0.023099 0.092814 0.023770
v 0.026541 0.114894 0.019144
v 0.056345 0.029713 -0.000853
v 0.075999 0.021152 -0.013657
v 0.021246 0.034384 0.003644
v 0.069444 0.043182 -0.004160
v 0.018108 0.020736 0.016539
v 0.020069 -0.008943 0.037251
v 0.084885 0.014908 -0.023427
v 0.070689 0.015316 -0.006619
v 0.060352 0.012612 0.000796
v 0.044397 0.014300 0.004501
v 0.032547 0.018250 0.006392
v 0.023877 0.022663 0.008898
v 0.007637 0.032489 0.026358
v 0.082497 -0.003141 -0.022230
v 0.076336 0.044317 -0.007684
v 0.003881 -0.019205 0.045217
v 0.023041 0.006367 0.016293
v 0.096435 0.030178 -0.073121
v 0.017470 0.027286 0.010560
v 0.027773 -0.011261 0.012846
v 0.063269 0.037112 -0.007025
v 0.020282 -0.002933 0.034168
v 0.085449 -0.030799 -0.080371
v 0.021081 0.037278 0.002018
v 0.013790 0.001956 0.042380
v 0.060950 -0.068424 -0.030229
v 0.059200 -0.078307 -0.045890
v 0.089225 -0.007189 -0.052189
v 0.071053 -0.057756 -0.040060
v 0.090270 0.048535 -0.035330
v 0.029450 -0.095291 -0.005342
v 0.003263 -0.021780 0.033816
v 0.030460 0.000172 0.012861
v 0.083282 0.031235 -0.024950
v 0.049037 0.033118 0.002306
v 0.042035 0.032907 0.004337
v 0.031726 -0.051476 0.003902
v 0.079982 -0.020733 -0.026168
v 0.015341 -0.106374 -0.007728
v 0.037438 -0.096061 -0.023787
v 0.047236 -0.088790 -0.033392
v 0.034794 0.034014 0.004680
v 0.027808 0.035753 0.003547
v 0.023269 0.036544 0.002077
v 0.081975 0.045938 -0.015937
v 0.029171 0.043362 0.005133
v 0.036992 0.045179 0.006646
v 0.044494 0.044850 0.006322
v 0.051406 0.042923 0.004227
v 0.055393 0.040672 0.001409
v 0.096204 0.052003 -0.057931
v 0.053525 0.034151 -0.000346
v 0.026211 -0.032277 0.017044
v 0.019238 -0.015933 0.029078
v 0.011427 -0.030431 0.024872
v 0.050173 -0.079142 -0.022662
v 0.039947 -0.087265 -0.014640
v 0.016232 -0.100613 0.002496
v 0.069219 -0.066890 -0.060608
v 0.023636 0.039899 0.003373
v 0.012660 0.018211 0.027995
v 0.027231 -0.102238 -0.013965
v 0.084918 -0.025988 -0.052274
v 0.016115 -0.051261 0.014086
v 0.017730 -0.053846 0.014984
v 0.019275 -0.057306 0.016171
v 0.020457 -0.061686 0.014962
v 0.021818 -0.069013 0.008447
v 0.028251 -0.047035 0.006599
v 0.029752 -0.046377 0.006644
v 0.030998 -0.045676 0.006850
v 0.040907 -0.042353 0.005804
v 0.070283 -0.024449 -0.009304
v 0.012719 0.027108 0.020855
v 0.016354 0.044105 0.007986
v 0.020793 0.043008 0.004947
v 0.026734 -0.047770 0.005509
v 0.069683 -0.045259 -0.023267
v 0.010317 0.045206 0.018557
v 0.025497 -0.077877 0.003818
v 0.007150 0.022986 0.034190
v 0.018096 0.004460 0.027243
v 0.013380 -0.082513 0.008472
v 0.043618 -0.062071 -0.004540
v 0.034691 -0.018011 0.010562
v 0.035113 -0.071088 -0.000837
v 0.053669 -0.016812 0.007175
v 0.042620 -0.026475 0.008404
v 0.060150 -0.030489 -0.000305
v 0.015670 -0.092637 0.007516
v 0.022874 -0.000250 0.020879
v 0.049083 -0.069375 -0.012657
v 0.038670 -0.078692 -0.007582
v 0.050627 -0.051599 -0.004722
v 0.076987 -0.035353 -0.030096
v 0.059539 -0.053605 -0.012789
v 0.079629 -0.042947 -0.050147
v 0.049187 -0.036676 0.003864
v 0.017671 0.012337 0.021652
v 0.017630 -0.012932 0.039237
v 0.022722 -0.014888 0.029724
v 0.014099 -0.007282 0.045074
v 0.023703 0.051626 0.010931
v 0.038549 0.056449 0.012564
v 0.051176 0.056720 0.011857
v 0.061051 0.054237 0.008265
v 0.067196 0.049872 0.003077
v 0.069207 0.035218 -0.010440
v 0.092425 0.011630 -0.049223
v 0.062638 0.023696 -0.004696
v 0.054551 0.021692 0.000242
v 0.043373 0.022043 0.003503
v 0.032681 0.024480 0.004982
v 0.024389 0.027673 0.005546
v 0.018799 0.030530 0.006190
v 0.093935 0.009918 -0.080625
v 0.022721 -0.016911 0.025496
v 0.012642 0.010097 0.033998
v 0.012010 -0.013642 0.045521
v 0.008054 -0.017791 0.041864
v 0.012081 -0.015049 0.041467
v 0.020674 -0.019342 0.022415
v 0.006438 -0.018621 0.044032
v 0.005841 -0.021046 0.034005
v 0.018392 0.037014 0.003094
v 0.014686 0.035356 0.007793
v 0.012858 0.034181 0.013323
v 0.057585 0.038981 -0.001519
v 0.064457 0.042855 -0.002126
v -0.040105 0.039526 0.000000
v -0.031108 0.039526 0.000000
v -0.040332 0.047493 0.000000
v -0.049312 0.039526 0.000000
v -0.040011 0.032313 0.000000
v 0.040105 0.039526 0.000000
v 0.049313 0.039526 0.000000
v 0.040332 0.047493 0.000000
v 0.031108 0.039526 0.000000
v 0.040011 0.032313 0.000000
v 0.000000 -0.263889 0.283205
v 0.000000 -0.122932 0.405047
v 0.000000 -0.169293 0.289391
v -0.034465 0.031768 0.352123
v 0.000000 -0.075300 0.420478
v 0.000000 -0.011632 0.404370
v 0.000000 0.140255 0.297376
v -0.297307 0.143263 0.127989
v 0.000000 0.250964 0.275512
v 0.000000 0.315281 0.289007
v 0.000000 0.565825 0.253535
v 0.000000 -0.275664 0.275677
v -0.000000 -0.286984 0.260445
v -0.000000 -0.295881 0.237021
v -0.000000 -0.323612 0.237978
v -0.000000 -0.344161 0.241477
v -0.000000 -0.368054 0.249885
v -0.000000 -0.394041 0.242819
v -0.000000 -0.429621 0.198844
v 0.000000 -0.145517 0.382276
v -0.040648 -0.146375 0.321534
v -0.487018 0.326126 -0.064496
v -0.175510 0.113089 0.170875
v -0.220667 0.106584 0.168276
v -0.263155 0.107246 0.156493
v -0.314637 0.127688 0.119454
v -0.136815 0.126104 0.166133
v -0.251274 0.236447 0.188405
v -0.198274 0.235071 0.189018
v -0.297237 0.224312 0.173625
v -0.324375 0.204819 0.156055
v -0.353247 0.099998 0.095948
v -0.150927 -0.500528 0.143122
v -0.311847 0.153508 0.113965
v -0.490938 0.117109 -0.096254
v -0.403715 0.129361 0.054463
v -0.212945 -0.078765 0.199952
v -0.052806 -0.253882 0.277921
v -0.049170 -0.282669 0.253838
v -0.101907 -0.263607 0.251173
v -0.136307 -0.274110 0.217061
v -0.089912 -0.282736 0.236090
v -0.121775 -0.286704 0.204762
v -0.196187 -0.345424 0.142966
v -0.033532 -0.121547 0.401506
v -0.038638 -0.075345 0.415629
v -0.392703 0.239141 0.149856
v -0.125065 0.036564 0.211973
v -0.132245 -0.105122 0.293642
v -0.134116 -0.079157 0.280372
v -0.341150 -0.072273 0.145121
v -0.036803 -0.017211 0.391523
v -0.295414 0.291856 0.227264
v -0.354734 0.272993 0.193410
v -0.444801 0.414976 0.026229
v -0.096529 0.262349 0.262807
v -0.151127 0.217788 0.175688
v -0.229745 -0.303619 0.135687
v -0.412327 -0.312806 -0.245365
v -0.101953 -0.133921 0.276470
v -0.069045 -0.147882 0.278406
v -0.184733 -0.292566 0.138201
v -0.173839 -0.293253 0.150372
v -0.380187 0.300716 0.174633
v -0.134905 -0.122756 0.268018
v -0.210804 0.292076 0.251089
v -0.221546 0.329749 0.262832
v -0.259704 0.537125 0.197420
v -0.407678 0.365050 0.111150
v -0.229604 0.438800 0.234339
v -0.418869 0.258460 0.114427
v -0.452483 0.294738 0.031800
v -0.051733 -0.269656 0.270674
v -0.096057 -0.273817 0.245046
v -0.129444 -0.280202 0.214102
v -0.092930 -0.141808 0.267045
v -0.179117 -0.292889 0.144762
v -0.158346 -0.308041 0.170302
v -0.168246 -0.294183 0.152010
v -0.079837 -0.119896 0.339108
v -0.115269 -0.291756 0.195425
v -0.083907 -0.290473 0.215602
v -0.045791 -0.292015 0.231732
v -0.058825 -0.427223 0.196704
v -0.060698 -0.387694 0.239772
v -0.057209 -0.361855 0.245652
v -0.052446 -0.337935 0.236394
v -0.047273 -0.319170 0.232587
v -0.116041 -0.306412 0.194949
v -0.124789 -0.313596 0.199031
v -0.135024 -0.324392 0.203629
v -0.143375 -0.338393 0.195496
v -0.181623 -0.235402 0.205351
v -0.476112 -0.096530 -0.293111
v 0.000000 -0.159433 0.322798
v -0.139065 -0.301747 0.169998
v -0.148590 -0.304036 0.171751
v -0.055505 -0.165300 0.277229
v -0.121208 -0.149921 0.233632
v -0.061852 -0.156634 0.279580
v -0.169964 0.010398 0.195046
v -0.241249 -0.020161 0.181721
v -0.142094 -0.098649 0.254480
v -0.372121 0.487772 0.118131
v -0.336402 0.415356 0.176184
v -0.313014 0.327796 0.222598
v -0.159668 -0.377715 0.164436
v -0.114838 0.322812 0.283263
v -0.121510 0.445106 0.266960
v -0.139617 0.561253 0.242629
v -0.296390 0.113178 0.137435
v -0.399777 0.068140 0.070085
v -0.111763 0.137747 0.161092
v -0.365299 0.184027 0.120040
v -0.095254 0.065954 0.228925
v -0.105568 -0.090170 0.337875
v -0.446520 0.035298 0.018690
v -0.371849 0.037444 0.107105
v -0.317473 0.023217 0.146111
v -0.233542 0.032099 0.165600
v -0.171207 0.052876 0.175547
v -0.125601 0.076088 0.188733
v -0.040172 0.127780 0.280573
v -0.433958 -0.059646 0.024988
v -0.401552 0.189996 0.101505
v -0.020418 -0.144151 0.379778
v -0.121202 -0.009632 0.227633
v -0.507279 0.115622 -0.242717
v -0.091897 0.100409 0.197476
v -0.146094 -0.102362 0.209500
v -0.332817 0.152099 0.104972
v -0.106691 -0.058554 0.321661
v -0.449489 -0.205137 -0.280850
v -0.110893 0.152969 0.152538
v -0.072542 -0.032834 0.364855
v -0.320615 -0.403057 -0.017087
v -0.311413 -0.455047 -0.099471
v -0.469351 -0.080943 -0.132607
v -0.373764 -0.346940 -0.068802
v -0.474851 0.212187 -0.043923
v -0.154917 -0.544387 0.113825
v -0.017165 -0.157696 0.319807
v -0.160231 -0.042220 0.209580
v -0.438091 0.121180 0.010679
v -0.257949 0.131088 0.154056
v -0.221116 0.129978 0.164737
v -0.166891 -0.313903 0.162448
v -0.420730 -0.152186 0.004273
v -0.080699 -0.602686 0.101272
v -0.196938 -0.548435 0.016799
v -0.248476 -0.510189 -0.033728
v 0.000000 0.444401 0.276122
v -0.000000 -0.608949 0.112730
v -0.183027 0.135802 0.166542
v -0.146278 0.144947 0.160584
v -0.122403 0.149110 0.152849
v -0.431216 0.198522 0.058093
v -0.153451 0.184971 0.168927
v -0.194589 0.194532 0.176885
v -0.234053 0.192799 0.175182
v -0.270414 0.182663 0.164159
v -0.291387 0.170825 0.149335
v -0.506066 0.230429 -0.162813
v -0.281560 0.136520 0.140106
v 0.000000 -0.203097 0.276987
v -0.137880 -0.212911 0.231581
v -0.101198 -0.126939 0.294885
v -0.060108 -0.203204 0.272761
v 0.000000 0.197207 0.269755
v -0.263925 -0.459437 0.022718
v -0.210134 -0.502168 0.064913
v -0.085384 -0.572383 0.155056
v -0.364113 -0.394988 -0.176891
v -0.124331 0.166759 0.159667
v -0.066597 0.052672 0.289186
v -0.000000 -0.578587 0.164300
v -0.143242 -0.580928 0.068465
v -0.446695 -0.179831 -0.133052
v -0.084771 -0.312774 0.216022
v -0.093267 -0.326374 0.220745
v -0.101393 -0.344570 0.226991
v -0.107611 -0.367615 0.220627
v -0.114770 -0.406154 0.186358
v -0.148611 -0.290543 0.176639
v -0.156503 -0.287082 0.176876
v -0.163061 -0.283396 0.177957
v -0.215184 -0.265914 0.172453
v -0.369709 -0.171735 0.092983
v -0.066904 0.099474 0.251626
v -0.086026 0.188879 0.183934
v -0.109377 0.183111 0.167949
v -0.140630 -0.294412 0.170903
v -0.366554 -0.281203 0.019533
v -0.054269 0.194675 0.239542
v -0.134122 -0.452785 0.162010
v 0.000000 0.039672 0.366679
v -0.037609 0.077788 0.321774
v 0.000000 0.087862 0.331513
v -0.095189 -0.019665 0.285230
v -0.000000 -0.535124 0.192072
v -0.000000 -0.480198 0.194835
v -0.070381 -0.477169 0.186492
v -0.229444 -0.369637 0.118042
v -0.182484 -0.137866 0.197485
v -0.184704 -0.417072 0.137522
v -0.282317 -0.131560 0.179666
v -0.224195 -0.182393 0.186130
v -0.316407 -0.203505 0.140319
v -0.082427 -0.530425 0.181462
v -0.120326 -0.044438 0.251752
v -0.258193 -0.408060 0.075346
v -0.203416 -0.457068 0.102043
v -0.266313 -0.314552 0.117083
v -0.404977 -0.229095 -0.016389
v -0.313195 -0.325102 0.074647
v -0.418873 -0.269042 -0.121863
v -0.258742 -0.236054 0.162248
v -0.092953 0.021770 0.255819
v -0.092741 -0.111149 0.348325
v -0.119523 -0.121442 0.298281
v -0.074165 -0.081430 0.379026
v -0.124685 0.228443 0.199423
v -0.202782 0.253817 0.208013
v -0.269202 0.255239 0.204294
v -0.321145 0.242181 0.185399
v -0.353474 0.219218 0.158110
v -0.364049 0.142133 0.087004
v -0.486185 0.018054 -0.117006
v -0.329495 0.081523 0.117221
v -0.286957 0.070982 0.143199
v -0.228154 0.072828 0.160353
v -0.171910 0.085646 0.168130
v -0.128295 0.102443 0.171098
v -0.098888 0.117475 0.174487
v -0.494131 0.009045 -0.282189
v -0.119518 -0.132083 0.276039
v -0.066502 0.009986 0.320764
v -0.063178 -0.114888 0.381381
v -0.042368 -0.136711 0.362141
v -0.063548 -0.122285 0.360056
v -0.108751 -0.144871 0.259835
v -0.033866 -0.141075 0.373545
v -0.030724 -0.153831 0.320803
v -0.096747 0.151580 0.158201
v -0.077255 0.142857 0.182919
v -0.067639 0.136676 0.212006
v -0.302915 0.161928 0.133935
v -0.339065 0.182307 0.130742
v 0.034465 0.031768 0.352123
v 0.297307 0.143263 0.127989
v 0.040648 -0.146375 0.321534
v 0.487018 0.326126 -0.064496
v 0.175510 0.113089 0.170875
v 0.220667 0.106584 0.168276
v 0.263155 0.107246 0.156493
v 0.314637 0.127688 0.119454
v 0.136815 0.126104 0.166133
v 0.251274 0.236447 0.188405
v 0.198274 0.235071 0.189018
v 0.297237 0.224312 0.173625
v 0.324375 0.204819 0.156055
v 0.353247 0.099998 0.095948
v 0.150927 -0.500528 0.143122
v 0.311847 0.153508 0.113965
v 0.490938 0.117109 -0.096254
v 0.403715 0.129361 0.054463
v 0.212945 -0.078765 0.199952
v 0.052806 -0.253882 0.277921
v 0.049170 -0.282669 0.253838
v 0.101907 -0.263607 0.251173
v 0.136307 -0.274110 0.217061
v 0.089912 -0.282736 0.236090
v 0.121775 -0.286704 0.204762
v 0.196187 -0.345424 0.142966
v 0.033532 -0.121547 0.401506
v 0.038638 -0.075345 0.415629
v 0.392703 0.239141 0.149856
v 0.125065 0.036564 0.211973
v 0.132245 -0.105122 0.293642
v 0.134116 -0.079157 0.280372
v 0.341150 -0.072273 0.145121
v 0.036803 -0.017211 0.391523
v 0.295414 0.291856 0.227264
v 0.354734 0.272993 0.193410
v 0.444801 0.414976 0.026229
v 0.096529 0.262349 0.262807
v 0.151127 0.217788 0.175688
v 0.229745 -0.303619 0.135687
v 0.412327 -0.312806 -0.245365
v 0.101953 -0.133921 0.276470
v 0.069045 -0.147882 0.278406
v 0.184733 -0.292566 0.138201
v 0.173839 -0.293253 0.150372
v 0.380187 0.300716 0.174633
v 0.134905 -0.122756 0.268018
v 0.210804 0.292076 0.251089
v 0.221546 0.329749 0.262832
v 0.259704 0.537125 0.197420
v 0.407678 0.365050 0.111150
v 0.229604 0.438800 0.234339
v 0.418869 0.258460 0.114427
v 0.452483 0.294738 0.031800
v 0.051733 -0.269656 0.270674
v 0.096057 -0.273817 0.245046
v 0.129444 -0.280202 0.214102
v 0.092930 -0.141808 0.267045
v 0.179117 -0.292889 0.144762
v 0.158346 -0.308041 0.170302
v 0.168246 -0.294183 0.152010
v 0.079837 -0.119896 0.339108
v 0.115269 -0.291756 0.195425
v 0.083907 -0.290473 0.215602
v 0.045791 -0.292015 0.231732
v 0.058825 -0.427223 0.196704
v 0.050955 -0.388113 0.238617
v 0.057209 -0.361855 0.245652
v 0.052446 -0.337935 0.236394
v 0.047273 -0.319170 0.232587
v 0.116041 -0.306412 0.194949
v 0.124789 -0.313596 0.199031
v 0.135024 -0.324392 0.203629
v 0.143375 -0.338393 0.195496
v 0.181623 -0.235402 0.205351
v 0.476112 -0.096530 -0.293111
v 0.139065 -0.301747 0.169998
v 0.148590 -0.304036 0.171751
v 0.055505 -0.165300 0.277229
v 0.121208 -0.149921 0.233632
v 0.061852 -0.156634 0.279580
v 0.169964 0.010398 0.195046
v 0.241249 -0.020161 0.181721
v 0.142094 -0.098649 0.254480
v 0.372121 0.487772 0.118131
v 0.336402 0.415356 0.176184
v 0.313014 0.327796 0.222598
v 0.159668 -0.377715 0.164436
v 0.114838 0.322812 0.283263
v 0.121510 0.445106 0.266960
v 0.139617 0.561253 0.242629
v 0.296390 0.113178 0.137435
v 0.399777 0.068140 0.070085
v 0.111763 0.137747 0.161092
v 0.365299 0.184027 0.120040
v 0.095254 0.065954 0.228925
v 0.105568 -0.090170 0.337875
v 0.446520 0.035298 0.018690
v 0.371849 0.037444 0.107105
v 0.317473 0.023217 0.146111
v 0.233542 0.032099 0.165600
v 0.171207 0.052876 0.175547
v 0.125601 0.076088 0.188733
v 0.040172 0.127780 0.280573
v 0.433958 -0.059646 0.024988
v 0.401552 0.189996 0.101505
v 0.020418 -0.144151 0.379778
v 0.121202 -0.009632 0.227633
v 0.507279 0.115622 -0.242717
v 0.091897 0.100409 0.197476
v 0.146094 -0.102362 0.209500
v 0.332817 0.152099 0.104972
v 0.106691 -0.058554 0.321661
v 0.449489 -0.205137 -0.280850
v 0.110893 0.152969 0.152538
v 0.072542 -0.032834 0.364855
v 0.320615 -0.403057 -0.017087
v 0.311413 -0.455047 -0.099471
v 0.469351 -0.080943 -0.132607
v 0.373764 -0.346940 -0.068802
v 0.474851 0.212187 -0.043923
v 0.154917 -0.544387 0.113825
v 0.017165 -0.157696 0.319807
v 0.160231 -0.042220 0.209580
v 0.438091 0.121180 0.010679
v 0.257949 0.131088 0.154056
v 0.221116 0.129978 0.164737
v 0.166891 -0.313903 0.162448
v 0.420730 -0.152186 0.004273
v 0.080699 -0.602686 0.101272
v 0.196938 -0.548435 0.016799
v 0.248476 -0.510189 -0.033728
v 0.183027 0.135802 0.166542
v 0.146278 0.144947 0.160584
v 0.122403 0.149110 0.152849
v 0.431216 0.198522 0.058093
v 0.153451 0.184971 0.168927
v 0.194589 0.194532 0.176885
v 0.234053 0.192799 0.175182
v 0.270414 0.182663 0.164159
v 0.291387 0.170825 0.149335
v 0.506066 0.230429 -0.162813
v 0.281560 0.136520 0.140106
v 0.137880 -0.212911 0.231581
v 0.101198 -0.126939 0.294885
v 0.060108 -0.203204 0.272761
v 0.263925 -0.459437 0.022718
v 0.210134 -0.502168 0.064913
v 0.085384 -0.572383 0.155056
v 0.364113 -0.394988 -0.176891
v 0.124331 0.166759 0.159667
v 0.066597 0.052672 0.289186
v 0.143242 -0.580928 0.068465
v 0.446695 -0.179831 -0.133052
v 0.084771 -0.312774 0.216022
v 0.093267 -0.326374 0.220745
v 0.101393 -0.344570 0.226991
v 0.107611 -0.367615 0.220627
v 0.114770 -0.406154 0.186358
v 0.148611 -0.290543 0.176639
v 0.156503 -0.287082 0.176876
v 0.163061 -0.283396 0.177957
v 0.215184 -0.265914 0.172453
v 0.369709 -0.171735 0.092983
v 0.066904 0.099474 0.251626
v 0.086026 0.188879 0.183934
v 0.109377 0.183111 0.167949
v 0.140630 -0.294412 0.170903
v 0.366554 -0.281203 0.019533
v 0.054269 0.194675 0.239542
v 0.134122 -0.452785 0.162010
v 0.037609 0.077788 0.321774
v 0.095189 -0.019665 0.285230
v 0.070381 -0.477169 0.186492
v 0.229444 -0.369637 0.118042
v 0.182484 -0.137866 0.197485
v 0.184704 -0.417072 0.137522
v 0.282317 -0.131560 0.179666
v 0.224195 -0.182393 0.186130
v 0.316407 -0.203505 0.140319
v 0.082427 -0.530425 0.181462
v 0.120326 -0.044438 0.251752
v 0.258193 -0.408060 0.075346
v 0.203416 -0.457068 0.102043
v 0.266313 -0.314552 0.117083
v 0.404977 -0.229095 -0.016389
v 0.313195 -0.325102 0.074647
v 0.418873 -0.269042 -0.121863
v 0.258742 -0.236054 0.162248
v 0.092953 0.021770 0.255819
v 0.092741 -0.111149 0.348325
v 0.119523 -0.121442 0.298281
v 0.074165 -0.081430 0.379026
v 0.124685 0.228443 0.199423
v 0.202782 0.253817 0.208013
v 0.269202 0.255239 0.204294
v 0.321145 0.242181 0.185399
v 0.353474 0.219218 0.158110
v 0.364049 0.142133 0.087004
v 0.486185 0.018054 -0.117006
v 0.329495 0.081523 0.117221
v 0.286957 0.070982 0.143199
v 0.228154 0.072828 0.160353
v 0.171910 0.085646 0.168130
v 0.128295 0.102443 0.171098
v 0.098888 0.117475 0.174487
v 0.494131 0.009045 -0.282189
v 0.119518 -0.132083 0.276039
v 0.066502 0.009986 0.320764
v 0.063178 -0.114888 0.381381
v 0.042368 -0.136711 0.362141
v 0.063548 -0.122285 0.360056
v 0.108751 -0.144871 0.259835
v 0.033866 -0.141075 0.373545
v 0.030724 -0.153831 0.320803
v 0.096747 0.151580 0.158201
v 0.077255 0.142857 0.182919
v 0.067639 0.136676 0.212006
v 0.302915 0.161928 0.133935
v 0.339065 0.182307 0.130742
v -0.210967 0.164795 0.141925
v -0.163637 0.164795 0.141925
v -0.212157 0.206706 0.141925
v -0.259397 0.164795 0.141925
v -0.210472 0.126854 0.141925
v 0.210967 0.164795 0.141925
v 0.259401 0.164795 0.141925
v 0.212157 0.206706 0.141925
v 0.163640 0.164795 0.141925
v 0.210473 0.126854 0.141925
s 0
f 176 153 378 397
f 397 378 401 370
@ -900,11 +900,11 @@ f 154 23 27 155
f 155 27 113 156
f 156 113 244 134
f 134 244 191 174
f 470 469 473
f 472 473 469
f 472 469 471
f 469 470 471
f 474 475 478
f 474 476 475
f 474 478 477
f 476 474 477
f 474 476 475
f 474 475 478
f 474 478 477
f 469 472 471
f 469 471 470
f 473 472 469 470
f 472 473 469

BIN
face_mesh_perspective.blend Normal file

Binary file not shown.

View File

@ -1,11 +1,29 @@
#!/usr/bin/env python3
import argparse
import math
from struct import pack
import numpy as np
import cv2 as cv
import mediapipe as mp
eye_l_idxs = [474, 475, 476, 477]
eye_r_idxs = [469, 470, 471, 472]
head_idxs = [34, 264]
# For averaging depth estimate out over multiple frames.
WINDOW_WIDTH = 3
def distance(a, b):
x = a.x - b.x
y = a.y - b.y
z = a.z - b.z
return ((x * x) + (y * y) + (z * z))**0.5
if __name__ == "__main__":
arg_parser = argparse.ArgumentParser(description=
"""
@ -13,13 +31,38 @@ if __name__ == "__main__":
data. Currently only supports video files with a single face.
"""
)
arg_parser.add_argument("--fov", help="Attempt to account for perspective projection based on the given horizontal fov (in degrees).")
arg_parser.add_argument("--focal_len", help="Same as --fov except it takes sensor size / focal length (e.g. \"35/60\" for a 35mm sensor and 60mm lens).")
arg_parser.add_argument("input_video", help="The input video file with a person's face in it.")
arg_parser.add_argument("output_mdd", help="The .mdd file to write the mesh animation data to.")
args = arg_parser.parse_args()
video_path = args.input_video
mdd_path = args.output_mdd
camera_scale = None
if args.fov is not None:
try:
fov = float(args.fov)
camera_scale = 2.0 * math.tan(math.radians(fov / 2))
except:
print("Error: the specified fov, '{}', is not a number.".format(args.fov))
exit()
elif args.focal_len is not None:
error_msg = "Error: focal_len must be specified as two numbers separated by a slash (no spaces). E.g. \"35/60\" for a 35mm sensor and 60mm lens."
try:
sensor_lens = args.focal_len.split("/")
if len(sensor_lens) != 2:
raise None
sensor = float(sensor_lens[0])
lens = float(sensor_lens[1])
camera_scale = sensor / lens
except:
print(error_msg)
exit()
#----------------------------------------------------------
# Compute the mesh points from the input video.
meshes = [] # One mesh per frame.
point_count = 0
@ -61,6 +104,21 @@ if __name__ == "__main__":
print("\rRead {} frames. ".format(len(meshes)))
print("Generated vert count:", point_count)
#----------------------------------------------------------
# Compute distance and average Z coordinate of our metric head width
# vertices for each frame.
width_2d_and_z = []
for mesh in meshes:
if mesh is None:
width_2d_and_z += [None]
else:
d = distance(mesh[head_idxs[0]], mesh[head_idxs[1]])
z = (mesh[head_idxs[0]].z + mesh[head_idxs[1]].z) * 0.5
width_2d_and_z += [(d, z)]
#----------------------------------------------------------
# Write the mdd file.
frame_count = len(meshes)
if frame_count > 0:
@ -69,18 +127,56 @@ if __name__ == "__main__":
mdd.write(pack(">2i", frame_count, point_count))
mdd.write(pack(">%df" % (frame_count), *[frame / fps for frame in range(frame_count)]))
i = 1
for mesh in meshes:
for mesh, i in zip(meshes, range(len(meshes))):
print("\rWriting frame", i, end = "")
if mesh is None:
# Put all vertices at the origin for bogus frames.
for n in range(point_count):
mdd.write(pack(">3f", 0.0, 0.0, 0.0))
else:
elif camera_scale is None:
# No camera fov, so just do simple orthographic.
for point in mesh:
x = point.x - 0.5
y = point.y - 0.5
mdd.write(pack(">3f", x, y / aspect_ratio, point.z))
i += 1
mdd.write(pack(">3f", x, -y / aspect_ratio, -point.z))
else:
# Compute a rolling average of width_2d_and_z.
w2d = width_2d_and_z[i][0]
wz = width_2d_and_z[i][1]
k = 1
for j in range(1, WINDOW_WIDTH + 1):
if (i + j) < len(width_2d_and_z):
w2d_z = width_2d_and_z[i + j]
if w2d_z is None:
break
w2d += w2d_z[0]
wz += w2d_z[1]
k += 1
for j in range(1, WINDOW_WIDTH + 1):
if (i - j) >= 0:
w2d_z = width_2d_and_z[i - j]
if w2d_z is None:
break
w2d += w2d_z[0]
wz += w2d_z[1]
k += 1
w2d /= k
wz /= k
# Compute and write out mesh coordinates.
scale = 1.0 / w2d
for point in mesh:
z = ((point.z - wz) * camera_scale * scale) + scale
x = (point.x - 0.5) * camera_scale * z
y = ((point.y - 0.5) * camera_scale / aspect_ratio) * z
mdd.write(pack(
">3f",
x / camera_scale,
-y / camera_scale,
-z / camera_scale,
))
print("\rWrote {} frames. ".format(len(meshes)))