├── .gitignore
├── ARFaceGeometry.obj
├── ARKitFaceExample.xcodeproj
├── .xcodesamplecode.plist
├── project.pbxproj
└── project.xcworkspace
│ └── xcshareddata
│ └── WorkspaceSettings.xcsettings
├── ARKitFaceExample
├── AppDelegate.swift
├── Base.lproj
│ └── Main.storyboard
├── Face Overlay Content
│ ├── BlendShapeCharacter.swift
│ ├── FaceOcclusionOverlay.swift
│ ├── ProjectMesh.swift
│ ├── TexturedFace.swift
│ ├── TransformVisualization.swift
│ ├── VideoTexturedFace.swift
│ └── VirtualContent.swift
├── Resources
│ ├── Assets.xcassets
│ │ ├── AppIcon.appiconset
│ │ │ ├── Contents.json
│ │ │ ├── Icon-40.png
│ │ │ ├── Icon-40@2x.png
│ │ │ ├── Icon-40@3x.png
│ │ │ ├── Icon-60@2x.png
│ │ │ ├── Icon-60@3x.png
│ │ │ ├── Icon-72.png
│ │ │ ├── Icon-72@2x.png
│ │ │ ├── Icon-76.png
│ │ │ ├── Icon-76@2x.png
│ │ │ ├── Icon-83.5@2x.png
│ │ │ ├── Icon-Small-50.png
│ │ │ ├── Icon-Small-50@2x.png
│ │ │ ├── Icon-Small.png
│ │ │ ├── Icon-Small@2x.png
│ │ │ ├── Icon-Small@3x.png
│ │ │ ├── Icon.png
│ │ │ ├── Icon@2x.png
│ │ │ ├── NotificationIcon@2x.png
│ │ │ ├── NotificationIcon@3x.png
│ │ │ ├── NotificationIcon~ipad.png
│ │ │ ├── NotificationIcon~ipad@2x.png
│ │ │ └── ios-marketing.png
│ │ ├── Contents.json
│ │ ├── blendShapes.imageset
│ │ │ ├── Contents.json
│ │ │ ├── blendShapes-1.png
│ │ │ └── blendShapes.png
│ │ ├── geometry.imageset
│ │ │ ├── Contents.json
│ │ │ ├── geometry-1.png
│ │ │ └── geometry.png
│ │ ├── restart.imageset
│ │ │ ├── Contents.json
│ │ │ ├── refresh@2x.png
│ │ │ └── refresh@3x.png
│ │ ├── restartPressed.imageset
│ │ │ ├── Contents.json
│ │ │ ├── refreshPressed@2x.png
│ │ │ └── refreshPressed@3x.png
│ │ ├── texture.imageset
│ │ │ ├── Contents.json
│ │ │ ├── texture-1.png
│ │ │ └── texture.png
│ │ ├── transforms.imageset
│ │ │ ├── Contents.json
│ │ │ ├── transforms-1.png
│ │ │ └── transforms.png
│ │ ├── videoTexture.imageset
│ │ │ ├── Contents.json
│ │ │ ├── videoTexture-1.png
│ │ │ └── videoTexture.png
│ │ └── wireframeTexture.imageset
│ │ │ ├── Contents.json
│ │ │ └── wireframeTexture.png
│ ├── Info.plist
│ ├── LaunchScreen.storyboard
│ ├── Models.scnassets
│ │ ├── coordinateOrigin.scn
│ │ ├── overlayModel.scn
│ │ └── robotHead.scn
│ └── VideoTexturedFace.shader
├── Utilities.swift
└── ViewController.swift
├── Configuration
└── SampleCode.xcconfig
├── Documentation
└── FaceExampleModes.png
├── IMG_7407.jpg
├── LICENSE
└── LICENSE.txt
└── README.md
/.gitignore:
--------------------------------------------------------------------------------
1 | # See LICENSE folder for this sample’s licensing information.
2 | #
3 | # Apple sample code gitignore configuration.
4 |
5 | # Finder
6 | .DS_Store
7 |
8 | # Xcode - User files
9 | xcuserdata/
10 |
11 | **/*.xcodeproj/project.xcworkspace/*
12 | !**/*.xcodeproj/project.xcworkspace/xcshareddata
13 |
14 | **/*.xcodeproj/project.xcworkspace/xcshareddata/*
15 | !**/*.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
16 |
17 | **/*.playground/playground.xcworkspace/*
18 | !**/*.playground/playground.xcworkspace/xcshareddata
19 |
20 | **/*.playground/playground.xcworkspace/xcshareddata/*
21 | !**/*.playground/playground.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings
22 |
--------------------------------------------------------------------------------
/ARFaceGeometry.obj:
--------------------------------------------------------------------------------
1 | v 0 -27.4361 61.2729
2 | v 0 -30.7336 62.0126
3 | v 0 -23.9011 61.6938
4 | v 0 -20.9142 62.5778
5 | v 0 -18.6303 63.9887
6 | v 0 -16.5494 68.4657
7 | v 0 -13.7898 74.8141
8 | v 0 -9.80007 77.8864
9 | v 0 -4.11558 78.3582
10 | v 0 0.958829 75.5694
11 | v 0 5.13743 72.3692
12 | v 0 9.21539 69.3697
13 | v 0 13.2164 66.3772
14 | v 0 17.3487 63.4679
15 | v 0 21.291 60.2776
16 | v 0 29.76 55.4371
17 | v 0 34.4777 55.2549
18 | v 0 42.769 56.4813
19 | v 0 51.8881 56.3474
20 | v 0 60.9924 54.4195
21 | v 0 93.4177 41.8162
22 | v 0 -33.4758 63.3017
23 | v 0 -36.9372 62.6461
24 | v 0 -39.3174 59.9225
25 | v 0 -40.1535 56.1783
26 | v 0 -40.7402 57.4095
27 | v 0 -42.5019 59.0451
28 | v 0 -45.2646 60.4253
29 | v 0 -48.7257 60.5173
30 | v 0 -51.6198 58.2561
31 | v 0 -54.1912 56.0263
32 | v 0 -57.3412 54.3393
33 | v 0 -61.1499 54.3347
34 | v 0 -64.8101 55.5369
35 | v 0 -69.6948 56.2174
36 | v 0 -76.1297 55.1867
37 | v 0 25.2001 57.3157
38 | v 0 -15.7288 71.4422
39 | v 0 -17.3819 66.0153
40 | v -72.0919 37.7549 -18.694
41 | v -27.5504 16.1632 39.9092
42 | v -31.3847 15.8623 39.9631
43 | v -35.0941 15.9552 39.1893
44 | v -43.6127 16.8584 33.3952
45 | v -41.5263 16.4339 35.2313
46 | v -38.5255 16.2518 37.4982
47 | v -47.8763 21.3181 29.9144
48 | v -23.8368 16.736 39.3254
49 | v -20.5714 17.7043 38.7756
50 | v -14.505 13.0012 47.8089
51 | v -34.9062 30.849 40.7162
52 | v -30.8249 31.3486 41.1547
53 | v -26.4426 30.9499 40.3223
54 | v -42.4965 28.3606 37.6594
55 | v -38.8121 29.945 39.6285
56 | v -44.9679 26.8928 35.4567
57 | v -46.7818 25.1286 32.6002
58 | v -71.6188 13.0347 -27.1589
59 | v -35.5013 -52.867 39.2394
60 | v -39.0858 -54.1175 35.2024
61 | v -43.672 -55.9629 28.2989
62 | v -55.5068 -45.8369 13.6645
63 | v -25.2084 -32.2141 50.9437
64 | v -28.0773 -29.5326 49.0909
65 | v -31.5647 -26.7785 47.0528
66 | v -28.2473 -22.0008 48.035
67 | v -10.5382 -14.7036 59.4985
68 | v -11.9283 -13.1127 61.5684
69 | v -10.9567 -13.7093 59.9439
70 | v -11.1226 -10.9251 59.835
71 | v -8.57562 -27.1957 60.6096
72 | v -8.01913 -11.8073 68.915
73 | v -5.9001 -9.24356 67.1066
74 | v -4.25506 -12.3923 65.8181
75 | v -4.20376 -10.9073 64.3756
76 | v -3.86551 -14.0703 66.9339
77 | v -4.76444 -16.6327 62.3931
78 | v -6.22828 -14.433 61.7774
79 | v -6.49122 -12.6525 60.6437
80 | v -10.504 -10.72 63.0401
81 | v -11.6203 -12.5326 64.2708
82 | v -9.8525 -11.9751 66.2623
83 | v -12.8278 -10.4315 66.8293
84 | v -4.26055 -27.1762 61.8245
85 | v -20.6078 -32.0727 54.079
86 | v -16.9423 -29.449 56.0347
87 | v -12.1699 -23.8706 57.3053
88 | v -10.1453 -16.3748 58.2781
89 | v -7.98517 -23.3738 60.1855
90 | v -12.8207 -28.1131 58.3596
91 | v -4.48389 -30.0364 62.1977
92 | v -8.95713 -30.5906 61.2265
93 | v -4.59072 -32.6245 62.9433
94 | v -4.07423 -39.2859 59.1188
95 | v -8.9847 -33.682 61.5972
96 | v -7.73099 -39.3102 57.6852
97 | v -12.897 -35.2221 59.5407
98 | v -11.0128 -39.5052 55.9005
99 | v -12.9781 -31.7976 59.2255
100 | v -16.6336 -33.4731 57.0887
101 | v -19.5765 -35.4967 54.7654
102 | v -23.1197 -34.9765 52.0751
103 | v -21.7085 -37.4597 52.3946
104 | v -18.7426 -40.7799 49.0716
105 | v -20.3929 -39.5636 51.838
106 | v -14.0079 -40.019 53.7162
107 | v -16.5578 -40.4844 51.3453
108 | v -18.5222 -38.4492 54.3816
109 | v -15.9862 -37.0867 57.0313
110 | v -31.9676 -51.5041 41.9807
111 | v -26.635 -48.7849 45.4057
112 | v -29.244 -50.3747 43.7938
113 | v -31.8568 -57.5231 40.2085
114 | v -34.7093 -60.2241 36.7412
115 | v -30.1291 -65.1489 39.4043
116 | v -24.6276 -51.3114 46.7179
117 | v -20.3877 -50.644 50.1323
118 | v -21.2 -43.3928 48.8591
119 | v -24.4459 -47.057 46.8655
120 | v -22.7924 -49.0631 48.3138
121 | v -19.9661 -44.313 50.5351
122 | v -16.3416 -40.9619 51.3033
123 | v -18.2494 -45.0067 52.3308
124 | v -19.2205 -47.6412 51.7296
125 | v -2.49701 -15.737 67.9446
126 | v -6.893 -12.2187 71.4695
127 | v -4.09898 -13.1904 73.5427
128 | v -5.30775 -9.82779 75.9394
129 | v -8.68542 -9.62962 72.8668
130 | v -5.8698 -4.40201 76.3058
131 | v -70.4559 47.9032 -11.1981
132 | v -35.6378 88.2588 32.8273
133 | v -54.8383 28.3617 28.0722
134 | v -17.1607 6.95435 49.05
135 | v -17.768 9.91688 46.4367
136 | v -13.7439 6.90573 53.5299
137 | v -13.2668 3.62821 55.7851
138 | v -14.0513 -5.09626 62.5207
139 | v -19.3351 0.858286 49.5976
140 | v -16.4986 -4.67142 52.5821
141 | v -15.7535 -9.40949 61.713
142 | v -14.1457 -7.67119 64.969
143 | v -14.1995 -11.9531 63.5616
144 | v -15.4846 -6.6756 59.9085
145 | v -16.4352 3.7932 51.3326
146 | v -20.3503 4.14232 47.6305
147 | v -21.1747 7.45129 45.4988
148 | v -32.1138 -18.3781 47.0534
149 | v -35.4432 -23.8392 45.3558
150 | v -39.746 -20.4616 43.1882
151 | v -36.3603 -14.1168 45.3082
152 | v -41.2232 -8.37051 42.0932
153 | v -48.8542 -6.86633 36.8996
154 | v -46.8787 0.75013 37.5615
155 | v -40.7469 0.105002 40.8173
156 | v -52.1906 2.7067 33.0458
157 | v -5.5545 0.271332 73.9834
158 | v -4.9479 11.9894 64.9408
159 | v -5.05198 16.0876 62.001
160 | v -26.0365 51.5545 52.4742
161 | v -14.2026 10.119 50.8298
162 | v -36.0001 38.6773 46.0894
163 | v -52.3422 45.0926 33.7068
164 | v -41.0921 37.6855 43.7738
165 | v -50.2135 33.8555 36.8991
166 | v -53.1342 31.5984 32.3152
167 | v -57.1647 29.0583 24.9217
168 | v -67.8873 58.0664 -3.98312
169 | v -13.716 34.3192 49.7241
170 | v -22.5132 29.0768 39.4228
171 | v -23.0096 37.329 49.3442
172 | v -19.6635 27.0005 37.9449
173 | v -26.0771 -42.1517 46.248
174 | v -28.2037 -42.5065 45.6426
175 | v -31.5797 -42.7793 44.7583
176 | v -35.4454 -42.552 42.9446
177 | v -38.9169 -41.7846 40.1886
178 | v -42.3373 -40.1515 36.9084
179 | v -62.0315 8.07823 18.1807
180 | v -41.7807 -27.3051 40.6546
181 | v -37.7399 -29.7887 43.2626
182 | v -34.1486 -32.0643 45.5954
183 | v -30.3532 -34.2181 47.8472
184 | v -27.3456 -35.9948 49.3589
185 | v -24.8378 -37.7374 50.0572
186 | v -23.0893 -39.2654 50.2316
187 | v -21.7826 -40.4538 49.6403
188 | v -20.3201 -40.9084 47.2326
189 | v -23.9179 -41.7806 46.848
190 | v -21.5856 -40.8076 45.9979
191 | v -22.7069 -41.4202 46.8373
192 | v -29.1076 -55.3852 42.8614
193 | v -26.7569 -53.429 44.956
194 | v -25.6176 -58.5179 44.6912
195 | v -21.8758 -53.295 48.4528
196 | v -23.6442 -55.9145 46.6797
197 | v -27.8372 -61.4358 42.3725
198 | v -50.0786 40.8827 38.3163
199 | v -53.823 37.7304 33.4134
200 | v -56.0017 40.6791 28.3047
201 | v -58.1731 35.8742 23.5638
202 | v -56.0053 34.0013 28.5012
203 | v -16.6492 -12.0572 57.0747
204 | v -14.8702 -12.9583 60.8288
205 | v -16.8331 -13.261 54.5738
206 | v -24.8158 -25.3317 50.0538
207 | v -14.6641 -14.154 59.0275
208 | v -29.6761 38.9352 48.0761
209 | v -67.5797 -21.6229 -27.1015
210 | v -33.8281 51.2826 48.5481
211 | v -41.1495 50.4427 43.9637
212 | v -44.9526 84.0744 26.5531
213 | v -52.7486 78.7773 19.3639
214 | v -64.3258 64.5705 4.21913
215 | v -67.5174 33.5033 -2.3677
216 | v -65.4622 41.6475 3.52851
217 | v -63.4345 51.212 9.34234
218 | v -59.4324 57.57 17.3282
219 | v -48.1177 67.9789 30.8314
220 | v -40.4629 71.5381 37.6133
221 | v -31.8467 74.5436 43.2958
222 | v -63.0257 40.8076 10.5286
223 | v -60.5047 47.3059 16.5134
224 | v -56.9177 53.5938 22.792
225 | v -45.4734 62.3256 35.6621
226 | v -37.9251 64.9665 41.6646
227 | v -29.5601 66.9025 46.5369
228 | v -60.6733 38.6937 16.7547
229 | v -58.2076 44.4693 22.0667
230 | v -54.5816 49.9457 27.9772
231 | v -43.3877 57.0174 39.4773
232 | v -36.0171 58.9693 44.7915
233 | v -27.8621 60.2283 49.1974
234 | v -18.7993 60.8435 52.4061
235 | v -59.8123 29.7885 19.7157
236 | v -60.9888 23.8005 17.0177
237 | v -64.9884 32.0479 6.05763
238 | v -4.41934 -36.8434 61.8472
239 | v -8.49308 -37.2304 60.184
240 | v -11.9433 -38.0043 58.0782
241 | v -14.8638 -39.1139 55.5019
242 | v -17.3244 -40.0409 52.9106
243 | v -19.3179 -40.5756 50.4749
244 | v -20.8098 -40.9596 48.5297
245 | v -22.0881 -41.0728 46.5311
246 | v -20.1999 -41.8053 48.9192
247 | v -17.2947 -42.6397 51.9076
248 | v -15.63 -40.4452 50.1347
249 | v -17.5096 -40.7175 48.3953
250 | v -21.2319 -40.7829 45.1374
251 | v -20.3224 -40.668 45.8345
252 | v -18.55 -40.5022 47.6674
253 | v -16.1063 -40.256 49.6708
254 | v -13.3622 -40.0384 51.7569
255 | v -10.2506 -39.8914 53.4201
256 | v -6.99801 -39.9538 54.8171
257 | v -3.52352 -40.0937 55.7985
258 | v -7.27936 -69.6621 55.0582
259 | v -5.47644 -61.1399 53.7596
260 | v -4.94403 -57.6106 53.9063
261 | v -4.59649 -54.0217 55.8509
262 | v -4.50684 -51.4239 58.0539
263 | v -4.48223 -48.3844 60.0232
264 | v -4.16698 -45.0047 60.0255
265 | v -3.95438 -42.245 58.713
266 | v -3.58028 -40.6172 56.9927
267 | v -13.6791 -68.9198 52.3108
268 | v -10.7075 -60.6432 52.3895
269 | v -9.73333 -57.0591 53.1874
270 | v -9.07971 -53.7147 55.1923
271 | v -8.79779 -50.9044 57.3583
272 | v -8.78429 -47.8086 59.014
273 | v -8.35585 -44.4232 58.8016
274 | v -7.91582 -41.8022 57.5008
275 | v -7.23431 -40.2204 55.6343
276 | v -13.3177 -40.1546 52.0599
277 | v -14.1416 -41.0662 53.1924
278 | v -15.0211 -43.1714 54.145
279 | v -15.9049 -45.8271 54.7406
280 | v -16.4824 -48.8792 54.0046
281 | v -17.2679 -52.0472 52.1643
282 | v -17.9623 -2.32707 51.0506
283 | v -19.0244 -67.2796 48.7601
284 | v -15.5381 -59.5552 50.5712
285 | v -14.3319 -56.2341 52.0127
286 | v -13.4377 -53.1429 53.9072
287 | v -12.9305 -49.9868 56.0618
288 | v -12.7436 -46.8352 57.2284
289 | v -12.0472 -43.7364 56.6569
290 | v -11.4416 -41.3826 55.4307
291 | v -10.4688 -39.9741 53.7898
292 | v -22.0343 -28.4746 52.3404
293 | v -17.2338 -9.78595 53.3666
294 | v -3.8804 -23.7663 61.9302
295 | v -16.365 -10.6262 59.3955
296 | v -69.3126 -11.8187 -26.6728
297 | v -17.2827 -24.4813 53.9563
298 | v -14.0809 -15.6469 57.3572
299 | v -16.5737 -8.21947 57.5685
300 | v -12.8888 0.356132 57.9191
301 | v -4.89401 7.98609 67.7735
302 | v -13.2341 -2.67979 60.1992
303 | v -5.187 4.18764 70.8807
304 | v -14.8174 -2.10392 54.7692
305 | v -15.5473 0.696028 53.163
306 | v -18.9814 -40.7612 46.7691
307 | v -19.3561 -40.7854 47.9995
308 | v -6.81904 -18.958 60.1609
309 | v -13.6154 -16.8604 55.2426
310 | v -21.0449 -21.3083 50.4996
311 | v -24.6382 -17.7484 48.6186
312 | v -28.172 -13.8259 48.062
313 | v -16.9938 -14.2305 52.5809
314 | v -18.139 -9.64861 51.2845
315 | v -20.589 -6.0639 49.6512
316 | v -16.1983 -6.47763 54.9796
317 | v -14.9082 -4.55323 57.2744
318 | v -22.6948 -2.33317 48.3644
319 | v -24.1647 1.35175 46.5322
320 | v -25.0896 5.13039 44.5484
321 | v -31.4727 -9.46854 46.8263
322 | v -34.1391 -4.41931 44.7404
323 | v -34.7812 1.30244 42.6486
324 | v -3.3699 -20.4747 62.34
325 | v -2.68531 -17.9149 63.4776
326 | v -17.0023 -9.85129 56.1086
327 | v -46.0886 36.1486 40.7477
328 | v -38.8605 44.5633 46.7022
329 | v -31.909 44.7013 50.1444
330 | v -24.4783 44.3771 53.3102
331 | v -59.0416 72.8036 12.0989
332 | v -54.5102 63.353 23.9931
333 | v -51.8525 58.3161 29.4753
334 | v -49.6159 53.8831 33.9709
335 | v -47.4966 48.192 38.962
336 | v -45.0041 43.1542 42.8017
337 | v -18.468 -54.9653 50.324
338 | v -19.9069 -57.9253 48.6161
339 | v -21.6485 -61.0844 47.0555
340 | v -17.1258 -63.1159 49.6919
341 | v -23.5666 -64.6717 45.3291
342 | v -25.6234 -69.0397 42.9747
343 | v -20.8071 -72.21 46.9454
344 | v -15.2006 -74.5267 50.9648
345 | v -8.25168 -75.853 53.9896
346 | v -12.0006 -64.5266 52.4552
347 | v -6.28365 -64.8867 54.5762
348 | v -6.77793 34.598 54.08
349 | v -16.3934 43.3736 55.649
350 | v -17.5751 51.5095 55.189
351 | v -19.9906 67.5317 50.1907
352 | v -21.6345 75.8016 47.5915
353 | v -24.5359 91.3061 37.5439
354 | v -57.5203 11.6318 23.7694
355 | v -55.0911 -4.74866 30.5151
356 | v -58.0782 18.058 21.5737
357 | v -45.7069 17.7219 31.5117
358 | v -16.8764 24.1513 37.3948
359 | v -15.6903 20.9848 37.7116
360 | v -9.534 26.5088 47.9612
361 | v -5.51672 28.9674 53.5655
362 | v -8.43658 13.3422 59.1123
363 | v -9.38042 -1.36397 70.3894
364 | v -8.80438 2.21496 67.6376
365 | v -8.24168 9.4703 61.9229
366 | v -8.35504 5.77948 64.7486
367 | v -8.23595 21.2055 52.1289
368 | v -8.40945 17.1811 55.7287
369 | v -11.0901 10.1511 56.0801
370 | v -10.87 6.60283 58.7807
371 | v -11.0068 16.784 49.4605
372 | v -11.1869 13.6234 53.0596
373 | v -9.65262 -5.26767 72.4917
374 | v -12.1279 -6.32935 68.3393
375 | v -11.1213 -9.39187 69.4868
376 | v -62.0791 16.5466 16.1771
377 | v -70.5884 -1.06786 -26.795
378 | v -52.0297 10.936 29.9162
379 | v -48.8363 8.14687 33.7251
380 | v -44.6082 6.46758 37.0677
381 | v -39.6744 5.88084 39.5778
382 | v -34.7126 6.25913 41.1194
383 | v -30.003 7.32945 42.0281
384 | v -25.7402 8.76045 42.6913
385 | v -21.9425 10.4468 43.1637
386 | v -18.4627 12.5315 43.7365
387 | v -15.013 15.3114 44.582
388 | v -5.11864 20.2281 58.3631
389 | v -53.5138 14.8126 26.5735
390 | v -56.1582 5.97096 27.8477
391 | v -60.7285 -1.51987 22.1705
392 | v -62.1317 -32.627 5.25244
393 | v -52.1801 -63.7819 -7.39064
394 | v -21.5673 -40.8508 44.6876
395 | v -21.4944 -41.061 46.1365
396 | v -21.7417 -41.1493 46.8947
397 | v -22.541 -41.0748 47.8113
398 | v -23.9034 -40.7208 48.2802
399 | v -25.8818 -40.1854 48.1081
400 | v -28.44 -39.4286 47.4285
401 | v -31.7458 -38.6438 46.3075
402 | v -35.5342 -37.5342 44.1505
403 | v -38.9355 -35.963 41.3553
404 | v -42.6052 -34.1659 38.305
405 | v -20.1115 -40.776 45.7164
406 | v -20.5309 -40.7811 46.8271
407 | v -21.1111 -41.1677 47.536
408 | v -22.1587 -42.2481 47.7335
409 | v -25.3112 -44.4775 45.9096
410 | v -27.8109 -45.7121 44.7499
411 | v -30.755 -46.6735 43.6762
412 | v -34.2198 -47.3582 42.0754
413 | v -37.8744 -47.4339 39.448
414 | v -41.4422 -47.0895 35.7436
415 | v -45.7425 -46.192 30.4919
416 | v -54.553 19.4917 24.7983
417 | v -47.106 19.4677 30.3421
418 | v -47.605 23.7817 31.133
419 | v -55.1186 24.0936 25.4372
420 | v -58.1176 24.0655 21.8177
421 | v -8.18953 42.6364 56.2808
422 | v -8.83628 51.7241 56.2195
423 | v -9.41386 61.074 53.9271
424 | v -9.94963 67.3527 52.271
425 | v -10.7758 75.915 49.9213
426 | v -12.337 92.9586 40.7542
427 | v -18.2563 18.8326 38.2808
428 | v -4.96867 24.0693 55.662
429 | v -3.08566 -14.8376 70.6915
430 | v -4.79429 -13.1637 69.2058
431 | v -4.89452 -11.4996 68.366
432 | v -4.13455 -9.70666 67.288
433 | v -11.1998 19.7934 45.4503
434 | v -29.5954 3.06149 43.7063
435 | v -28.6998 -1.42023 45.7342
436 | v -26.8245 -5.71348 47.574
437 | v -24.2074 -9.88559 48.7786
438 | v -21.2218 -13.9955 49.1831
439 | v -17.9369 -17.4555 50.7899
440 | v -14.5744 -19.5658 53.7824
441 | v -10.6979 -19.6542 56.9806
442 | v -7.98586 -15.2858 60.265
443 | v -8.34002 -13.5783 59.7744
444 | v -9.17649 -10.1423 64.907
445 | v -11.9524 -3.2231 66.2829
446 | v -11.1882 -0.181179 63.8741
447 | v -10.8586 3.11878 61.3622
448 | v -44.1727 -16.9922 40.1974
449 | v -46.2584 -24.648 37.1253
450 | v -46.6893 -31.6392 34.5964
451 | v -46.3427 -38.6548 32.459
452 | v -50.4397 -15.1102 34.4076
453 | v -50.7784 -22.5907 32.2899
454 | v -50.6662 -29.4381 29.9554
455 | v -55.4734 -21.5263 26.2723
456 | v -55.7875 -13.559 28.1274
457 | v -60.5065 -12.7252 20.639
458 | v -59.4378 -21.227 19.5244
459 | v -65.5259 14.8349 8.69052
460 | v -65.5954 5.84801 9.8663
461 | v -60.2878 -29.7893 12.4532
462 | v -58.9254 -40.797 8.91461
463 | v -57.6003 -55.7751 -16.3893
464 | v -65.001 -3.86114 10.9453
465 | v -66.8147 -5.90421 1.40307
466 | v -65.4877 -15.3651 2.0868
467 | v -68.7383 23.8618 -5.32413
468 | v -72.3678 26.2669 -23.7637
469 | v -64.0556 -24.4358 3.17144
470 | v -63.6894 -13.764 11.3539
471 | v -62.1662 -22.4966 11.5883
472 | v -67.683 4.25237 1.13389
473 | v -67.9111 13.8663 1.74251
474 | v -66.636 23.6363 2.76626
475 | v -62.7146 31.0804 12.5706
476 | v -64.5861 23.166 9.47689
477 | v -58.0392 -28.0762 18.9412
478 | v -50.4793 -50.4884 20.9723
479 | v -50.5789 -43.4253 24.4531
480 | v -50.6171 -36.8235 27.2997
481 | v -54.8657 -40.1533 18.0925
482 | v -54.2954 -34.649 22.4634
483 | v -57.9998 -35.666 15.0112
484 | v -54.8553 -28.337 24.2671
485 | v -56.8541 -32.7674 18.7839
486 | v -2.32961 -16.5798 65.5028
487 | v -3.97219 -15.1729 64.6522
488 | v -5.17186 -13.3528 63.5616
489 | v -5.28354 -11.5217 62.4091
490 | v 72.0919 37.7549 -18.694
491 | v 27.5504 16.1632 39.9092
492 | v 31.3847 15.8623 39.9631
493 | v 35.0941 15.9552 39.1893
494 | v 43.6127 16.8584 33.3952
495 | v 41.5263 16.4339 35.2313
496 | v 38.5255 16.2518 37.4982
497 | v 47.8763 21.3181 29.9144
498 | v 23.8368 16.736 39.3254
499 | v 20.5714 17.7043 38.7756
500 | v 14.505 13.0012 47.8089
501 | v 34.9062 30.849 40.7162
502 | v 30.8249 31.3486 41.1547
503 | v 26.4426 30.9499 40.3223
504 | v 42.4965 28.3606 37.6594
505 | v 38.8121 29.945 39.6285
506 | v 44.9679 26.8928 35.4567
507 | v 46.7818 25.1286 32.6002
508 | v 35.5013 -52.867 39.2394
509 | v 39.0858 -54.1175 35.2024
510 | v 43.672 -55.9629 28.2989
511 | v 55.5068 -45.8369 13.6645
512 | v 25.2084 -32.2141 50.9437
513 | v 28.0773 -29.5326 49.0909
514 | v 31.5647 -26.7785 47.0528
515 | v 28.2473 -22.0008 48.035
516 | v 10.5382 -14.7036 59.4985
517 | v 11.9283 -13.1127 61.5684
518 | v 10.9567 -13.7093 59.9439
519 | v 11.1226 -10.9251 59.835
520 | v 8.57562 -27.1957 60.6096
521 | v 8.01913 -11.8073 68.915
522 | v 5.9001 -9.24356 67.1066
523 | v 4.25506 -12.3923 65.8181
524 | v 4.20376 -10.9073 64.3756
525 | v 3.86551 -14.0703 66.9339
526 | v 4.76444 -16.6327 62.3931
527 | v 6.22828 -14.433 61.7774
528 | v 6.49122 -12.6525 60.6437
529 | v 10.504 -10.72 63.0401
530 | v 11.6203 -12.5326 64.2708
531 | v 9.8525 -11.9751 66.2623
532 | v 12.8278 -10.4315 66.8293
533 | v 4.26055 -27.1762 61.8245
534 | v 20.6078 -32.0727 54.079
535 | v 16.9423 -29.449 56.0347
536 | v 12.1699 -23.8706 57.3053
537 | v 10.1453 -16.3748 58.2781
538 | v 7.98517 -23.3738 60.1855
539 | v 12.8207 -28.1131 58.3596
540 | v 4.48389 -30.0364 62.1977
541 | v 8.95713 -30.5906 61.2265
542 | v 4.59072 -32.6245 62.9433
543 | v 4.07423 -39.2859 59.1188
544 | v 8.9847 -33.682 61.5972
545 | v 7.73099 -39.3102 57.6852
546 | v 12.897 -35.2221 59.5407
547 | v 11.0128 -39.5052 55.9005
548 | v 12.9781 -31.7976 59.2255
549 | v 16.6336 -33.4731 57.0887
550 | v 19.5765 -35.4967 54.7654
551 | v 23.1197 -34.9765 52.0751
552 | v 21.7085 -37.4597 52.3946
553 | v 18.7426 -40.7799 49.0716
554 | v 20.3929 -39.5636 51.838
555 | v 14.0079 -40.019 53.7162
556 | v 16.5578 -40.4844 51.3453
557 | v 18.5222 -38.4492 54.3816
558 | v 15.9862 -37.0867 57.0313
559 | v 31.9676 -51.5041 41.9807
560 | v 26.635 -48.7849 45.4057
561 | v 29.244 -50.3747 43.7938
562 | v 31.8568 -57.5231 40.2085
563 | v 34.7093 -60.2241 36.7412
564 | v 30.1291 -65.1489 39.4043
565 | v 24.6276 -51.3114 46.7179
566 | v 20.3877 -50.644 50.1323
567 | v 21.2 -43.3928 48.8591
568 | v 24.4459 -47.057 46.8655
569 | v 22.7924 -49.0631 48.3138
570 | v 19.9661 -44.313 50.5351
571 | v 16.3416 -40.9619 51.3033
572 | v 18.2494 -45.0067 52.3308
573 | v 19.2205 -47.6412 51.7296
574 | v 2.49701 -15.737 67.9446
575 | v 6.893 -12.2187 71.4695
576 | v 4.09898 -13.1904 73.5427
577 | v 5.30775 -9.82779 75.9394
578 | v 8.68542 -9.62962 72.8668
579 | v 5.8698 -4.40201 76.3058
580 | v 70.4559 47.9032 -11.1981
581 | v 35.6378 88.2588 32.8273
582 | v 54.8383 28.3617 28.0722
583 | v 17.1607 6.95435 49.05
584 | v 17.768 9.91688 46.4367
585 | v 13.7439 6.90573 53.5299
586 | v 13.2668 3.62821 55.7851
587 | v 14.0513 -5.09626 62.5207
588 | v 19.3351 0.858286 49.5976
589 | v 16.4986 -4.67142 52.5821
590 | v 15.7535 -9.40949 61.713
591 | v 14.1457 -7.67119 64.969
592 | v 14.1995 -11.9531 63.5616
593 | v 15.4846 -6.6756 59.9085
594 | v 16.4352 3.7932 51.3326
595 | v 20.3503 4.14232 47.6305
596 | v 21.1747 7.45129 45.4988
597 | v 32.1138 -18.3781 47.0534
598 | v 35.4432 -23.8392 45.3558
599 | v 39.746 -20.4616 43.1882
600 | v 36.3603 -14.1168 45.3082
601 | v 41.2232 -8.37051 42.0932
602 | v 48.8542 -6.86633 36.8996
603 | v 46.8787 0.75013 37.5615
604 | v 40.7469 0.105002 40.8173
605 | v 52.1906 2.7067 33.0458
606 | v 5.5545 0.271332 73.9834
607 | v 4.9479 11.9894 64.9408
608 | v 5.05198 16.0876 62.001
609 | v 26.0365 51.5545 52.4742
610 | v 14.2026 10.119 50.8298
611 | v 36.0001 38.6773 46.0894
612 | v 52.3422 45.0926 33.7068
613 | v 41.0921 37.6855 43.7738
614 | v 50.2135 33.8555 36.8991
615 | v 53.1342 31.5984 32.3152
616 | v 57.1647 29.0583 24.9217
617 | v 67.8873 58.0664 -3.98312
618 | v 13.716 34.3192 49.7241
619 | v 22.5132 29.0768 39.4228
620 | v 23.0096 37.329 49.3442
621 | v 19.6635 27.0005 37.9449
622 | v 26.0771 -42.1517 46.248
623 | v 28.2037 -42.5065 45.6426
624 | v 31.5797 -42.7793 44.7583
625 | v 35.4454 -42.552 42.9446
626 | v 38.9169 -41.7846 40.1886
627 | v 42.3373 -40.1515 36.9084
628 | v 62.0315 8.07823 18.1807
629 | v 41.7807 -27.3051 40.6546
630 | v 37.7399 -29.7887 43.2626
631 | v 34.1486 -32.0643 45.5954
632 | v 30.3532 -34.2181 47.8472
633 | v 27.3456 -35.9948 49.3589
634 | v 24.8378 -37.7374 50.0572
635 | v 23.0893 -39.2654 50.2316
636 | v 21.7826 -40.4538 49.6403
637 | v 20.3201 -40.9084 47.2326
638 | v 23.9179 -41.7806 46.848
639 | v 21.5856 -40.8076 45.9979
640 | v 22.7069 -41.4202 46.8373
641 | v 29.1076 -55.3852 42.8614
642 | v 26.7569 -53.429 44.956
643 | v 25.6176 -58.5179 44.6912
644 | v 21.8758 -53.295 48.4528
645 | v 23.6442 -55.9145 46.6797
646 | v 27.8372 -61.4358 42.3725
647 | v 50.0786 40.8827 38.3163
648 | v 53.823 37.7304 33.4134
649 | v 56.0017 40.6791 28.3047
650 | v 58.1731 35.8742 23.5638
651 | v 56.0053 34.0013 28.5012
652 | v 16.6492 -12.0572 57.0747
653 | v 14.8702 -12.9583 60.8288
654 | v 16.8331 -13.261 54.5738
655 | v 24.8158 -25.3317 50.0538
656 | v 14.6641 -14.154 59.0275
657 | v 29.6761 38.9352 48.0761
658 | v 33.8281 51.2826 48.5481
659 | v 41.1495 50.4427 43.9637
660 | v 44.9526 84.0744 26.5531
661 | v 52.7486 78.7773 19.3639
662 | v 64.3258 64.5705 4.21913
663 | v 60.6733 38.6937 16.7547
664 | v 58.2076 44.4693 22.0667
665 | v 54.5816 49.9457 27.9772
666 | v 43.3877 57.0174 39.4773
667 | v 36.0171 58.9693 44.7915
668 | v 27.8621 60.2283 49.1974
669 | v 18.7993 60.8435 52.4061
670 | v 59.8123 29.7885 19.7157
671 | v 60.9888 23.8005 17.0177
672 | v 4.41934 -36.8434 61.8472
673 | v 8.49308 -37.2304 60.184
674 | v 11.9433 -38.0043 58.0782
675 | v 14.8638 -39.1139 55.5019
676 | v 17.3244 -40.0409 52.9106
677 | v 19.3179 -40.5756 50.4749
678 | v 20.8098 -40.9596 48.5297
679 | v 22.0881 -41.0728 46.5311
680 | v 20.1999 -41.8053 48.9192
681 | v 19.004 -42.4295 50.2957
682 | v 17.2947 -42.6397 51.9076
683 | v 15.63 -40.4452 50.1347
684 | v 17.5096 -40.7175 48.3953
685 | v 21.2319 -40.7829 45.1374
686 | v 20.3224 -40.668 45.8345
687 | v 18.55 -40.5022 47.6674
688 | v 16.1063 -40.256 49.6708
689 | v 13.3622 -40.0384 51.7569
690 | v 10.2506 -39.8914 53.4201
691 | v 6.99801 -39.9538 54.8171
692 | v 3.52352 -40.0937 55.7985
693 | v 7.27936 -69.6621 55.0582
694 | v 5.47644 -61.1399 53.7596
695 | v 4.94403 -57.6106 53.9063
696 | v 4.59649 -54.0217 55.8509
697 | v 4.50684 -51.4239 58.0539
698 | v 4.48223 -48.3844 60.0232
699 | v 4.16698 -45.0047 60.0255
700 | v 3.95438 -42.245 58.713
701 | v 3.58028 -40.6172 56.9927
702 | v 13.6791 -68.9198 52.3108
703 | v 10.7075 -60.6432 52.3895
704 | v 9.73333 -57.0591 53.1874
705 | v 9.07971 -53.7147 55.1923
706 | v 8.79779 -50.9044 57.3583
707 | v 8.78429 -47.8086 59.014
708 | v 8.35585 -44.4232 58.8016
709 | v 7.91582 -41.8022 57.5008
710 | v 7.23431 -40.2204 55.6343
711 | v 13.3177 -40.1546 52.0599
712 | v 14.1416 -41.0662 53.1924
713 | v 15.0211 -43.1714 54.145
714 | v 15.9049 -45.8271 54.7406
715 | v 16.4824 -48.8792 54.0046
716 | v 17.2679 -52.0472 52.1643
717 | v 17.9623 -2.32707 51.0506
718 | v 19.0244 -67.2796 48.7601
719 | v 15.5381 -59.5552 50.5712
720 | v 14.3319 -56.2341 52.0127
721 | v 13.4377 -53.1429 53.9072
722 | v 12.9305 -49.9868 56.0618
723 | v 12.7436 -46.8352 57.2284
724 | v 12.0472 -43.7364 56.6569
725 | v 11.4416 -41.3826 55.4307
726 | v 10.4688 -39.9741 53.7898
727 | v 22.0343 -28.4746 52.3404
728 | v 17.2338 -9.78595 53.3666
729 | v 3.8804 -23.7663 61.9302
730 | v 16.365 -10.6262 59.3955
731 | v 69.3126 -11.8187 -26.6728
732 | v 17.2827 -24.4813 53.9563
733 | v 14.0809 -15.6469 57.3572
734 | v 16.5737 -8.21947 57.5685
735 | v 12.8888 0.356132 57.9191
736 | v 4.89401 7.98609 67.7735
737 | v 13.2341 -2.67979 60.1992
738 | v 5.187 4.18764 70.8807
739 | v 14.8174 -2.10392 54.7692
740 | v 15.5473 0.696028 53.163
741 | v 18.9814 -40.7612 46.7691
742 | v 19.3561 -40.7854 47.9995
743 | v 6.81904 -18.958 60.1609
744 | v 13.6154 -16.8604 55.2426
745 | v 21.0449 -21.3083 50.4996
746 | v 24.6382 -17.7484 48.6186
747 | v 28.172 -13.8259 48.062
748 | v 16.9938 -14.2305 52.5809
749 | v 18.139 -9.64861 51.2845
750 | v 20.589 -6.0639 49.6512
751 | v 16.1983 -6.47763 54.9796
752 | v 14.9082 -4.55323 57.2744
753 | v 22.6948 -2.33317 48.3644
754 | v 24.1647 1.35175 46.5322
755 | v 25.0896 5.13039 44.5484
756 | v 31.4727 -9.46854 46.8263
757 | v 34.1391 -4.41931 44.7404
758 | v 34.7812 1.30244 42.6486
759 | v 3.3699 -20.4747 62.34
760 | v 2.68531 -17.9149 63.4776
761 | v 17.0023 -9.85129 56.1086
762 | v 46.0886 36.1486 40.7477
763 | v 38.8605 44.5633 46.7022
764 | v 31.909 44.7013 50.1444
765 | v 24.4783 44.3771 53.3102
766 | v 59.0416 72.8036 12.0989
767 | v 49.6159 53.8831 33.9709
768 | v 47.4966 48.192 38.962
769 | v 45.0041 43.1542 42.8017
770 | v 18.468 -54.9653 50.324
771 | v 19.9069 -57.9253 48.6161
772 | v 21.6485 -61.0844 47.0555
773 | v 17.1258 -63.1159 49.6919
774 | v 23.5666 -64.6717 45.3291
775 | v 25.6234 -69.0397 42.9747
776 | v 20.8071 -72.21 46.9454
777 | v 15.2006 -74.5267 50.9648
778 | v 8.25168 -75.853 53.9896
779 | v 12.0006 -64.5266 52.4552
780 | v 6.28365 -64.8867 54.5762
781 | v 6.77793 34.598 54.08
782 | v 16.3934 43.3736 55.649
783 | v 17.5751 51.5095 55.189
784 | v 24.5359 91.3061 37.5439
785 | v 57.5203 11.6318 23.7694
786 | v 55.0911 -4.74866 30.5151
787 | v 58.0782 18.058 21.5737
788 | v 45.7069 17.7219 31.5117
789 | v 16.8764 24.1513 37.3948
790 | v 15.6903 20.9848 37.7116
791 | v 9.534 26.5088 47.9612
792 | v 5.51672 28.9674 53.5655
793 | v 8.43658 13.3422 59.1123
794 | v 9.38042 -1.36397 70.3894
795 | v 8.80438 2.21496 67.6376
796 | v 8.24168 9.4703 61.9229
797 | v 8.35504 5.77948 64.7486
798 | v 8.23595 21.2055 52.1289
799 | v 8.40945 17.1811 55.7287
800 | v 11.0901 10.1511 56.0801
801 | v 10.87 6.60283 58.7807
802 | v 11.0068 16.784 49.4605
803 | v 11.1869 13.6234 53.0596
804 | v 9.65262 -5.26767 72.4917
805 | v 12.1279 -6.32935 68.3393
806 | v 11.1213 -9.39187 69.4868
807 | v 62.0791 16.5466 16.1771
808 | v 70.5884 -1.06786 -26.795
809 | v 52.0297 10.936 29.9162
810 | v 48.8363 8.14687 33.7251
811 | v 44.6082 6.46758 37.0677
812 | v 39.6744 5.88084 39.5778
813 | v 34.7126 6.25913 41.1194
814 | v 30.003 7.32945 42.0281
815 | v 25.7402 8.76045 42.6913
816 | v 21.9425 10.4468 43.1637
817 | v 18.4627 12.5315 43.7365
818 | v 15.013 15.3114 44.582
819 | v 5.11864 20.2281 58.3631
820 | v 53.5138 14.8126 26.5735
821 | v 56.1582 5.97096 27.8477
822 | v 60.7285 -1.51987 22.1705
823 | v 52.1801 -63.7819 -7.39064
824 | v 21.5673 -40.8508 44.6876
825 | v 21.4944 -41.061 46.1365
826 | v 21.7417 -41.1493 46.8947
827 | v 22.541 -41.0748 47.8113
828 | v 23.9034 -40.7208 48.2802
829 | v 25.8818 -40.1854 48.1081
830 | v 28.44 -39.4286 47.4285
831 | v 31.7458 -38.6438 46.3075
832 | v 35.5342 -37.5342 44.1505
833 | v 38.9355 -35.963 41.3553
834 | v 42.6052 -34.1659 38.305
835 | v 20.1115 -40.776 45.7164
836 | v 20.5309 -40.7811 46.8271
837 | v 21.1111 -41.1677 47.536
838 | v 22.1587 -42.2481 47.7335
839 | v 25.3112 -44.4775 45.9096
840 | v 27.8109 -45.7121 44.7499
841 | v 30.755 -46.6735 43.6762
842 | v 34.2198 -47.3582 42.0754
843 | v 37.8744 -47.4339 39.448
844 | v 41.4422 -47.0895 35.7436
845 | v 45.7425 -46.192 30.4919
846 | v 54.553 19.4917 24.7983
847 | v 47.106 19.4677 30.3421
848 | v 47.605 23.7817 31.133
849 | v 55.1186 24.0936 25.4372
850 | v 58.1176 24.0655 21.8177
851 | v 8.18953 42.6364 56.2808
852 | v 8.83628 51.7241 56.2195
853 | v 9.41386 61.074 53.9271
854 | v 12.337 92.9586 40.7542
855 | v 18.2563 18.8326 38.2808
856 | v 4.96867 24.0693 55.662
857 | v 3.08566 -14.8376 70.6915
858 | v 4.79429 -13.1637 69.2058
859 | v 4.89452 -11.4996 68.366
860 | v 4.13455 -9.70666 67.288
861 | v 11.1998 19.7934 45.4503
862 | v 29.5954 3.06149 43.7063
863 | v 28.6998 -1.42023 45.7342
864 | v 26.8245 -5.71348 47.574
865 | v 24.2074 -9.88559 48.7786
866 | v 21.2218 -13.9955 49.1831
867 | v 17.9369 -17.4555 50.7899
868 | v 14.5744 -19.5658 53.7824
869 | v 10.6979 -19.6542 56.9806
870 | v 7.98586 -15.2858 60.265
871 | v 8.34002 -13.5783 59.7744
872 | v 9.17649 -10.1423 64.907
873 | v 11.9524 -3.2231 66.2829
874 | v 11.1882 -0.181179 63.8741
875 | v 10.8586 3.11878 61.3622
876 | v 44.1727 -16.9922 40.1974
877 | v 46.2584 -24.648 37.1253
878 | v 46.6893 -31.6392 34.5964
879 | v 46.3427 -38.6548 32.459
880 | v 50.4397 -15.1102 34.4076
881 | v 50.7784 -22.5907 32.2899
882 | v 50.6662 -29.4381 29.9554
883 | v 55.4734 -21.5263 26.2723
884 | v 55.7875 -13.559 28.1274
885 | v 60.5065 -12.7252 20.639
886 | v 59.4378 -21.227 19.5244
887 | v 60.2878 -29.7893 12.4532
888 | v 58.9254 -40.797 8.91461
889 | v 72.3678 26.2669 -23.7637
890 | v 62.7146 31.0804 12.5706
891 | v 64.5861 23.166 9.47689
892 | v 58.0392 -28.0762 18.9412
893 | v 50.4793 -50.4884 20.9723
894 | v 50.5789 -43.4253 24.4531
895 | v 50.6171 -36.8235 27.2997
896 | v 54.8657 -40.1533 18.0925
897 | v 54.2954 -34.649 22.4634
898 | v 57.9998 -35.666 15.0112
899 | v 54.8553 -28.337 24.2671
900 | v 56.8541 -32.7674 18.7839
901 | v 2.32961 -16.5798 65.5028
902 | v 3.97219 -15.1729 64.6522
903 | v 5.17186 -13.3528 63.5616
904 | v 5.28354 -11.5217 62.4091
905 | v -66.0565 -29.5634 -26.618
906 | v -62.8494 -42.1343 -24.4795
907 | v 46.3617 -69.9678 1.41213
908 | v 40.3253 -74.7601 9.14013
909 | v 33.6242 -79.1713 16.1885
910 | v 27.6906 -82.4568 22.4341
911 | v 22.5761 -84.6077 27.5772
912 | v 18.7505 -85.9695 30.6466
913 | v 14.2628 -87.1745 33.4455
914 | v 7.64815 -88.2783 35.671
915 | v -7.64815 -88.2783 35.671
916 | v -14.2628 -87.1745 33.4455
917 | v -18.7505 -85.9695 30.6466
918 | v -22.5761 -84.6077 27.5772
919 | v -27.6906 -82.4568 22.4341
920 | v -33.6242 -79.1713 16.1885
921 | v -40.3253 -74.7601 9.14013
922 | v -46.3617 -69.9678 1.41213
923 | v -30.5545 -78.6365 27.3319
924 | v -36.5999 -74.8133 21.7192
925 | v -43.1673 -70.0959 15.6279
926 | v -49.4451 -64.7372 8.43389
927 | v -55.18 -57.3392 0.884469
928 | v -60.2458 -50.0097 -7.39841
929 | v -63.7479 -39.8638 -13.3748
930 | v -66.0635 -28.6502 -16.5802
931 | v -67.7421 -19.8011 -18.5195
932 | v -69.5028 -9.00132 -19.1825
933 | v -44.2455 -62.7308 21.8913
934 | v -50.12 -57.4819 15.8152
935 | v -56.1564 -51.6969 8.40945
936 | v -60.4471 -44.6121 1.2625
937 | v -63.4195 -36.2684 -3.14005
938 | v -65.3785 -27.1732 -5.79603
939 | v -66.8231 -17.6043 -7.15141
940 | v -68.2243 -7.41248 -7.28497
941 | v -69.4348 2.49731 -8.41229
942 | v 67.9764 45.4709 -3.9932
943 | v 69.284 35.5857 -9.5861
944 | v 70.5536 25.1119 -15.079
945 | v 20.5081 -83.7779 35.6267
946 | v -70.5536 25.1119 -15.079
947 | v -69.284 35.5857 -9.5861
948 | v -67.9764 45.4709 -3.9932
949 | v -65.7182 53.8351 2.99179
950 | v -62.5354 60.9292 9.75949
951 | v -56.9373 68.1109 18.2391
952 | v -50.6336 73.4201 25.5262
953 | v -42.945 77.9014 32.7139
954 | v -33.8831 81.3388 39.036
955 | v -23.1421 83.3656 43.4913
956 | v -11.637 84.1028 46.4817
957 | v 0 84.0663 47.8159
958 | v 11.637 84.1028 46.4817
959 | v 23.1421 83.3656 43.4913
960 | v 33.8831 81.3388 39.036
961 | v 42.945 77.9014 32.7139
962 | v 50.6336 73.4201 25.5262
963 | v 56.9373 68.1109 18.2391
964 | v 62.5354 60.9292 9.75949
965 | v 65.7182 53.8351 2.99179
966 | v 71.1171 12.954 -17.9061
967 | v 71.6188 13.0347 -27.1589
968 | v -70.6445 1.13963 -18.9558
969 | v -71.1171 12.954 -17.9061
970 | v 37.0717 -63.7628 32.3309
971 | v 31.7028 -69.0564 36.2083
972 | v 26.7977 -73.3337 40.1826
973 | v 21.7783 -76.8417 44.1891
974 | v 15.9146 -79.6908 48.0467
975 | v 8.58587 -81.1523 50.8326
976 | v 0 -81.5855 51.8395
977 | v -8.58587 -81.1523 50.8326
978 | v -15.9146 -79.6908 48.0467
979 | v -21.7783 -76.8417 44.1891
980 | v -26.7977 -73.3337 40.1826
981 | v -31.7028 -69.0564 36.2083
982 | v -37.0717 -63.7628 32.3309
983 | v 15.6721 -83.459 43.6503
984 | v 8.45593 -84.9654 45.9743
985 | v -8.45593 -84.9654 45.9743
986 | v -15.6721 -83.459 43.6503
987 | v -21.6545 -80.7383 40.3993
988 | v -26.6984 -77.5455 36.8222
989 | v -31.9449 -73.7039 32.3126
990 | v -37.6601 -69.0838 27.4503
991 | v 36.5999 -74.8133 21.7192
992 | v 30.5545 -78.6365 27.3319
993 | v 25.2925 -81.5053 32.0754
994 | v 14.8268 -85.7652 38.692
995 | v 7.99208 -86.9443 40.9674
996 | v -7.99208 -86.9443 40.9674
997 | v -14.8268 -85.7652 38.692
998 | v -20.5081 -83.7779 35.6267
999 | v -25.2925 -81.5053 32.0754
1000 | v 70.6445 1.13963 -18.9558
1001 | v 69.5028 -9.00132 -19.1825
1002 | v 67.7421 -19.8011 -18.5195
1003 | v 66.0635 -28.6502 -16.5802
1004 | v 63.7479 -39.8638 -13.3748
1005 | v 60.2458 -50.0097 -7.39841
1006 | v 55.18 -57.3392 0.884469
1007 | v 49.4451 -64.7372 8.43389
1008 | v 43.1673 -70.0959 15.6279
1009 | v 68.2243 -7.41248 -7.28497
1010 | v 69.4348 2.49731 -8.41229
1011 | v 69.3285 14.4125 -7.07298
1012 | v 68.7383 23.8618 -5.32413
1013 | v 67.5174 33.5033 -2.3677
1014 | v 65.4622 41.6475 3.52851
1015 | v 63.4345 51.212 9.34234
1016 | v 59.4324 57.57 17.3282
1017 | v 54.5102 63.353 23.9931
1018 | v 48.1177 67.9789 30.8314
1019 | v 40.4629 71.5381 37.6133
1020 | v 31.8467 74.5436 43.2958
1021 | v 21.6345 75.8016 47.5915
1022 | v 10.7758 75.915 49.9213
1023 | v 0 75.7128 50.9221
1024 | v -69.3285 14.4125 -7.07298
1025 | v 62.1317 -32.627 5.25244
1026 | v 64.0556 -24.4358 3.17144
1027 | v 65.4877 -15.3651 2.0868
1028 | v 66.8147 -5.90421 1.40307
1029 | v 67.683 4.25237 1.13389
1030 | v 67.9111 13.8663 1.74251
1031 | v 66.636 23.6363 2.76626
1032 | v 64.9884 32.0479 6.05763
1033 | v 63.0257 40.8076 10.5286
1034 | v 60.5047 47.3059 16.5134
1035 | v 56.9177 53.5938 22.792
1036 | v 51.8525 58.3161 29.4753
1037 | v 45.4734 62.3256 35.6621
1038 | v 37.9251 64.9665 41.6646
1039 | v 29.5601 66.9025 46.5369
1040 | v 19.9906 67.5317 50.1907
1041 | v 9.94963 67.3527 52.271
1042 | v 0 67.1194 52.9799
1043 | v 62.1662 -22.4966 11.5883
1044 | v 63.6894 -13.764 11.3539
1045 | v 65.001 -3.86114 10.9453
1046 | v 65.5954 5.84801 9.8663
1047 | v 65.5259 14.8349 8.69052
1048 | v 0 -88.6095 36.5076
1049 | v 0 -87.3839 41.6367
1050 | v 0 -85.5317 46.6815
1051 | v 21.6545 -80.7383 40.3993
1052 | v 26.6984 -77.5455 36.8222
1053 | v 31.9449 -73.7039 32.3126
1054 | v 37.6601 -69.0838 27.4503
1055 | v 44.2455 -62.7308 21.8913
1056 | v 50.12 -57.4819 15.8152
1057 | v 56.1564 -51.6969 8.40945
1058 | v 60.4471 -44.6121 1.2625
1059 | v 63.4195 -36.2684 -3.14005
1060 | v 65.3785 -27.1732 -5.79603
1061 | v 66.8231 -17.6043 -7.15141
1062 | v 27.8547 19.0757 40.1786
1063 | v 31.7193 18.928 40.7641
1064 | v 35.7312 19.0381 39.953
1065 | v 39.1581 19.531 38.434
1066 | v 41.6854 20.2496 36.6855
1067 | v 43.4998 20.9537 35.0943
1068 | v 44.4682 21.6347 34.1337
1069 | v 45.0464 22.2184 33.4597
1070 | v 45.3808 22.9424 33.1803
1071 | v 44.8926 23.4876 34.1648
1072 | v 44.4005 23.9089 34.9749
1073 | v 43.4666 24.8162 36.3685
1074 | v 41.5619 26.1635 38.2484
1075 | v 38.4394 27.8679 40.1275
1076 | v 35.1876 28.7517 41.3755
1077 | v 31.4066 28.8798 41.9964
1078 | v 28.3447 28.5022 41.4353
1079 | v 24.5251 27.2005 40.0625
1080 | v 22.0943 25.5539 38.7305
1081 | v 18.9009 23.0445 37.2055
1082 | v 16.3133 20.9986 36.3625
1083 | v 18.843 20.3399 37.0029
1084 | v 21.3768 20.1608 37.9594
1085 | v 24.2352 19.6064 39.0103
1086 | v -27.8547 19.0757 40.1786
1087 | v -24.2352 19.6064 39.0103
1088 | v -21.3768 20.1608 37.9594
1089 | v -18.843 20.3399 37.0029
1090 | v -16.3133 20.9986 36.3625
1091 | v -18.9009 23.0445 37.2055
1092 | v -22.0943 25.5539 38.7305
1093 | v -24.5251 27.2005 40.0625
1094 | v -28.3447 28.5022 41.4353
1095 | v -31.4066 28.8798 41.9964
1096 | v -35.1876 28.7517 41.3755
1097 | v -38.4394 27.8679 40.1275
1098 | v -41.5619 26.1635 38.2484
1099 | v -43.4666 24.8162 36.3685
1100 | v -44.4005 23.9089 34.9749
1101 | v -44.8926 23.4876 34.1648
1102 | v -45.3808 22.9424 33.1803
1103 | v -45.0464 22.2184 33.4597
1104 | v -44.4682 21.6347 34.1337
1105 | v -43.4998 20.9537 35.0943
1106 | v -41.6854 20.2496 36.6855
1107 | v -39.1581 19.531 38.434
1108 | v -35.7312 19.0381 39.953
1109 | v -31.7193 18.928 40.7641
1110 | v 51.2188 20.6825 27.5329
1111 | v 50.0694 17.4265 28.5771
1112 | v 48.3018 14.9994 30.7912
1113 | v 45.4657 13.2047 33.3325
1114 | v 42.283 12.4439 35.6005
1115 | v 38.72 12.0615 37.5722
1116 | v 34.8337 12.0138 39.1324
1117 | v 30.6895 12.3555 40.2412
1118 | v 26.8063 13.1432 40.509
1119 | v 23.1935 14.1295 40.5186
1120 | v 19.7643 15.3699 40.4205
1121 | v 16.6134 16.9415 40.3247
1122 | v 12.8303 20.6342 40.2366
1123 | v 13.0525 25.6968 41.456
1124 | v 16.1946 30.4722 42.4492
1125 | v 22.4991 32.5783 42.8442
1126 | v 27.514 33.709 43.8453
1127 | v 32.7593 34.1601 43.8756
1128 | v 38.0115 33.7628 42.8741
1129 | v 42.7416 32.6655 40.8986
1130 | v 46.6375 30.8621 38.0029
1131 | v 48.8426 29.011 34.4131
1132 | v 50.0394 26.5203 31.0868
1133 | v 51.2458 23.7383 28.3676
1134 | v -50.0394 26.5203 31.0868
1135 | v -51.2458 23.7383 28.3676
1136 | v -51.2188 20.6825 27.5329
1137 | v -50.0694 17.4265 28.5771
1138 | v -48.3018 14.9994 30.7912
1139 | v -45.4657 13.2047 33.3325
1140 | v -42.283 12.4439 35.6005
1141 | v -38.72 12.0615 37.5722
1142 | v -34.8337 12.0138 39.1324
1143 | v -30.6895 12.3555 40.2412
1144 | v -26.8063 13.1432 40.509
1145 | v -23.1935 14.1295 40.5186
1146 | v -19.7643 15.3699 40.4205
1147 | v -16.6134 16.9415 40.3247
1148 | v -12.8303 20.6342 40.2366
1149 | v -13.0525 25.6968 41.456
1150 | v -16.1946 30.4722 42.4492
1151 | v -22.4991 32.5783 42.8442
1152 | v -27.514 33.709 43.8453
1153 | v -32.7593 34.1601 43.8756
1154 | v -38.0115 33.7628 42.8741
1155 | v -42.7416 32.6655 40.8986
1156 | v -46.6375 30.8621 38.0029
1157 | v -48.8426 29.011 34.4131
1158 | v 45.7437 21.1859 32.2539
1159 | v 45.1029 20.2575 32.9431
1160 | v 43.7163 19.547 34.5476
1161 | v 41.7267 18.7825 36.3111
1162 | v 38.9867 18.2015 38.2406
1163 | v 35.4877 17.7872 39.8853
1164 | v 31.7342 17.7711 40.6463
1165 | v 27.9105 18.0943 40.2394
1166 | v 24.4714 18.6315 39.3894
1167 | v 21.2049 19.2724 38.5236
1168 | v 18.5878 19.8456 37.7841
1169 | v 16.1155 20.7918 37.0268
1170 | v 18.4669 23.5957 37.7944
1171 | v 21.1147 26.3043 38.5231
1172 | v 23.6835 28.347 39.8228
1173 | v 27.1528 30.3512 40.8627
1174 | v 30.9576 30.7816 41.3826
1175 | v 34.7974 30.4881 40.6779
1176 | v 38.3094 29.5092 39.3909
1177 | v 41.667 27.8805 37.5974
1178 | v 44.0174 26.2975 35.9555
1179 | v 45.3601 24.8512 34.1961
1180 | v 46.0902 23.8141 32.7848
1181 | v 46.2781 22.4766 31.8435
1182 | v -46.2781 22.4766 31.8435
1183 | v -46.0902 23.8141 32.7848
1184 | v -45.3601 24.8512 34.1961
1185 | v -44.0174 26.2975 35.9555
1186 | v -41.667 27.8805 37.5974
1187 | v -38.3094 29.5092 39.3909
1188 | v -34.7974 30.4881 40.6779
1189 | v -30.9576 30.7816 41.3826
1190 | v -27.1528 30.3512 40.8627
1191 | v -23.6835 28.347 39.8228
1192 | v -21.1147 26.3043 38.5231
1193 | v -18.4669 23.5957 37.7944
1194 | v -16.1155 20.7918 37.0268
1195 | v -18.5878 19.8456 37.7841
1196 | v -21.2049 19.2724 38.5236
1197 | v -24.4714 18.6315 39.3894
1198 | v -27.9105 18.0943 40.2394
1199 | v -31.7342 17.7711 40.6463
1200 | v -35.4877 17.7872 39.8853
1201 | v -38.9867 18.2015 38.2406
1202 | v -41.7267 18.7825 36.3111
1203 | v -43.7163 19.547 34.5476
1204 | v -45.1029 20.2575 32.9431
1205 | v -45.7437 21.1859 32.2539
1206 | v -9.47555 -12.8716 59.0479
1207 | v 9.47555 -12.8716 59.0479
1208 | v 22.4547 -45.0757 48.214
1209 | v 21.1875 -46.5133 49.8136
1210 | v 23.3935 -43.3571 47.0428
1211 | v -23.3935 -43.3571 47.0428
1212 | v -22.4547 -45.0757 48.214
1213 | v -21.1875 -46.5133 49.8136
1214 | v 67.5797 -21.6229 -27.1015
1215 | v 66.0565 -29.5634 -26.618
1216 | v 62.8494 -42.1343 -24.4795
1217 | v 57.6003 -55.7751 -16.3893
1218 | v 18.0263 -40.9175 49.7935
1219 | v -18.0263 -40.9175 49.7935
1220 | v -19.004 -42.4295 50.2957
1221 | vt 0.500004 0.44659
1222 | vt 0.500002 0.433286
1223 | vt 0.500008 0.457836
1224 | vt 0.50001 0.467434
1225 | vt 0.500014 0.473486
1226 | vt 0.50001 0.487894
1227 | vt 0.500004 0.50398
1228 | vt 0.500002 0.512258
1229 | vt 0.500004 0.520412
1230 | vt 0.500006 0.532736
1231 | vt 0.500008 0.546218
1232 | vt 0.500004 0.560456
1233 | vt 0.500004 0.576574
1234 | vt 0.500002 0.594296
1235 | vt 0.500006 0.615818
1236 | vt 0.499998 0.693998
1237 | vt 0.49998 0.73877
1238 | vt 0.499934 0.783618
1239 | vt 0.499986 0.82432
1240 | vt 0.499998 0.850998
1241 | vt 0.499998 0.962704
1242 | vt 0.499996 0.422884
1243 | vt 0.499998 0.415054
1244 | vt 0.5 0.4073
1245 | vt 0.500002 0.4009
1246 | vt 0.499998 0.353958
1247 | vt 0.499998 0.346756
1248 | vt 0.499998 0.340006
1249 | vt 0.499998 0.327698
1250 | vt 0.499998 0.31549
1251 | vt 0.499996 0.30122
1252 | vt 0.499996 0.284708
1253 | vt 0.499998 0.264134
1254 | vt 0.499998 0.24575
1255 | vt 0.499996 0.227916
1256 | vt 0.499988 0.20483
1257 | vt 0.5 0.64813
1258 | vt 0.500008 0.495846
1259 | vt 0.500012 0.480108
1260 | vt 0.04768 0.756106
1261 | vt 0.337302 0.605786
1262 | vt 0.320506 0.600428
1263 | vt 0.3027 0.598698
1264 | vt 0.261456 0.614726
1265 | vt 0.27214 0.606824
1266 | vt 0.285812 0.601182
1267 | vt 0.24311 0.650056
1268 | vt 0.352118 0.613858
1269 | vt 0.363434 0.623724
1270 | vt 0.41233 0.60879
1271 | vt 0.293472 0.705802
1272 | vt 0.311796 0.708274
1273 | vt 0.333014 0.70588
1274 | vt 0.265974 0.692176
1275 | vt 0.278212 0.6999
1276 | vt 0.25624 0.683116
1277 | vt 0.248702 0.672574
1278 | vt 0.023802 0.655308
1279 | vt 0.338954 0.308258
1280 | vt 0.312648 0.29296
1281 | vt 0.27028 0.272952
1282 | vt 0.17754 0.32381
1283 | vt 0.389606 0.425528
1284 | vt 0.37339 0.433276
1285 | vt 0.354054 0.44042
1286 | vt 0.364172 0.459164
1287 | vt 0.440006 0.475466
1288 | vt 0.44031 0.485946
1289 | vt 0.4392 0.480462
1290 | vt 0.446856 0.481894
1291 | vt 0.465484 0.445428
1292 | vt 0.465708 0.49724
1293 | vt 0.465092 0.493018
1294 | vt 0.474544 0.48597
1295 | vt 0.469472 0.483964
1296 | vt 0.480056 0.48755
1297 | vt 0.472354 0.472568
1298 | vt 0.464258 0.473044
1299 | vt 0.458814 0.473916
1300 | vt 0.448964 0.486928
1301 | vt 0.44423 0.49222
1302 | vt 0.453122 0.49611
1303 | vt 0.450142 0.503648
1304 | vt 0.483152 0.446566
1305 | vt 0.41359 0.427304
1306 | vt 0.429394 0.436588
1307 | vt 0.443382 0.454506
1308 | vt 0.440306 0.472246
1309 | vt 0.463056 0.457332
1310 | vt 0.448066 0.44194
1311 | vt 0.484974 0.432868
1312 | vt 0.469364 0.43183
1313 | vt 0.486618 0.422306
1314 | vt 0.488024 0.40677
1315 | vt 0.472662 0.420154
1316 | vt 0.474692 0.404742
1317 | vt 0.458388 0.416308
1318 | vt 0.461854 0.401836
1319 | vt 0.453612 0.428168
1320 | vt 0.437598 0.42247
1321 | vt 0.423564 0.415246
1322 | vt 0.40234 0.416056
1323 | vt 0.413008 0.407028
1324 | vt 0.433928 0.389672
1325 | vt 0.422022 0.399448
1326 | vt 0.450318 0.3981
1327 | vt 0.440938 0.394024
1328 | vt 0.43184 0.405434
1329 | vt 0.444292 0.41133
1330 | vt 0.358198 0.320634
1331 | vt 0.385792 0.341234
1332 | vt 0.373386 0.331628
1333 | vt 0.355884 0.28139
1334 | vt 0.33504 0.26015
1335 | vt 0.360874 0.236564
1336 | vt 0.394614 0.325718
1337 | vt 0.413946 0.324808
1338 | vt 0.412156 0.359727
1339 | vt 0.396232 0.348814
1340 | vt 0.403422 0.33604
1341 | vt 0.417509 0.351862
1342 | vt 0.435141 0.357526
1343 | vt 0.42602 0.344755
1344 | vt 0.420469 0.335494
1345 | vt 0.488178 0.487572
1346 | vt 0.477018 0.50075
1347 | vt 0.488218 0.502908
1348 | vt 0.48663 0.51094
1349 | vt 0.47401 0.50863
1350 | vt 0.485318 0.519992
1351 | vt 0.07255 0.795354
1352 | vt 0.325402 0.928414
1353 | vt 0.195688 0.698242
1354 | vt 0.402826 0.58095
1355 | vt 0.39408 0.593002
1356 | vt 0.428954 0.579528
1357 | vt 0.434094 0.565144
1358 | vt 0.4431 0.528324
1359 | vt 0.391722 0.552538
1360 | vt 0.411076 0.533314
1361 | vt 0.43336 0.511416
1362 | vt 0.446316 0.515152
1363 | vt 0.438806 0.49904
1364 | vt 0.429772 0.524978
1365 | vt 0.409642 0.568442
1366 | vt 0.383548 0.564738
1367 | vt 0.375858 0.576982
1368 | vt 0.342838 0.469258
1369 | vt 0.33219 0.448416
1370 | vt 0.307236 0.45855
1371 | vt 0.318874 0.480906
1372 | vt 0.286284 0.501296
1373 | vt 0.246316 0.505574
1374 | vt 0.251092 0.536674
1375 | vt 0.282894 0.534404
1376 | vt 0.221232 0.549948
1377 | vt 0.484982 0.532752
1378 | vt 0.483524 0.575246
1379 | vt 0.481906 0.59251
1380 | vt 0.37423 0.816124
1381 | vt 0.422426 0.594922
1382 | vt 0.301672 0.760654
1383 | vt 0.22563 0.782818
1384 | vt 0.27305 0.75885
1385 | vt 0.226378 0.74405
1386 | vt 0.207564 0.722926
1387 | vt 0.180698 0.70396
1388 | vt 0.104894 0.82927
1389 | vt 0.43009 0.74737
1390 | vt 0.352724 0.698688
1391 | vt 0.377856 0.754988
1392 | vt 0.368366 0.687232
1393 | vt 0.390004 0.375701
1394 | vt 0.377349 0.375503
1395 | vt 0.36096 0.375491
1396 | vt 0.341606 0.375486
1397 | vt 0.319572 0.375488
1398 | vt 0.29734 0.375952
1399 | vt 0.15818 0.591908
1400 | vt 0.300326 0.433574
1401 | vt 0.325268 0.426304
1402 | vt 0.346622 0.420118
1403 | vt 0.366228 0.414608
1404 | vt 0.382332 0.4093
1405 | vt 0.395298 0.403456
1406 | vt 0.406146 0.397728
1407 | vt 0.415514 0.392654
1408 | vt 0.42934 0.385456
1409 | vt 0.400487 0.37571
1410 | vt 0.424512 0.375603
1411 | vt 0.409507 0.375692
1412 | vt 0.371766 0.29798
1413 | vt 0.384265 0.312623
1414 | vt 0.388721 0.278855
1415 | vt 0.406442 0.312408
1416 | vt 0.398282 0.296036
1417 | vt 0.376368 0.2598
1418 | vt 0.236036 0.769642
1419 | vt 0.213622 0.755538
1420 | vt 0.199802 0.765296
1421 | vt 0.17843 0.740876
1422 | vt 0.19394 0.73132
1423 | vt 0.42187 0.498598
1424 | vt 0.43322 0.49306
1425 | vt 0.41628 0.49139
1426 | vt 0.383766 0.449766
1427 | vt 0.429756 0.487688
1428 | vt 0.335244 0.759602
1429 | vt 0.00498 0.486201
1430 | vt 0.328798 0.812868
1431 | vt 0.287326 0.805616
1432 | vt 0.274804 0.911474
1433 | vt 0.227518 0.894102
1434 | vt 0.142176 0.853336
1435 | vt 0.104008 0.732104
1436 | vt 0.121776 0.770697
1437 | vt 0.146158 0.800583
1438 | vt 0.177969 0.824587
1439 | vt 0.255816 0.858605
1440 | vt 0.300284 0.873066
1441 | vt 0.348176 0.885416
1442 | vt 0.141018 0.760321
1443 | vt 0.166549 0.787343
1444 | vt 0.19511 0.810943
1445 | vt 0.267966 0.840722
1446 | vt 0.311338 0.853164
1447 | vt 0.35791 0.862332
1448 | vt 0.159546 0.75113
1449 | vt 0.181782 0.777526
1450 | vt 0.208894 0.799228
1451 | vt 0.27817 0.82429
1452 | vt 0.3208 0.834276
1453 | vt 0.36634 0.840756
1454 | vt 0.411572 0.846508
1455 | vt 0.16398 0.710564
1456 | vt 0.155788 0.674884
1457 | vt 0.124894 0.724214
1458 | vt 0.487618 0.414854
1459 | vt 0.474328 0.41233
1460 | vt 0.46064 0.408656
1461 | vt 0.448006 0.404328
1462 | vt 0.437056 0.399274
1463 | vt 0.428494 0.394158
1464 | vt 0.42317 0.388718
1465 | vt 0.417408 0.375647
1466 | vt 0.418983 0.363678
1467 | vt 0.430969 0.352548
1468 | vt 0.43986 0.362775
1469 | vt 0.434558 0.366032
1470 | vt 0.431365 0.375861
1471 | vt 0.435024 0.38286
1472 | vt 0.438346 0.386434
1473 | vt 0.444096 0.389872
1474 | vt 0.452288 0.393432
1475 | vt 0.462636 0.396336
1476 | vt 0.474762 0.39855
1477 | vt 0.488352 0.400134
1478 | vt 0.473006 0.227682
1479 | vt 0.478332 0.265318
1480 | vt 0.4804 0.285962
1481 | vt 0.482086 0.302356
1482 | vt 0.483568 0.316312
1483 | vt 0.484894 0.328462
1484 | vt 0.485706 0.340632
1485 | vt 0.48585 0.347318
1486 | vt 0.486378 0.35441
1487 | vt 0.447404 0.228846
1488 | vt 0.45591 0.2679
1489 | vt 0.459596 0.28832
1490 | vt 0.46298 0.304346
1491 | vt 0.46556 0.318168
1492 | vt 0.467652 0.330094
1493 | vt 0.469478 0.34225
1494 | vt 0.470246 0.348616
1495 | vt 0.471764 0.355616
1496 | vt 0.448173 0.359926
1497 | vt 0.444549 0.353876
1498 | vt 0.441393 0.348209
1499 | vt 0.437086 0.338709
1500 | vt 0.432674 0.327616
1501 | vt 0.427604 0.315312
1502 | vt 0.401552 0.541668
1503 | vt 0.423175 0.233984
1504 | vt 0.434986 0.273426
1505 | vt 0.439564 0.293136
1506 | vt 0.444308 0.308232
1507 | vt 0.44806 0.321552
1508 | vt 0.451133 0.333399
1509 | vt 0.453804 0.344659
1510 | vt 0.455856 0.35085
1511 | vt 0.458876 0.357504
1512 | vt 0.40103 0.440112
1513 | vt 0.411684 0.50885
1514 | vt 0.48219 0.45799
1515 | vt 0.426384 0.505776
1516 | vt 0.01481 0.537314
1517 | vt 0.419374 0.45281
1518 | vt 0.42611 0.482268
1519 | vt 0.421996 0.518434
1520 | vt 0.437694 0.552332
1521 | vt 0.484682 0.5605
1522 | vt 0.440688 0.540934
1523 | vt 0.484958 0.546294
1524 | vt 0.422786 0.546612
1525 | vt 0.416914 0.556644
1526 | vt 0.431723 0.369411
1527 | vt 0.425291 0.36661
1528 | vt 0.46284 0.46559
1529 | vt 0.424174 0.473776
1530 | vt 0.394048 0.464326
1531 | vt 0.375216 0.475062
1532 | vt 0.355256 0.48738
1533 | vt 0.409548 0.48343
1534 | vt 0.399308 0.507164
1535 | vt 0.386024 0.522358
1536 | vt 0.417612 0.526628
1537 | vt 0.42698 0.537254
1538 | vt 0.37401 0.536308
1539 | vt 0.364772 0.549922
1540 | vt 0.356622 0.563502
1541 | vt 0.337358 0.501276
1542 | vt 0.320736 0.51931
1543 | vt 0.310466 0.539794
1544 | vt 0.482956 0.467034
1545 | vt 0.485046 0.473544
1546 | vt 0.417106 0.509482
1547 | vt 0.247496 0.754048
1548 | vt 0.294846 0.78751
1549 | vt 0.333082 0.79311
1550 | vt 0.379228 0.79342
1551 | vt 0.183366 0.874944
1552 | vt 0.214554 0.843633
1553 | vt 0.229308 0.827429
1554 | vt 0.240842 0.814064
1555 | vt 0.254138 0.795928
1556 | vt 0.26423 0.779668
1557 | vt 0.421504 0.301204
1558 | vt 0.415636 0.282846
1559 | vt 0.408446 0.26367
1560 | vt 0.429796 0.253674
1561 | vt 0.399353 0.243835
1562 | vt 0.388004 0.220226
1563 | vt 0.414934 0.210684
1564 | vt 0.4418 0.206236
1565 | vt 0.470246 0.20449
1566 | vt 0.451898 0.247732
1567 | vt 0.475804 0.246298
1568 | vt 0.472612 0.740304
1569 | vt 0.427818 0.785984
1570 | vt 0.42106 0.817886
1571 | vt 0.404983 0.869579
1572 | vt 0.397609 0.89486
1573 | vt 0.37966 0.944954
1574 | vt 0.180892 0.603668
1575 | vt 0.208738 0.51728
1576 | vt 0.1743 0.638888
1577 | vt 0.250864 0.62624
1578 | vt 0.377838 0.672354
1579 | vt 0.378658 0.65419
1580 | vt 0.44213 0.674848
1581 | vt 0.478094 0.691632
1582 | vt 0.465038 0.59008
1583 | vt 0.471302 0.532048
1584 | vt 0.470628 0.545642
1585 | vt 0.467552 0.573646
1586 | vt 0.46944 0.559152
1587 | vt 0.454988 0.639656
1588 | vt 0.461666 0.611664
1589 | vt 0.447568 0.586858
1590 | vt 0.451334 0.570322
1591 | vt 0.43221 0.625724
1592 | vt 0.441822 0.605014
1593 | vt 0.472096 0.51921
1594 | vt 0.459156 0.517876
1595 | vt 0.46193 0.506312
1596 | vt 0.153736 0.635972
1597 | vt 0.021244 0.591508
1598 | vt 0.214182 0.592
1599 | vt 0.232516 0.572886
1600 | vt 0.256374 0.561916
1601 | vt 0.2816 0.557954
1602 | vt 0.306036 0.558404
1603 | vt 0.329086 0.566174
1604 | vt 0.349652 0.576338
1605 | vt 0.368064 0.58849
1606 | vt 0.384112 0.603356
1607 | vt 0.39958 0.61899
1608 | vt 0.48073 0.615264
1609 | vt 0.200356 0.61548
1610 | vt 0.197058 0.573466
1611 | vt 0.171854 0.53871
1612 | vt 0.130829 0.397195
1613 | vt 0.106442 0.185814
1614 | vt 0.432552 0.379642
1615 | vt 0.426508 0.3811
1616 | vt 0.420052 0.382724
1617 | vt 0.4121 0.384722
1618 | vt 0.402698 0.38721
1619 | vt 0.391958 0.39006
1620 | vt 0.378514 0.39295
1621 | vt 0.362146 0.39544
1622 | vt 0.342576 0.398856
1623 | vt 0.321216 0.402638
1624 | vt 0.297814 0.4072
1625 | vt 0.430915 0.372726
1626 | vt 0.424344 0.371052
1627 | vt 0.418014 0.369704
1628 | vt 0.410445 0.367885
1629 | vt 0.392269 0.3624
1630 | vt 0.380127 0.358198
1631 | vt 0.365645 0.352835
1632 | vt 0.348242 0.346824
1633 | vt 0.327254 0.341054
1634 | vt 0.301864 0.335966
1635 | vt 0.268574 0.333496
1636 | vt 0.19326 0.642134
1637 | vt 0.244388 0.638634
1638 | vt 0.244468 0.661288
1639 | vt 0.192294 0.67031
1640 | vt 0.17417 0.672876
1641 | vt 0.466764 0.78447
1642 | vt 0.461514 0.820502
1643 | vt 0.456264 0.850666
1644 | vt 0.452666 0.873498
1645 | vt 0.448565 0.900734
1646 | vt 0.438428 0.957896
1647 | vt 0.372448 0.63666
1648 | vt 0.478848 0.646124
1649 | vt 0.487422 0.495046
1650 | vt 0.478624 0.494392
1651 | vt 0.472514 0.492506
1652 | vt 0.46866 0.489096
1653 | vt 0.416504 0.63962
1654 | vt 0.335252 0.550874
1655 | vt 0.344408 0.535274
1656 | vt 0.356682 0.519786
1657 | vt 0.370732 0.504648
1658 | vt 0.385428 0.488236
1659 | vt 0.403226 0.47459
1660 | vt 0.422246 0.466334
1661 | vt 0.441404 0.464092
1662 | vt 0.453344 0.470712
1663 | vt 0.450204 0.473028
1664 | vt 0.454538 0.491896
1665 | vt 0.457142 0.530664
1666 | vt 0.455748 0.543886
1667 | vt 0.454294 0.556764
1668 | vt 0.278288 0.468962
1669 | vt 0.273914 0.439964
1670 | vt 0.271102 0.412748
1671 | vt 0.269646 0.377166
1672 | vt 0.244718 0.477522
1673 | vt 0.242166 0.447234
1674 | vt 0.239776 0.41676
1675 | vt 0.209254 0.451062
1676 | vt 0.207894 0.484302
1677 | vt 0.17338 0.488338
1678 | vt 0.176798 0.44963
1679 | vt 0.13037 0.634153
1680 | vt 0.130233 0.586344
1681 | vt 0.156926 0.409792
1682 | vt 0.14832 0.357198
1683 | vt 0.057452 0.24178
1684 | vt 0.134854 0.533896
1685 | vt 0.106258 0.533001
1686 | vt 0.111497 0.48455
1687 | vt 0.090609 0.690325
1688 | vt 0.029666 0.708354
1689 | vt 0.11896 0.44105
1690 | vt 0.140963 0.48749
1691 | vt 0.148586 0.446486
1692 | vt 0.106093 0.584871
1693 | vt 0.109035 0.636273
1694 | vt 0.114484 0.68417
1695 | vt 0.143918 0.71761
1696 | vt 0.133728 0.678098
1697 | vt 0.18375 0.41726
1698 | vt 0.214844 0.296942
1699 | vt 0.229234 0.34399
1700 | vt 0.237882 0.383338
1701 | vt 0.197928 0.359288
1702 | vt 0.208218 0.39046
1703 | vt 0.174858 0.381464
1704 | vt 0.209758 0.419882
1705 | vt 0.18884 0.39662
1706 | vt 0.48713 0.480736
1707 | vt 0.478408 0.480058
1708 | vt 0.471746 0.478884
1709 | vt 0.46612 0.47795
1710 | vt 0.952326 0.756098
1711 | vt 0.662696 0.605786
1712 | vt 0.679494 0.60043
1713 | vt 0.6973 0.598706
1714 | vt 0.738482 0.614778
1715 | vt 0.72784 0.60686
1716 | vt 0.714178 0.601192
1717 | vt 0.756754 0.649862
1718 | vt 0.647876 0.613856
1719 | vt 0.636566 0.623724
1720 | vt 0.58768 0.608756
1721 | vt 0.706514 0.705786
1722 | vt 0.688238 0.708342
1723 | vt 0.667 0.706048
1724 | vt 0.734078 0.69208
1725 | vt 0.721812 0.699788
1726 | vt 0.743814 0.683074
1727 | vt 0.751324 0.672506
1728 | vt 0.661026 0.308242
1729 | vt 0.687332 0.292896
1730 | vt 0.7297 0.27284
1731 | vt 0.822432 0.323818
1732 | vt 0.6104 0.425572
1733 | vt 0.62661 0.433326
1734 | vt 0.64595 0.440462
1735 | vt 0.635826 0.459216
1736 | vt 0.560092 0.475506
1737 | vt 0.559782 0.486048
1738 | vt 0.560926 0.480514
1739 | vt 0.553176 0.481984
1740 | vt 0.534532 0.445384
1741 | vt 0.534318 0.497266
1742 | vt 0.534934 0.493064
1743 | vt 0.525444 0.485972
1744 | vt 0.530518 0.48396
1745 | vt 0.519988 0.487554
1746 | vt 0.527706 0.472552
1747 | vt 0.535794 0.473026
1748 | vt 0.54123 0.473888
1749 | vt 0.55107 0.486898
1750 | vt 0.55583 0.492244
1751 | vt 0.546914 0.49612
1752 | vt 0.549888 0.50368
1753 | vt 0.516868 0.446508
1754 | vt 0.586422 0.427334
1755 | vt 0.570616 0.436586
1756 | vt 0.556644 0.45449
1757 | vt 0.559752 0.472254
1758 | vt 0.536982 0.457306
1759 | vt 0.551948 0.441914
1760 | vt 0.51504 0.432838
1761 | vt 0.530646 0.431788
1762 | vt 0.513384 0.422306
1763 | vt 0.511978 0.406756
1764 | vt 0.527352 0.420118
1765 | vt 0.525318 0.404722
1766 | vt 0.541618 0.416264
1767 | vt 0.53816 0.40182
1768 | vt 0.546392 0.428136
1769 | vt 0.562406 0.422462
1770 | vt 0.57645 0.415276
1771 | vt 0.597676 0.4161
1772 | vt 0.587002 0.407111
1773 | vt 0.566051 0.389672
1774 | vt 0.577837 0.399514
1775 | vt 0.549704 0.398092
1776 | vt 0.559068 0.394016
1777 | vt 0.568151 0.405458
1778 | vt 0.55571 0.411306
1779 | vt 0.641784 0.320638
1780 | vt 0.614206 0.34124
1781 | vt 0.626602 0.331636
1782 | vt 0.644096 0.281378
1783 | vt 0.66495 0.260118
1784 | vt 0.639078 0.23664
1785 | vt 0.605376 0.325742
1786 | vt 0.586019 0.324817
1787 | vt 0.58783 0.359674
1788 | vt 0.60378 0.348816
1789 | vt 0.59657 0.336058
1790 | vt 0.582579 0.351725
1791 | vt 0.564883 0.357462
1792 | vt 0.574067 0.344628
1793 | vt 0.579518 0.33545
1794 | vt 0.511874 0.487562
1795 | vt 0.52301 0.50073
1796 | vt 0.511808 0.502888
1797 | vt 0.513386 0.510918
1798 | vt 0.526006 0.508608
1799 | vt 0.514702 0.51997
1800 | vt 0.92745 0.795354
1801 | vt 0.674616 0.928332
1802 | vt 0.80437 0.698302
1803 | vt 0.597186 0.580934
1804 | vt 0.605932 0.592992
1805 | vt 0.57107 0.579502
1806 | vt 0.565934 0.565128
1807 | vt 0.556974 0.528272
1808 | vt 0.608284 0.55255
1809 | vt 0.588986 0.533296
1810 | vt 0.566776 0.511184
1811 | vt 0.553734 0.515104
1812 | vt 0.561322 0.499254
1813 | vt 0.570392 0.524852
1814 | vt 0.590376 0.568434
1815 | vt 0.616454 0.564728
1816 | vt 0.624142 0.576982
1817 | vt 0.65716 0.469316
1818 | vt 0.667816 0.448438
1819 | vt 0.692764 0.458562
1820 | vt 0.68112 0.480964
1821 | vt 0.71372 0.501316
1822 | vt 0.753686 0.505574
1823 | vt 0.748898 0.536656
1824 | vt 0.71704 0.534408
1825 | vt 0.77874 0.549926
1826 | vt 0.515048 0.532726
1827 | vt 0.5165 0.575202
1828 | vt 0.51808 0.592474
1829 | vt 0.625786 0.816124
1830 | vt 0.577586 0.594906
1831 | vt 0.69833 0.760652
1832 | vt 0.774364 0.782814
1833 | vt 0.726952 0.758854
1834 | vt 0.77363 0.744068
1835 | vt 0.792486 0.722976
1836 | vt 0.819302 0.704004
1837 | vt 0.895096 0.829276
1838 | vt 0.569878 0.747386
1839 | vt 0.64723 0.698782
1840 | vt 0.622148 0.754982
1841 | vt 0.631364 0.68728
1842 | vt 0.610066 0.375662
1843 | vt 0.622684 0.375482
1844 | vt 0.63905 0.375482
1845 | vt 0.65839 0.375482
1846 | vt 0.68042 0.375482
1847 | vt 0.702644 0.375948
1848 | vt 0.841796 0.591982
1849 | vt 0.699666 0.433586
1850 | vt 0.674742 0.426314
1851 | vt 0.653386 0.420132
1852 | vt 0.633776 0.414624
1853 | vt 0.617682 0.409316
1854 | vt 0.604724 0.403466
1855 | vt 0.593862 0.39775
1856 | vt 0.58447 0.39269
1857 | vt 0.570696 0.385478
1858 | vt 0.599642 0.37566
1859 | vt 0.575721 0.375665
1860 | vt 0.590638 0.37566
1861 | vt 0.628218 0.297984
1862 | vt 0.615704 0.31264
1863 | vt 0.611256 0.27886
1864 | vt 0.593529 0.312455
1865 | vt 0.60171 0.296054
1866 | vt 0.623604 0.259828
1867 | vt 0.763962 0.769642
1868 | vt 0.78637 0.75554
1869 | vt 0.800184 0.765286
1870 | vt 0.821558 0.740886
1871 | vt 0.806068 0.73135
1872 | vt 0.578106 0.498114
1873 | vt 0.567162 0.49353
1874 | vt 0.583658 0.49105
1875 | vt 0.616232 0.449806
1876 | vt 0.570638 0.487992
1877 | vt 0.664768 0.759604
1878 | vt 0.671204 0.81287
1879 | vt 0.712674 0.805616
1880 | vt 0.725234 0.911366
1881 | vt 0.772506 0.894054
1882 | vt 0.85781 0.853356
1883 | vt 0.840434 0.751132
1884 | vt 0.818202 0.777516
1885 | vt 0.7911 0.799224
1886 | vt 0.72183 0.82429
1887 | vt 0.6792 0.834276
1888 | vt 0.633664 0.840758
1889 | vt 0.588436 0.846512
1890 | vt 0.836004 0.71061
1891 | vt 0.844162 0.675002
1892 | vt 0.51238 0.414838
1893 | vt 0.525678 0.412298
1894 | vt 0.539372 0.408624
1895 | vt 0.552006 0.404302
1896 | vt 0.562937 0.399262
1897 | vt 0.571472 0.39416
1898 | vt 0.577044 0.388759
1899 | vt 0.582709 0.375658
1900 | vt 0.580782 0.363788
1901 | vt 0.576922 0.357615
1902 | vt 0.569175 0.352423
1903 | vt 0.560066 0.362657
1904 | vt 0.565385 0.36601
1905 | vt 0.56886 0.375876
1906 | vt 0.565063 0.382841
1907 | vt 0.561352 0.386383
1908 | vt 0.55585 0.389847
1909 | vt 0.54773 0.393422
1910 | vt 0.537382 0.396328
1911 | vt 0.52525 0.398544
1912 | vt 0.511652 0.40013
1913 | vt 0.526972 0.227692
1914 | vt 0.521668 0.265312
1915 | vt 0.519596 0.285958
1916 | vt 0.517906 0.302372
1917 | vt 0.516422 0.316328
1918 | vt 0.515096 0.328482
1919 | vt 0.51429 0.340636
1920 | vt 0.514148 0.347316
1921 | vt 0.51362 0.354406
1922 | vt 0.552504 0.228928
1923 | vt 0.544092 0.26789
1924 | vt 0.540406 0.288308
1925 | vt 0.53701 0.304356
1926 | vt 0.534412 0.318202
1927 | vt 0.53231 0.330124
1928 | vt 0.53051 0.34225
1929 | vt 0.529746 0.348614
1930 | vt 0.528226 0.35562
1931 | vt 0.551711 0.359843
1932 | vt 0.555624 0.353729
1933 | vt 0.559031 0.34784
1934 | vt 0.562976 0.33851
1935 | vt 0.567312 0.327564
1936 | vt 0.572374 0.315319
1937 | vt 0.598508 0.541676
1938 | vt 0.576728 0.234072
1939 | vt 0.56502 0.273414
1940 | vt 0.560442 0.29313
1941 | vt 0.555686 0.308222
1942 | vt 0.551922 0.321498
1943 | vt 0.548878 0.333174
1944 | vt 0.546262 0.344556
1945 | vt 0.544179 0.350819
1946 | vt 0.541076 0.357506
1947 | vt 0.598974 0.440136
1948 | vt 0.588402 0.508614
1949 | vt 0.517846 0.457944
1950 | vt 0.573706 0.505168
1951 | vt 0.98519 0.537312
1952 | vt 0.58064 0.452812
1953 | vt 0.574146 0.482396
1954 | vt 0.578194 0.518078
1955 | vt 0.562336 0.552316
1956 | vt 0.51535 0.560462
1957 | vt 0.55937 0.540898
1958 | vt 0.515084 0.546262
1959 | vt 0.577242 0.5466
1960 | vt 0.58312 0.556642
1961 | vt 0.568407 0.369364
1962 | vt 0.574466 0.366757
1963 | vt 0.537214 0.465572
1964 | vt 0.5759 0.473782
1965 | vt 0.605952 0.464344
1966 | vt 0.624774 0.4751
1967 | vt 0.644734 0.487444
1968 | vt 0.590516 0.483474
1969 | vt 0.600738 0.507198
1970 | vt 0.613972 0.522386
1971 | vt 0.582512 0.526508
1972 | vt 0.573126 0.53721
1973 | vt 0.625978 0.536346
1974 | vt 0.635208 0.549938
1975 | vt 0.643368 0.563516
1976 | vt 0.66263 0.501354
1977 | vt 0.67925 0.519384
1978 | vt 0.689528 0.539808
1979 | vt 0.51709 0.467002
1980 | vt 0.515018 0.473526
1981 | vt 0.583004 0.509008
1982 | vt 0.752506 0.754058
1983 | vt 0.705154 0.78751
1984 | vt 0.666926 0.793112
1985 | vt 0.620778 0.793418
1986 | vt 0.816628 0.874954
1987 | vt 0.759156 0.814064
1988 | vt 0.745862 0.795926
1989 | vt 0.73577 0.779666
1990 | vt 0.578479 0.30124
1991 | vt 0.584364 0.282856
1992 | vt 0.591538 0.263702
1993 | vt 0.570178 0.253718
1994 | vt 0.600586 0.24389
1995 | vt 0.61187 0.220472
1996 | vt 0.584848 0.21107
1997 | vt 0.557954 0.20657
1998 | vt 0.529694 0.204546
1999 | vt 0.548086 0.247756
2000 | vt 0.524196 0.2463
2001 | vt 0.527284 0.74031
2002 | vt 0.572084 0.785962
2003 | vt 0.578932 0.817886
2004 | vt 0.620336 0.944962
2005 | vt 0.818966 0.603718
2006 | vt 0.791268 0.517274
2007 | vt 0.825628 0.63897
2008 | vt 0.749078 0.626262
2009 | vt 0.621986 0.672326
2010 | vt 0.62135 0.654224
2011 | vt 0.557858 0.674846
2012 | vt 0.52188 0.691638
2013 | vt 0.534972 0.590022
2014 | vt 0.528718 0.532034
2015 | vt 0.529398 0.545624
2016 | vt 0.532476 0.573604
2017 | vt 0.530596 0.55912
2018 | vt 0.544978 0.639644
2019 | vt 0.538296 0.611616
2020 | vt 0.55245 0.586814
2021 | vt 0.548694 0.57029
2022 | vt 0.56778 0.625714
2023 | vt 0.558174 0.604972
2024 | vt 0.52792 0.519196
2025 | vt 0.540866 0.517854
2026 | vt 0.538086 0.506292
2027 | vt 0.846208 0.636162
2028 | vt 0.978756 0.591506
2029 | vt 0.785832 0.591982
2030 | vt 0.76758 0.572764
2031 | vt 0.743644 0.561888
2032 | vt 0.71834 0.557884
2033 | vt 0.693956 0.558398
2034 | vt 0.670872 0.566136
2035 | vt 0.650306 0.576324
2036 | vt 0.631894 0.588458
2037 | vt 0.615844 0.603336
2038 | vt 0.600418 0.618984
2039 | vt 0.519216 0.615198
2040 | vt 0.7998 0.615458
2041 | vt 0.802808 0.573526
2042 | vt 0.828136 0.538692
2043 | vt 0.893532 0.185612
2044 | vt 0.567691 0.379605
2045 | vt 0.57363 0.381122
2046 | vt 0.58029 0.382715
2047 | vt 0.588094 0.384731
2048 | vt 0.597344 0.387208
2049 | vt 0.608078 0.390052
2050 | vt 0.621512 0.39295
2051 | vt 0.637866 0.395442
2052 | vt 0.657426 0.398856
2053 | vt 0.678786 0.402638
2054 | vt 0.70217 0.407212
2055 | vt 0.569295 0.372697
2056 | vt 0.575806 0.371091
2057 | vt 0.582098 0.369707
2058 | vt 0.589687 0.367814
2059 | vt 0.607788 0.362356
2060 | vt 0.61988 0.358176
2061 | vt 0.634352 0.352822
2062 | vt 0.651748 0.346822
2063 | vt 0.672726 0.341044
2064 | vt 0.698112 0.335942
2065 | vt 0.731386 0.333466
2066 | vt 0.806706 0.642174
2067 | vt 0.755476 0.638612
2068 | vt 0.755538 0.66122
2069 | vt 0.807706 0.670356
2070 | vt 0.825788 0.672932
2071 | vt 0.53312 0.78448
2072 | vt 0.538458 0.820512
2073 | vt 0.543736 0.850668
2074 | vt 0.561564 0.957912
2075 | vt 0.627558 0.636658
2076 | vt 0.521118 0.646102
2077 | vt 0.512628 0.49503
2078 | vt 0.521412 0.494394
2079 | vt 0.527478 0.492532
2080 | vt 0.531332 0.489104
2081 | vt 0.58349 0.63962
2082 | vt 0.664718 0.550872
2083 | vt 0.65556 0.535328
2084 | vt 0.643302 0.519874
2085 | vt 0.629248 0.5047
2086 | vt 0.614578 0.488256
2087 | vt 0.59679 0.47458
2088 | vt 0.577782 0.466324
2089 | vt 0.558642 0.464086
2090 | vt 0.546724 0.470712
2091 | vt 0.549868 0.47303
2092 | vt 0.545506 0.491906
2093 | vt 0.542898 0.53064
2094 | vt 0.544286 0.543866
2095 | vt 0.545742 0.556742
2096 | vt 0.721714 0.468964
2097 | vt 0.726076 0.439982
2098 | vt 0.728876 0.412774
2099 | vt 0.730316 0.377174
2100 | vt 0.755282 0.477522
2101 | vt 0.757818 0.447252
2102 | vt 0.760192 0.416782
2103 | vt 0.79073 0.451066
2104 | vt 0.792106 0.4843
2105 | vt 0.826608 0.488328
2106 | vt 0.823188 0.449624
2107 | vt 0.843056 0.409784
2108 | vt 0.851662 0.357212
2109 | vt 0.970346 0.70835
2110 | vt 0.856068 0.717658
2111 | vt 0.866248 0.678242
2112 | vt 0.816228 0.417248
2113 | vt 0.78512 0.296916
2114 | vt 0.770718 0.34397
2115 | vt 0.76206 0.383342
2116 | vt 0.802022 0.359264
2117 | vt 0.791728 0.390448
2118 | vt 0.825108 0.381446
2119 | vt 0.790212 0.419884
2120 | vt 0.811124 0.396602
2121 | vt 0.512932 0.480732
2122 | vt 0.52164 0.480054
2123 | vt 0.528282 0.478866
2124 | vt 0.53388 0.477951
2125 | vt 0.010436 0.426536
2126 | vt 0.023698 0.334805
2127 | vt 0.836414 0.150259
2128 | vt 0.777341 0.12889
2129 | vt 0.721412 0.115639
2130 | vt 0.671358 0.108598
2131 | vt 0.632529 0.105045
2132 | vt 0.607108 0.10502
2133 | vt 0.578277 0.10439
2134 | vt 0.539587 0.101135
2135 | vt 0.460559 0.101026
2136 | vt 0.421994 0.103928
2137 | vt 0.393092 0.104611
2138 | vt 0.367554 0.104746
2139 | vt 0.328588 0.108424
2140 | vt 0.278419 0.115555
2141 | vt 0.222505 0.129124
2142 | vt 0.163397 0.150397
2143 | vt 0.326013 0.14203
2144 | vt 0.280558 0.153629
2145 | vt 0.228535 0.170657
2146 | vt 0.171939 0.196743
2147 | vt 0.12955 0.236409
2148 | vt 0.088309 0.286146
2149 | vt 0.064244 0.358983
2150 | vt 0.052092 0.428332
2151 | vt 0.048404 0.483551
2152 | vt 0.048586 0.53443
2153 | vt 0.244915 0.217741
2154 | vt 0.192329 0.248788
2155 | vt 0.154084 0.283908
2156 | vt 0.121303 0.327309
2157 | vt 0.099791 0.379968
2158 | vt 0.087282 0.434702
2159 | vt 0.082277 0.483034
2160 | vt 0.078301 0.533033
2161 | vt 0.079353 0.585646
2162 | vt 0.900785 0.782513
2163 | vt 0.921505 0.742558
2164 | vt 0.936904 0.697702
2165 | vt 0.605114 0.13282
2166 | vt 0.06312 0.697695
2167 | vt 0.078516 0.742553
2168 | vt 0.099227 0.782507
2169 | vt 0.127501 0.813197
2170 | vt 0.160963 0.838018
2171 | vt 0.199661 0.859052
2172 | vt 0.242553 0.876196
2173 | vt 0.28818 0.892439
2174 | vt 0.337734 0.907008
2175 | vt 0.38935 0.920116
2176 | vt 0.444054 0.928439
2177 | vt 0.499998 0.930412
2178 | vt 0.55594 0.928446
2179 | vt 0.610644 0.920118
2180 | vt 0.66227 0.906972
2181 | vt 0.711833 0.892391
2182 | vt 0.757456 0.876171
2183 | vt 0.800336 0.859053
2184 | vt 0.839031 0.838025
2185 | vt 0.872497 0.813201
2186 | vt 0.944124 0.645972
2187 | vt 0.976197 0.655311
2188 | vt 0.051184 0.588279
2189 | vt 0.055879 0.645962
2190 | vt 0.689086 0.233454
2191 | vt 0.654686 0.210547
2192 | vt 0.623032 0.195511
2193 | vt 0.593206 0.186578
2194 | vt 0.563559 0.18183
2195 | vt 0.531883 0.177953
2196 | vt 0.499997 0.176897
2197 | vt 0.46807 0.177739
2198 | vt 0.436352 0.18104
2199 | vt 0.406654 0.185788
2200 | vt 0.376871 0.195069
2201 | vt 0.345284 0.21042
2202 | vt 0.310923 0.233521
2203 | vt 0.569315 0.155811
2204 | vt 0.534638 0.152287
2205 | vt 0.465435 0.15189
2206 | vt 0.430821 0.154794
2207 | vt 0.399792 0.159413
2208 | vt 0.368515 0.166467
2209 | vt 0.333358 0.178466
2210 | vt 0.292678 0.194473
2211 | vt 0.719358 0.153685
2212 | vt 0.673971 0.142267
2213 | vt 0.6359 0.136175
2214 | vt 0.574092 0.129527
2215 | vt 0.537072 0.127442
2216 | vt 0.463067 0.127087
2217 | vt 0.426164 0.128692
2218 | vt 0.395063 0.132037
2219 | vt 0.36414 0.135665
2220 | vt 0.948816 0.588278
2221 | vt 0.951413 0.534423
2222 | vt 0.951586 0.483539
2223 | vt 0.947916 0.428333
2224 | vt 0.93582 0.358988
2225 | vt 0.911733 0.286162
2226 | vt 0.870464 0.236386
2227 | vt 0.828012 0.196649
2228 | vt 0.771353 0.170623
2229 | vt 0.921686 0.533008
2230 | vt 0.920643 0.585649
2231 | vt 0.916164 0.640108
2232 | vt 0.909414 0.690361
2233 | vt 0.896014 0.732125
2234 | vt 0.878233 0.770708
2235 | vt 0.85384 0.800586
2236 | vt 0.822028 0.824588
2237 | vt 0.785443 0.84363
2238 | vt 0.744185 0.858594
2239 | vt 0.699717 0.87305
2240 | vt 0.651824 0.885404
2241 | vt 0.602388 0.894861
2242 | vt 0.551431 0.900737
2243 | vt 0.499998 0.901958
2244 | vt 0.083835 0.640067
2245 | vt 0.869151 0.397189
2246 | vt 0.881003 0.441023
2247 | vt 0.888465 0.484502
2248 | vt 0.893719 0.532966
2249 | vt 0.893897 0.584891
2250 | vt 0.890952 0.636382
2251 | vt 0.885521 0.684255
2252 | vt 0.875116 0.724249
2253 | vt 0.858979 0.760333
2254 | vt 0.833442 0.787342
2255 | vt 0.804887 0.810942
2256 | vt 0.770688 0.827428
2257 | vt 0.732033 0.84072
2258 | vt 0.688662 0.853161
2259 | vt 0.64209 0.862331
2260 | vt 0.595019 0.869582
2261 | vt 0.547333 0.8735
2262 | vt 0.499998 0.874095
2263 | vt 0.851393 0.446474
2264 | vt 0.859017 0.487465
2265 | vt 0.865134 0.533882
2266 | vt 0.869754 0.586401
2267 | vt 0.869595 0.634354
2268 | vt 0.499997 0.099124
2269 | vt 0.500014 0.124745
2270 | vt 0.499997 0.149793
2271 | vt 0.600248 0.160348
2272 | vt 0.631467 0.167
2273 | vt 0.666626 0.178649
2274 | vt 0.707326 0.194397
2275 | vt 0.755083 0.217625
2276 | vt 0.807659 0.248768
2277 | vt 0.845916 0.283907
2278 | vt 0.878696 0.327309
2279 | vt 0.900208 0.379972
2280 | vt 0.912701 0.434686
2281 | vt 0.917697 0.483
2282 | vt 0.668667 0.62438
2283 | vt 0.682775 0.622142
2284 | vt 0.696565 0.623062
2285 | vt 0.707863 0.62641
2286 | vt 0.715595 0.631116
2287 | vt 0.720706 0.635895
2288 | vt 0.724709 0.641962
2289 | vt 0.726797 0.647262
2290 | vt 0.727639 0.651228
2291 | vt 0.727458 0.655337
2292 | vt 0.725857 0.659859
2293 | vt 0.722683 0.664902
2294 | vt 0.717105 0.669087
2295 | vt 0.708083 0.673391
2296 | vt 0.697831 0.676249
2297 | vt 0.684919 0.677283
2298 | vt 0.671299 0.676519
2299 | vt 0.658411 0.673986
2300 | vt 0.647331 0.669136
2301 | vt 0.638968 0.661315
2302 | vt 0.636945 0.652609
2303 | vt 0.639995 0.643101
2304 | vt 0.646555 0.635605
2305 | vt 0.6558 0.629101
2306 | vt 0.331336 0.62438
2307 | vt 0.344201 0.629103
2308 | vt 0.353455 0.635601
2309 | vt 0.360002 0.643096
2310 | vt 0.363037 0.65264
2311 | vt 0.361014 0.661326
2312 | vt 0.352681 0.669137
2313 | vt 0.341656 0.673993
2314 | vt 0.328754 0.67655
2315 | vt 0.315098 0.677307
2316 | vt 0.302174 0.676255
2317 | vt 0.291928 0.673393
2318 | vt 0.28294 0.669117
2319 | vt 0.277505 0.66506
2320 | vt 0.274245 0.66002
2321 | vt 0.272553 0.655277
2322 | vt 0.272262 0.651092
2323 | vt 0.273147 0.64722
2324 | vt 0.27532 0.641862
2325 | vt 0.279337 0.635837
2326 | vt 0.284409 0.63111
2327 | vt 0.292138 0.626413
2328 | vt 0.303438 0.623062
2329 | vt 0.31723 0.622141
2330 | vt 0.780859 0.646908
2331 | vt 0.776556 0.628439
2332 | vt 0.767087 0.61171
2333 | vt 0.752173 0.596718
2334 | vt 0.736352 0.586858
2335 | vt 0.71753 0.580724
2336 | vt 0.696771 0.579707
2337 | vt 0.675884 0.583782
2338 | vt 0.657211 0.591609
2339 | vt 0.640883 0.601779
2340 | vt 0.627789 0.614365
2341 | vt 0.615721 0.629696
2342 | vt 0.604059 0.650916
2343 | vt 0.597992 0.678924
2344 | vt 0.609705 0.707537
2345 | vt 0.635219 0.722957
2346 | vt 0.664772 0.731109
2347 | vt 0.693012 0.733531
2348 | vt 0.716636 0.731232
2349 | vt 0.735379 0.72529
2350 | vt 0.751612 0.716173
2351 | vt 0.766326 0.702916
2352 | vt 0.776817 0.685842
2353 | vt 0.781301 0.666553
2354 | vt 0.223215 0.685815
2355 | vt 0.218742 0.666516
2356 | vt 0.219189 0.646852
2357 | vt 0.223394 0.628448
2358 | vt 0.232928 0.611714
2359 | vt 0.247793 0.596698
2360 | vt 0.263679 0.58684
2361 | vt 0.282478 0.580744
2362 | vt 0.303224 0.57976
2363 | vt 0.324089 0.583854
2364 | vt 0.342738 0.591636
2365 | vt 0.359046 0.601806
2366 | vt 0.372212 0.614373
2367 | vt 0.384278 0.629696
2368 | vt 0.395936 0.650911
2369 | vt 0.402038 0.678896
2370 | vt 0.390034 0.707555
2371 | vt 0.364886 0.72296
2372 | vt 0.335238 0.731099
2373 | vt 0.30703 0.733606
2374 | vt 0.283452 0.731482
2375 | vt 0.264726 0.72568
2376 | vt 0.248598 0.716825
2377 | vt 0.233702 0.702933
2378 | vt 0.73919 0.644044
2379 | vt 0.735301 0.635746
2380 | vt 0.728595 0.626758
2381 | vt 0.720892 0.620532
2382 | vt 0.710807 0.615573
2383 | vt 0.697142 0.612396
2384 | vt 0.681679 0.612588
2385 | vt 0.666123 0.616225
2386 | vt 0.652272 0.6224
2387 | vt 0.641898 0.630046
2388 | vt 0.633775 0.640032
2389 | vt 0.62946 0.653694
2390 | vt 0.631429 0.666359
2391 | vt 0.640705 0.676807
2392 | vt 0.65394 0.684568
2393 | vt 0.669861 0.688375
2394 | vt 0.685837 0.689488
2395 | vt 0.70074 0.688027
2396 | vt 0.713433 0.68401
2397 | vt 0.723426 0.678351
2398 | vt 0.731335 0.672132
2399 | vt 0.737004 0.665019
2400 | vt 0.739611 0.657976
2401 | vt 0.74034 0.651057
2402 | vt 0.259597 0.650998
2403 | vt 0.260482 0.657828
2404 | vt 0.263103 0.665001
2405 | vt 0.268763 0.672156
2406 | vt 0.276611 0.678348
2407 | vt 0.286618 0.684054
2408 | vt 0.29929 0.688032
2409 | vt 0.31423 0.689606
2410 | vt 0.33027 0.6884
2411 | vt 0.346131 0.684502
2412 | vt 0.359262 0.67682
2413 | vt 0.368513 0.666383
2414 | vt 0.370531 0.653702
2415 | vt 0.366212 0.640028
2416 | vt 0.358099 0.630045
2417 | vt 0.347725 0.622399
2418 | vt 0.333877 0.616224
2419 | vt 0.318323 0.612583
2420 | vt 0.302859 0.612395
2421 | vt 0.289188 0.615572
2422 | vt 0.279104 0.620527
2423 | vt 0.271413 0.626749
2424 | vt 0.264702 0.635728
2425 | vt 0.260784 0.644015
2426 | vt 0.445785 0.47773
2427 | vt 0.554076 0.477658
2428 | vt 0.594875 0.354403
2429 | vt 0.588739 0.344172
2430 | vt 0.597793 0.365048
2431 | vt 0.402332 0.365147
2432 | vt 0.40519 0.354537
2433 | vt 0.411292 0.344284
2434 | vt 0.995015 0.486204
2435 | vt 0.989592 0.426548
2436 | vt 0.976427 0.334682
2437 | vt 0.942635 0.24163
2438 | vt 0.571441 0.361724
2439 | vt 0.428405 0.361636
2440 | vt 0.423111 0.357671
2441 | f 45/45 46/46 1201/1201 1202/1202
2442 | f 46/46 43/43 1200/1200 1201/1201
2443 | f 41/41 48/48 1197/1197 1198/1198
2444 | f 48/48 49/49 1196/1196 1197/1197
2445 | f 1190/1190 53/53 52/52 1189/1189
2446 | f 54/54 56/56 1185/1185 1186/1186
2447 | f 56/56 57/57 1184/1184 1185/1185
2448 | f 84/84 91/91 2/2 1/1
2449 | f 85/85 101/101 100/100 86/86
2450 | f 102/102 103/103 101/101 85/85
2451 | f 113/113 192/192 110/110 59/59
2452 | f 31/31 30/30 262/262 261/261
2453 | f 147/147 146/146 134/134 135/135
2454 | f 146/146 139/139 145/145 134/134
2455 | f 65/65 66/66 148/148 149/149
2456 | f 159/159 158/158 13/13 14/14
2457 | f 1190/1190 1191/1191 170/170 53/53
2458 | f 174/174 410/410 409/409 173/173
2459 | f 175/175 411/411 410/410 174/174
2460 | f 176/176 412/412 411/411 175/175
2461 | f 176/176 177/177 413/413 412/412
2462 | f 181/181 182/182 65/65 149/149
2463 | f 402/402 182/182 181/181 403/403
2464 | f 182/182 183/183 64/64 65/65
2465 | f 401/401 183/183 182/182 402/402
2466 | f 400/400 184/184 183/183 401/401
2467 | f 184/184 63/63 64/64 183/183
2468 | f 399/399 185/185 184/184 400/400
2469 | f 398/398 186/186 185/185 399/399
2470 | f 261/261 260/260 32/32 31/31
2471 | f 111/111 116/116 120/120 119/119
2472 | f 117/117 124/124 1213/1213 120/120
2473 | f 110/110 192/192 193/193 112/112
2474 | f 112/112 193/193 116/116 111/111
2475 | f 116/116 195/195 117/117 120/120
2476 | f 193/193 196/196 195/195 116/116
2477 | f 192/192 194/194 196/196 193/193
2478 | f 261/261 262/262 271/271 270/270
2479 | f 281/281 280/280 124/124 117/117
2480 | f 165/165 199/199 202/202 166/166
2481 | f 199/199 198/198 163/163 200/200
2482 | f 200/200 201/201 202/202 199/199
2483 | f 166/166 202/202 167/167 133/133
2484 | f 127/127 429/429 38/38 7/7
2485 | f 126/126 430/430 429/429 127/127
2486 | f 72/72 431/431 430/430 126/126
2487 | f 73/73 432/432 431/431 72/72
2488 | f 185/185 186/186 103/103 102/102
2489 | f 85/85 292/292 63/63 102/102
2490 | f 102/102 63/63 184/184 185/185
2491 | f 64/64 206/206 66/66 65/65
2492 | f 229/229 228/228 201/201 200/200
2493 | f 163/163 230/230 229/229 200/200
2494 | f 211/211 210/210 232/232 231/231
2495 | f 23/23 238/238 94/94 24/24
2496 | f 96/96 239/239 240/240 98/98
2497 | f 240/240 241/241 106/106 98/98
2498 | f 241/241 242/242 107/107 106/106
2499 | f 242/242 243/243 104/104 107/107
2500 | f 243/243 244/244 188/188 104/104
2501 | f 244/244 396/396 395/395 188/188
2502 | f 247/247 278/278 277/277 122/122
2503 | f 289/289 273/273 274/274 290/290
2504 | f 273/273 264/264 265/265 274/274
2505 | f 265/265 264/264 28/28 27/27
2506 | f 266/266 265/265 27/27 26/26
2507 | f 274/274 265/265 266/266 275/275
2508 | f 290/290 274/274 275/275 291/291
2509 | f 248/248 122/122 277/277 276/276
2510 | f 122/122 248/248 249/249 1219/1219
2511 | f 253/253 254/254 106/106 107/107
2512 | f 254/254 255/255 98/98 106/106
2513 | f 256/256 96/96 98/98 255/255
2514 | f 24/24 94/94 257/257 25/25
2515 | f 277/277 290/290 291/291 276/276
2516 | f 278/278 289/289 290/290 277/277
2517 | f 286/286 287/287 280/280 281/281
2518 | f 113/113 59/59 60/60 114/114
2519 | f 143/143 204/204 68/68 81/81
2520 | f 56/56 1157/1157 1134/1134 57/57
2521 | f 54/54 1156/1156 1157/1157 56/56
2522 | f 53/53 1152/1152 1153/1153 52/52
2523 | f 208/208 162/162 1153/1153 1152/1152
2524 | f 170/170 1151/1151 1152/1152 53/53
2525 | f 171/171 208/208 1152/1152 1151/1151
2526 | f 48/48 1145/1145 1146/1146 49/49
2527 | f 41/41 1144/1144 1145/1145 48/48
2528 | f 46/46 1141/1141 1142/1142 43/43
2529 | f 45/45 1140/1140 1141/1141 46/46
2530 | f 144/144 299/299 295/295 141/141
2531 | f 141/141 142/142 138/138 144/144
2532 | f 10/10 11/11 303/303 157/157
2533 | f 136/136 161/161 134/134 145/145
2534 | f 161/161 50/50 135/135 134/134
2535 | f 63/63 292/292 206/206 64/64
2536 | f 86/86 297/297 292/292 85/85
2537 | f 90/90 99/99 92/92 71/71
2538 | f 141/141 295/295 204/204 143/143
2539 | f 71/71 92/92 91/91 84/84
2540 | f 96/96 94/94 238/238 239/239
2541 | f 256/256 257/257 94/94 96/96
2542 | f 307/307 1219/1219 249/249 306/306
2543 | f 245/245 407/407 406/406 190/190
2544 | f 250/250 190/190 406/406 405/405
2545 | f 394/394 251/251 188/188 395/395
2546 | f 251/251 252/252 104/104 188/188
2547 | f 252/252 253/253 107/107 104/104
2548 | f 22/22 93/93 238/238 23/23
2549 | f 91/91 93/93 22/22 2/2
2550 | f 93/93 95/95 239/239 238/238
2551 | f 92/92 95/95 93/93 91/91
2552 | f 95/95 97/97 240/240 239/239
2553 | f 99/99 97/97 95/95 92/92
2554 | f 97/97 109/109 241/241 240/240
2555 | f 90/90 86/86 100/100 99/99
2556 | f 97/97 99/99 100/100 109/109
2557 | f 109/109 108/108 242/242 241/241
2558 | f 100/100 101/101 108/108 109/109
2559 | f 108/108 105/105 243/243 242/242
2560 | f 101/101 103/103 105/105 108/108
2561 | f 103/103 186/186 187/187 105/105
2562 | f 105/105 187/187 244/244 243/243
2563 | f 187/187 397/397 396/396 244/244
2564 | f 186/186 398/398 397/397 187/187
2565 | f 191/191 408/408 407/407 245/245
2566 | f 246/246 1220/1220 1219/1219 307/307
2567 | f 121/121 1213/1213 124/124 123/123
2568 | f 1219/1219 1220/1220 247/247 122/122
2569 | f 123/123 279/279 278/278 247/247
2570 | f 124/124 280/280 279/279 123/123
2571 | f 279/279 288/288 289/289 278/278
2572 | f 280/280 287/287 288/288 279/279
2573 | f 286/286 270/270 271/271 287/287
2574 | f 288/288 272/272 273/273 289/289
2575 | f 287/287 271/271 272/272 288/288
2576 | f 272/272 263/263 264/264 273/273
2577 | f 262/262 263/263 272/272 271/271
2578 | f 263/263 29/29 28/28 264/264
2579 | f 262/262 30/30 29/29 263/263
2580 | f 71/71 89/89 87/87 90/90
2581 | f 84/84 294/294 89/89 71/71
2582 | f 1/1 3/3 294/294 84/84
2583 | f 87/87 297/297 86/86 90/90
2584 | f 292/292 297/297 310/310 206/206
2585 | f 206/206 310/310 311/311 66/66
2586 | f 311/311 312/312 148/148 66/66
2587 | f 312/312 321/321 151/151 148/148
2588 | f 310/310 439/439 438/438 311/311
2589 | f 87/87 441/441 440/440 297/297
2590 | f 310/310 297/297 440/440 439/439
2591 | f 313/313 309/309 298/298 205/205
2592 | f 145/145 139/139 282/282 305/305
2593 | f 317/317 304/304 140/140 316/316
2594 | f 139/139 318/318 315/315 282/282
2595 | f 144/144 138/138 302/302 317/317
2596 | f 282/282 315/315 314/314 140/140
2597 | f 437/437 312/312 311/311 438/438
2598 | f 282/282 140/140 304/304 305/305
2599 | f 305/305 137/137 136/136 145/145
2600 | f 302/302 300/300 304/304 317/317
2601 | f 305/305 304/304 300/300 137/137
2602 | f 301/301 366/366 364/364 303/303
2603 | f 12/12 13/13 158/158 301/301
2604 | f 12/12 301/301 303/303 11/11
2605 | f 298/298 67/67 69/69 207/207
2606 | f 207/207 69/69 68/68 204/204
2607 | f 68/68 69/69 1206/1206 70/70
2608 | f 309/309 88/88 67/67 298/298
2609 | f 89/89 308/308 441/441 87/87
2610 | f 436/436 321/321 312/312 437/437
2611 | f 146/146 319/319 318/318 139/139
2612 | f 147/147 320/320 319/319 146/146
2613 | f 41/41 42/42 1143/1143 1144/1144
2614 | f 41/41 1198/1198 1199/1199 42/42
2615 | f 321/321 436/436 435/435 322/322
2616 | f 322/322 435/435 434/434 323/323
2617 | f 42/42 43/43 1142/1142 1143/1143
2618 | f 294/294 324/324 308/308 89/89
2619 | f 4/4 324/324 294/294 3/3
2620 | f 316/316 299/299 144/144 317/317
2621 | f 314/314 293/293 316/316 140/140
2622 | f 295/295 203/203 207/207 204/204
2623 | f 203/203 205/205 298/298 207/207
2624 | f 203/203 326/326 293/293 205/205
2625 | f 326/326 203/203 295/295 299/299
2626 | f 293/293 314/314 313/313 205/205
2627 | f 326/326 299/299 316/316 293/293
2628 | f 42/42 1199/1199 1200/1200 43/43
2629 | f 52/52 51/51 1188/1188 1189/1189
2630 | f 1188/1188 51/51 55/55 1187/1187
2631 | f 165/165 327/327 198/198 199/199
2632 | f 52/52 1153/1153 1154/1154 51/51
2633 | f 162/162 164/164 1154/1154 1153/1153
2634 | f 208/208 329/329 328/328 162/162
2635 | f 210/210 160/160 233/233 232/232
2636 | f 328/328 329/329 210/210 211/211
2637 | f 163/163 335/335 334/334 230/230
2638 | f 334/334 335/335 211/211 231/231
2639 | f 198/198 336/336 335/335 163/163
2640 | f 336/336 328/328 211/211 335/335
2641 | f 336/336 164/164 162/162 328/328
2642 | f 54/54 55/55 1155/1155 1156/1156
2643 | f 51/51 1154/1154 1155/1155 55/55
2644 | f 327/327 164/164 336/336 198/198
2645 | f 54/54 1186/1186 1187/1187 55/55
2646 | f 197/197 194/194 192/192 113/113
2647 | f 115/115 197/197 113/113 114/114
2648 | f 36/36 35/35 258/258 345/345
2649 | f 260/260 269/269 268/268 259/259
2650 | f 33/33 32/32 260/260 259/259
2651 | f 347/347 34/34 33/33 259/259
2652 | f 35/35 34/34 347/347 258/258
2653 | f 259/259 268/268 346/346 347/347
2654 | f 337/337 285/285 286/286 281/281
2655 | f 281/281 117/117 195/195 337/337
2656 | f 196/196 338/338 337/337 195/195
2657 | f 194/194 339/339 338/338 196/196
2658 | f 342/342 341/341 197/197 115/115
2659 | f 341/341 339/339 194/194 197/197
2660 | f 338/338 284/284 285/285 337/337
2661 | f 339/339 340/340 284/284 338/338
2662 | f 341/341 283/283 340/340 339/339
2663 | f 342/342 343/343 283/283 341/341
2664 | f 285/285 269/269 270/270 286/286
2665 | f 270/270 269/269 260/260 261/261
2666 | f 284/284 268/268 269/269 285/285
2667 | f 284/284 340/340 346/346 268/268
2668 | f 346/346 267/267 258/258 347/347
2669 | f 283/283 267/267 346/346 340/340
2670 | f 267/267 344/344 345/345 258/258
2671 | f 343/343 344/344 267/267 283/283
2672 | f 172/172 1150/1150 1151/1151 170/170
2673 | f 169/169 171/171 1151/1151 1150/1150
2674 | f 172/172 170/170 1191/1191 1192/1192
2675 | f 427/427 49/49 1146/1146 1147/1147
2676 | f 44/44 1139/1139 1140/1140 45/45
2677 | f 358/358 172/172 1192/1192 1193/1193
2678 | f 44/44 357/357 1138/1138 1139/1139
2679 | f 172/172 358/358 1149/1149 1150/1150
2680 | f 362/362 365/365 158/158 159/159
2681 | f 364/364 363/363 157/157 303/303
2682 | f 365/365 366/366 301/301 158/158
2683 | f 373/373 130/130 157/157 363/363
2684 | f 126/126 129/129 375/375 72/72
2685 | f 127/127 128/128 129/129 126/126
2686 | f 129/129 128/128 130/130 373/373
2687 | f 130/130 9/9 10/10 157/157
2688 | f 7/7 8/8 128/128 127/127
2689 | f 128/128 8/8 9/9 130/130
2690 | f 378/378 379/379 1139/1139 1138/1138
2691 | f 1139/1139 379/379 380/380 1140/1140
2692 | f 1140/1140 380/380 381/381 1141/1141
2693 | f 1141/1141 381/381 382/382 1142/1142
2694 | f 382/382 383/383 1143/1143 1142/1142
2695 | f 1143/1143 383/383 384/384 1144/1144
2696 | f 1144/1144 384/384 385/385 1145/1145
2697 | f 1145/1145 385/385 386/386 1146/1146
2698 | f 386/386 387/387 1147/1147 1146/1146
2699 | f 156/156 154/154 380/380 379/379
2700 | f 154/154 155/155 381/381 380/380
2701 | f 155/155 323/323 382/382 381/381
2702 | f 434/434 383/383 382/382 323/323
2703 | f 147/147 385/385 384/384 320/320
2704 | f 233/233 160/160 350/350 234/234
2705 | f 14/14 15/15 388/388 159/159
2706 | f 428/428 388/388 15/15 37/37
2707 | f 388/388 368/368 362/362 159/159
2708 | f 171/171 330/330 329/329 208/208
2709 | f 361/361 348/348 169/169 360/360
2710 | f 388/388 428/428 367/367 368/368
2711 | f 329/329 330/330 160/160 210/210
2712 | f 348/348 421/421 349/349 169/169
2713 | f 422/422 19/19 20/20 423/423
2714 | f 361/361 16/16 17/17 348/348
2715 | f 349/349 350/350 160/160 330/330
2716 | f 17/17 18/18 421/421 348/348
2717 | f 421/421 18/18 19/19 422/422
2718 | f 45/45 1202/1202 1203/1203 44/44
2719 | f 389/389 378/378 1138/1138 1137/1137
2720 | f 354/354 390/390 378/378 389/389
2721 | f 156/156 379/379 378/378 390/390
2722 | f 250/250 394/394 395/395 190/190
2723 | f 396/396 245/245 190/190 395/395
2724 | f 397/397 191/191 245/245 396/396
2725 | f 398/398 189/189 191/191 397/397
2726 | f 173/173 189/189 398/398 399/399
2727 | f 173/173 399/399 400/400 174/174
2728 | f 174/174 400/400 401/401 175/175
2729 | f 175/175 401/401 402/402 176/176
2730 | f 176/176 402/402 403/403 177/177
2731 | f 406/406 307/307 306/306 405/405
2732 | f 407/407 246/246 307/307 406/406
2733 | f 408/408 118/118 246/246 407/407
2734 | f 118/118 408/408 1211/1211 1212/1212
2735 | f 1212/1212 1211/1211 409/409 119/119
2736 | f 410/410 111/111 119/119 409/409
2737 | f 411/411 112/112 111/111 410/410
2738 | f 412/412 110/110 112/112 411/411
2739 | f 413/413 59/59 110/110 412/412
2740 | f 414/414 60/60 59/59 413/413
2741 | f 167/167 420/420 419/419 133/133
2742 | f 57/57 1134/1134 1135/1135 418/418
2743 | f 44/44 1203/1203 1204/1204 357/357
2744 | f 417/417 357/357 1204/1204 1205/1205
2745 | f 357/357 417/417 1137/1137 1138/1138
2746 | f 418/418 1183/1183 1184/1184 57/57
2747 | f 427/427 1195/1195 1196/1196 49/49
2748 | f 169/169 349/349 330/330 171/171
2749 | f 350/350 422/422 423/423 234/234
2750 | f 349/349 421/421 422/422 350/350
2751 | f 428/428 361/361 360/360 367/367
2752 | f 16/16 361/361 428/428 37/37
2753 | f 320/320 384/384 383/383 434/434
2754 | f 435/435 319/319 320/320 434/434
2755 | f 436/436 318/318 319/319 435/435
2756 | f 318/318 436/436 437/437 315/315
2757 | f 315/315 437/437 438/438 314/314
2758 | f 439/439 313/313 314/314 438/438
2759 | f 440/440 309/309 313/313 439/439
2760 | f 441/441 88/88 309/309 440/440
2761 | f 308/308 442/442 88/88 441/441
2762 | f 88/88 442/442 443/443 67/67
2763 | f 67/67 443/443 1206/1206 69/69
2764 | f 386/386 135/135 50/50 387/387
2765 | f 135/135 386/386 385/385 147/147
2766 | f 322/322 152/152 151/151 321/321
2767 | f 152/152 322/322 323/323 155/155
2768 | f 151/151 150/150 149/149 148/148
2769 | f 150/150 180/180 181/181 149/149
2770 | f 404/404 403/403 181/181 180/180
2771 | f 177/177 178/178 414/414 413/413
2772 | f 404/404 178/178 177/177 403/403
2773 | f 154/154 153/153 152/152 155/155
2774 | f 152/152 448/448 150/150 151/151
2775 | f 156/156 355/355 153/153 154/154
2776 | f 449/449 450/450 404/404 180/180
2777 | f 448/448 449/449 180/180 150/150
2778 | f 452/452 453/453 449/449 448/448
2779 | f 452/452 448/448 152/152 153/153
2780 | f 456/456 452/452 153/153 355/355
2781 | f 420/420 356/356 416/416 419/419
2782 | f 416/416 356/356 354/354 389/389
2783 | f 418/418 1135/1135 1136/1136 47/47
2784 | f 417/417 47/47 1136/1136 1137/1137
2785 | f 417/417 1205/1205 1182/1182 47/47
2786 | f 47/47 1182/1182 1183/1183 418/418
2787 | f 1194/1194 1195/1195 427/427 359/359
2788 | f 1194/1194 359/359 358/358 1193/1193
2789 | f 358/358 359/359 1148/1148 1149/1149
2790 | f 427/427 1147/1147 1148/1148 359/359
2791 | f 1148/1148 433/433 360/360 1149/1149
2792 | f 371/371 367/367 360/360 433/433
2793 | f 387/387 433/433 1148/1148 1147/1147
2794 | f 371/371 50/50 161/161 372/372
2795 | f 50/50 371/371 433/433 387/387
2796 | f 136/136 369/369 372/372 161/161
2797 | f 372/372 368/368 367/367 371/371
2798 | f 369/369 136/136 137/137 370/370
2799 | f 372/372 369/369 362/362 368/368
2800 | f 370/370 365/365 362/362 369/369
2801 | f 370/370 137/137 300/300 447/447
2802 | f 302/302 446/446 447/447 300/300
2803 | f 370/370 447/447 366/366 365/365
2804 | f 138/138 445/445 446/446 302/302
2805 | f 447/447 446/446 364/364 366/366
2806 | f 142/142 374/374 445/445 138/138
2807 | f 445/445 363/363 364/364 446/446
2808 | f 83/83 142/142 141/141 143/143
2809 | f 142/142 83/83 375/375 374/374
2810 | f 374/374 373/373 363/363 445/445
2811 | f 373/373 374/374 375/375 129/129
2812 | f 201/201 235/235 167/167 202/202
2813 | f 376/376 179/179 354/354 356/356
2814 | f 391/391 390/390 354/354 179/179
2815 | f 391/391 355/355 156/156 390/390
2816 | f 460/460 179/179 376/376 459/459
2817 | f 457/457 456/456 355/355 391/391
2818 | f 464/464 391/391 179/179 460/460
2819 | f 470/470 457/457 391/391 464/464
2820 | f 236/236 420/420 167/167 235/235
2821 | f 476/476 236/236 235/235 475/475
2822 | f 236/236 376/376 356/356 420/420
2823 | f 236/236 476/476 459/459 376/376
2824 | f 228/228 475/475 235/235 201/201
2825 | f 471/471 458/458 457/457 470/470
2826 | f 450/450 451/451 178/178 404/404
2827 | f 451/451 415/415 414/414 178/178
2828 | f 451/451 480/480 479/479 415/415
2829 | f 454/454 450/450 449/449 453/453
2830 | f 454/454 480/480 451/451 450/450
2831 | f 458/458 455/455 456/456 457/457
2832 | f 455/455 453/453 452/452 456/456
2833 | f 482/482 481/481 479/479 480/480
2834 | f 477/477 484/484 455/455 458/458
2835 | f 461/461 477/477 458/458 471/471
2836 | f 482/482 485/485 483/483 481/481
2837 | f 454/454 484/484 482/482 480/480
2838 | f 484/484 477/477 485/485 482/482
2839 | f 455/455 484/484 454/454 453/453
2840 | f 485/485 477/477 461/461 483/483
2841 | f 70/70 80/80 81/81 68/68
2842 | f 82/82 83/83 143/143 81/81
2843 | f 83/83 82/82 72/72 375/375
2844 | f 82/82 444/444 73/73 72/72
2845 | f 80/80 444/444 82/82 81/81
2846 | f 5/5 325/325 324/324 4/4
2847 | f 429/429 125/125 6/6 38/38
2848 | f 486/486 39/39 6/6 125/125
2849 | f 486/486 325/325 5/5 39/39
2850 | f 430/430 76/76 125/125 429/429
2851 | f 325/325 77/77 308/308 324/324
2852 | f 486/486 487/487 77/77 325/325
2853 | f 76/76 487/487 486/486 125/125
2854 | f 431/431 74/74 76/76 430/430
2855 | f 77/77 78/78 442/442 308/308
2856 | f 487/487 488/488 78/78 77/77
2857 | f 74/74 488/488 487/487 76/76
2858 | f 432/432 75/75 74/74 431/431
2859 | f 78/78 79/79 443/443 442/442
2860 | f 488/488 489/489 79/79 78/78
2861 | f 75/75 489/489 488/488 74/74
2862 | f 237/237 474/474 476/476 475/475
2863 | f 215/215 467/467 474/474 237/237
2864 | f 468/468 946/946 947/947 40/40
2865 | f 949/949 950/950 214/214 168/168
2866 | f 224/224 218/218 217/217 223/223
2867 | f 230/230 224/224 223/223 229/229
2868 | f 951/951 952/952 213/213 331/331
2869 | f 225/225 333/333 334/334 231/231
2870 | f 950/950 951/951 331/331 214/214
2871 | f 333/333 332/332 218/218 224/224
2872 | f 332/332 333/333 225/225 219/219
2873 | f 334/334 333/333 224/224 230/230
2874 | f 234/234 351/351 227/227 233/233
2875 | f 351/351 352/352 221/221 227/227
2876 | f 955/955 353/353 132/132 954/954
2877 | f 415/415 61/61 60/60 414/414
2878 | f 424/424 351/351 234/234 423/423
2879 | f 955/955 956/956 426/426 353/353
2880 | f 1042/1042 424/424 423/423 20/20
2881 | f 1042/1042 1023/1023 425/425 424/424
2882 | f 424/424 425/425 352/352 351/351
2883 | f 426/426 956/956 957/957 21/21
2884 | f 462/462 483/483 461/461 392/392
2885 | f 906/906 463/463 928/928 929/929
2886 | f 928/928 936/936 937/937 929/929
2887 | f 483/483 462/462 62/62 481/481
2888 | f 928/928 463/463 393/393 927/927
2889 | f 946/946 468/468 58/58 969/969
2890 | f 969/969 1024/1024 467/467 946/946
2891 | f 473/473 459/459 476/476 474/474
2892 | f 472/472 460/460 459/459 473/473
2893 | f 296/296 209/209 931/931 932/932
2894 | f 465/465 466/466 470/470 464/464
2895 | f 931/931 939/939 940/940 932/932
2896 | f 465/465 464/464 460/460 472/472
2897 | f 919/919 918/918 999/999 923/923
2898 | f 918/918 917/917 998/998 999/999
2899 | f 997/997 998/998 917/917 916/916
2900 | f 947/947 948/948 131/131 40/40
2901 | f 222/222 237/237 475/475 228/228
2902 | f 131/131 948/948 949/949 168/168
2903 | f 216/216 222/222 223/223 217/217
2904 | f 216/216 215/215 237/237 222/222
2905 | f 223/223 222/222 228/228 229/229
2906 | f 953/953 954/954 132/132 212/212
2907 | f 227/227 226/226 232/232 233/233
2908 | f 953/953 212/212 213/213 952/952
2909 | f 226/226 220/220 219/219 225/225
2910 | f 220/220 226/226 227/227 221/221
2911 | f 232/232 226/226 225/225 231/231
2912 | f 920/920 919/919 923/923 924/924
2913 | f 989/989 990/990 924/924 923/923
2914 | f 921/921 920/920 924/924 925/925
2915 | f 931/931 209/209 905/905 930/930
2916 | f 469/469 471/471 470/470 466/466
2917 | f 930/930 905/905 906/906 929/929
2918 | f 937/937 938/938 930/930 929/929
2919 | f 930/930 938/938 939/939 931/931
2920 | f 471/471 469/469 392/392 461/461
2921 | f 996/996 997/997 916/916 915/915
2922 | f 927/927 393/393 922/922 926/926
2923 | f 62/62 478/478 479/479 481/481
2924 | f 926/926 922/922 921/921 925/925
2925 | f 933/933 934/934 926/926 925/925
2926 | f 926/926 934/934 935/935 927/927
2927 | f 479/479 478/478 61/61 415/415
2928 | f 377/377 296/296 932/932 968/968
2929 | f 58/58 377/377 968/968 969/969
2930 | f 1094/1094 1190/1190 1189/1189 1095/1095
2931 | f 1197/1197 1196/1196 1088/1088 1087/1087
2932 | f 1086/1086 1198/1198 1197/1197 1087/1087
2933 | f 1109/1109 1199/1199 1198/1198 1086/1086
2934 | f 1200/1200 1199/1199 1109/1109 1108/1108
2935 | f 1201/1201 1200/1200 1108/1108 1107/1107
2936 | f 1106/1106 1202/1202 1201/1201 1107/1107
2937 | f 1105/1105 1203/1203 1202/1202 1106/1106
2938 | f 1104/1104 1204/1204 1203/1203 1105/1105
2939 | f 1103/1103 1205/1205 1204/1204 1104/1104
2940 | f 1102/1102 1182/1182 1205/1205 1103/1103
2941 | f 1183/1183 1182/1182 1102/1102 1101/1101
2942 | f 1184/1184 1183/1183 1101/1101 1100/1100
2943 | f 1187/1187 1186/1186 1098/1098 1097/1097
2944 | f 1165/1165 1166/1166 498/498 491/491
2945 | f 498/498 1166/1166 1167/1167 499/499
2946 | f 1161/1161 1162/1162 496/496 495/495
2947 | f 496/496 1162/1162 1163/1163 493/493
2948 | f 1177/1177 1178/1178 506/506 504/504
2949 | f 848/848 507/507 1179/1179 1180/1180
2950 | f 506/506 1178/1178 1179/1179 507/507
2951 | f 1173/1173 1174/1174 502/502 503/503
2952 | f 1173/1173 503/503 619/619 1172/1172
2953 | f 503/503 502/502 1127/1127 1126/1126
2954 | f 506/506 507/507 1132/1132 1131/1131
2955 | f 533/533 1/1 2/2 540/540
2956 | f 534/534 535/535 549/549 550/550
2957 | f 551/551 534/534 550/550 552/552
2958 | f 562/562 508/508 559/559 641/641
2959 | f 31/31 696/696 697/697 30/30
2960 | f 596/596 584/584 583/583 595/595
2961 | f 595/595 583/583 594/594 588/588
2962 | f 514/514 598/598 597/597 515/515
2963 | f 608/608 14/14 13/13 607/607
2964 | f 619/619 503/503 1126/1126 1125/1125
2965 | f 623/623 622/622 839/839 840/840
2966 | f 624/624 623/623 840/840 841/841
2967 | f 625/625 624/624 841/841 842/842
2968 | f 625/625 842/842 843/843 626/626
2969 | f 630/630 598/598 514/514 631/631
2970 | f 832/832 833/833 630/630 631/631
2971 | f 631/631 514/514 513/513 632/632
2972 | f 831/831 832/832 631/631 632/632
2973 | f 830/830 831/831 632/632 633/633
2974 | f 633/633 632/632 513/513 512/512
2975 | f 829/829 830/830 633/633 634/634
2976 | f 828/828 829/829 634/634 635/635
2977 | f 696/696 31/31 32/32 695/695
2978 | f 1208/1208 568/568 839/839 1210/1210
2979 | f 560/560 568/568 569/569 565/565
2980 | f 559/559 561/561 642/642 641/641
2981 | f 561/561 560/560 565/565 642/642
2982 | f 565/565 569/569 566/566 644/644
2983 | f 642/642 565/565 644/644 645/645
2984 | f 641/641 642/642 645/645 643/643
2985 | f 696/696 705/705 706/706 697/697
2986 | f 716/716 566/566 573/573 715/715
2987 | f 614/614 615/615 651/651 648/648
2988 | f 648/648 649/649 612/612 647/647
2989 | f 649/649 648/648 651/651 650/650
2990 | f 615/615 582/582 616/616 651/651
2991 | f 576/576 7/7 38/38 857/857
2992 | f 575/575 576/576 857/857 858/858
2993 | f 521/521 575/575 858/858 859/859
2994 | f 522/522 521/521 859/859 860/860
2995 | f 1171/1171 1172/1172 619/619 621/621
2996 | f 634/634 551/551 552/552 635/635
2997 | f 534/534 551/551 512/512 727/727
2998 | f 551/551 634/634 633/633 512/512
2999 | f 513/513 514/514 515/515 655/655
3000 | f 664/664 649/649 650/650 663/663
3001 | f 612/612 649/649 664/664 665/665
3002 | f 659/659 666/666 667/667 658/658
3003 | f 23/23 24/24 543/543 672/672
3004 | f 545/545 547/547 674/674 673/673
3005 | f 674/674 547/547 555/555 675/675
3006 | f 675/675 555/555 556/556 676/676
3007 | f 676/676 556/556 553/553 677/677
3008 | f 677/677 553/553 637/637 678/678
3009 | f 678/678 637/637 825/825 826/826
3010 | f 571/571 682/682 681/681 1218/1218
3011 | f 682/682 571/571 712/712 713/713
3012 | f 724/724 725/725 709/709 708/708
3013 | f 708/708 709/709 700/700 699/699
3014 | f 700/700 27/27 28/28 699/699
3015 | f 701/701 26/26 27/27 700/700
3016 | f 709/709 710/710 701/701 700/700
3017 | f 725/725 726/726 710/710 709/709
3018 | f 683/683 711/711 712/712 571/571
3019 | f 688/688 556/556 555/555 689/689
3020 | f 689/689 555/555 547/547 690/690
3021 | f 691/691 690/690 547/547 545/545
3022 | f 24/24 25/25 692/692 543/543
3023 | f 712/712 711/711 726/726 725/725
3024 | f 713/713 712/712 725/725 724/724
3025 | f 721/721 716/716 715/715 722/722
3026 | f 562/562 563/563 509/509 508/508
3027 | f 592/592 530/530 517/517 653/653
3028 | f 582/582 615/615 1131/1131 1132/1132
3029 | f 1131/1131 615/615 614/614 1130/1130
3030 | f 504/504 506/506 1131/1131 1130/1130
3031 | f 1126/1126 1127/1127 611/611 657/657
3032 | f 1125/1125 1126/1126 657/657 620/620
3033 | f 498/498 499/499 1120/1120 1119/1119
3034 | f 1119/1119 1120/1120 817/817 816/816
3035 | f 491/491 498/498 1119/1119 1118/1118
3036 | f 1118/1118 1119/1119 816/816 815/815
3037 | f 496/496 493/493 1116/1116 1115/1115
3038 | f 1115/1115 1116/1116 813/813 812/812
3039 | f 495/495 496/496 1115/1115 1114/1114
3040 | f 1114/1114 1115/1115 812/812 811/811
3041 | f 494/494 495/495 1114/1114 1113/1113
3042 | f 593/593 590/590 730/730 734/734
3043 | f 590/590 593/593 587/587 591/591
3044 | f 10/10 606/606 738/738 11/11
3045 | f 585/585 594/594 583/583 610/610
3046 | f 610/610 583/583 584/584 500/500
3047 | f 512/512 513/513 655/655 727/727
3048 | f 535/535 534/534 727/727 732/732
3049 | f 539/539 520/520 541/541 548/548
3050 | f 590/590 592/592 653/653 730/730
3051 | f 520/520 533/533 540/540 541/541
3052 | f 545/545 673/673 672/672 543/543
3053 | f 691/691 545/545 543/543 692/692
3054 | f 742/742 741/741 684/684 1218/1218
3055 | f 742/742 1218/1218 681/681 680/680
3056 | f 679/679 639/639 836/836 837/837
3057 | f 685/685 835/835 836/836 639/639
3058 | f 824/824 825/825 637/637 686/686
3059 | f 686/686 637/637 553/553 687/687
3060 | f 687/687 553/553 556/556 688/688
3061 | f 22/22 23/23 672/672 542/542
3062 | f 540/540 2/2 22/22 542/542
3063 | f 542/542 672/672 673/673 544/544
3064 | f 541/541 540/540 542/542 544/544
3065 | f 544/544 673/673 674/674 546/546
3066 | f 548/548 541/541 544/544 546/546
3067 | f 546/546 674/674 675/675 558/558
3068 | f 539/539 548/548 549/549 535/535
3069 | f 546/546 558/558 549/549 548/548
3070 | f 558/558 675/675 676/676 557/557
3071 | f 549/549 558/558 557/557 550/550
3072 | f 557/557 676/676 677/677 554/554
3073 | f 550/550 557/557 554/554 552/552
3074 | f 552/552 554/554 636/636 635/635
3075 | f 554/554 677/677 678/678 636/636
3076 | f 636/636 678/678 826/826 827/827
3077 | f 635/635 636/636 827/827 828/828
3078 | f 640/640 679/679 837/837 838/838
3079 | f 839/839 622/622 638/638 1210/1210
3080 | f 638/638 640/640 838/838 1210/1210
3081 | f 567/567 680/680 681/681 570/570
3082 | f 567/567 1208/1208 1210/1210 838/838
3083 | f 570/570 681/681 682/682 572/572
3084 | f 572/572 682/682 713/713 714/714
3085 | f 573/573 572/572 714/714 715/715
3086 | f 714/714 713/713 724/724 723/723
3087 | f 715/715 714/714 723/723 722/722
3088 | f 721/721 722/722 706/706 705/705
3089 | f 723/723 724/724 708/708 707/707
3090 | f 722/722 723/723 707/707 706/706
3091 | f 707/707 708/708 699/699 698/698
3092 | f 697/697 706/706 707/707 698/698
3093 | f 698/698 699/699 28/28 29/29
3094 | f 697/697 698/698 29/29 30/30
3095 | f 520/520 539/539 536/536 538/538
3096 | f 533/533 520/520 538/538 729/729
3097 | f 1/1 533/533 729/729 3/3
3098 | f 536/536 539/539 535/535 732/732
3099 | f 727/727 655/655 745/745 732/732
3100 | f 655/655 515/515 746/746 745/745
3101 | f 746/746 515/515 597/597 747/747
3102 | f 747/747 597/597 600/600 756/756
3103 | f 745/745 746/746 866/866 867/867
3104 | f 536/536 732/732 868/868 869/869
3105 | f 745/745 867/867 868/868 732/732
3106 | f 748/748 654/654 733/733 744/744
3107 | f 594/594 740/740 717/717 588/588
3108 | f 752/752 751/751 589/589 739/739
3109 | f 588/588 717/717 750/750 753/753
3110 | f 593/593 752/752 737/737 587/587
3111 | f 717/717 589/589 749/749 750/750
3112 | f 865/865 866/866 746/746 747/747
3113 | f 717/717 740/740 739/739 589/589
3114 | f 740/740 594/594 585/585 586/586
3115 | f 737/737 752/752 739/739 735/735
3116 | f 740/740 586/586 735/735 739/739
3117 | f 736/736 738/738 795/795 797/797
3118 | f 12/12 736/736 607/607 13/13
3119 | f 12/12 11/11 738/738 736/736
3120 | f 733/733 656/656 518/518 516/516
3121 | f 656/656 653/653 517/517 518/518
3122 | f 744/744 733/733 516/516 537/537
3123 | f 538/538 536/536 869/869 743/743
3124 | f 864/864 865/865 747/747 756/756
3125 | f 595/595 588/588 753/753 754/754
3126 | f 596/596 595/595 754/754 755/755
3127 | f 1117/1117 1118/1118 815/815 814/814
3128 | f 1165/1165 491/491 492/492 1164/1164
3129 | f 756/756 757/757 863/863 864/864
3130 | f 757/757 758/758 862/862 863/863
3131 | f 813/813 1116/1116 1117/1117 814/814
3132 | f 1164/1164 492/492 493/493 1163/1163
3133 | f 729/729 538/538 743/743 759/759
3134 | f 4/4 3/3 729/729 759/759
3135 | f 751/751 752/752 593/593 734/734
3136 | f 749/749 589/589 751/751 728/728
3137 | f 730/730 653/653 656/656 652/652
3138 | f 652/652 656/656 733/733 654/654
3139 | f 652/652 654/654 728/728 761/761
3140 | f 761/761 734/734 730/730 652/652
3141 | f 728/728 654/654 748/748 749/749
3142 | f 761/761 728/728 751/751 734/734
3143 | f 1175/1175 1176/1176 505/505 501/501
3144 | f 502/502 1174/1174 1175/1175 501/501
3145 | f 1130/1130 614/614 762/762 1129/1129
3146 | f 614/614 648/648 647/647 762/762
3147 | f 501/501 505/505 1129/1129 1128/1128
3148 | f 1127/1127 502/502 501/501 1128/1128
3149 | f 611/611 1127/1127 1128/1128 613/613
3150 | f 657/657 611/611 763/763 764/764
3151 | f 658/658 667/667 668/668 609/609
3152 | f 763/763 659/659 658/658 764/764
3153 | f 612/612 665/665 767/767 768/768
3154 | f 767/767 666/666 659/659 768/768
3155 | f 647/647 612/612 768/768 769/769
3156 | f 769/769 768/768 659/659 763/763
3157 | f 769/769 763/763 611/611 613/613
3158 | f 762/762 613/613 1128/1128 1129/1129
3159 | f 762/762 647/647 769/769 613/613
3160 | f 1177/1177 504/504 505/505 1176/1176
3161 | f 646/646 562/562 641/641 643/643
3162 | f 564/564 563/563 562/562 646/646
3163 | f 36/36 778/778 693/693 35/35
3164 | f 695/695 694/694 703/703 704/704
3165 | f 33/33 694/694 695/695 32/32
3166 | f 780/780 694/694 33/33 34/34
3167 | f 35/35 693/693 780/780 34/34
3168 | f 694/694 780/780 779/779 703/703
3169 | f 770/770 716/716 721/721 720/720
3170 | f 716/716 770/770 644/644 566/566
3171 | f 645/645 644/644 770/770 771/771
3172 | f 643/643 645/645 771/771 772/772
3173 | f 775/775 564/564 646/646 774/774
3174 | f 774/774 646/646 643/643 772/772
3175 | f 771/771 770/770 720/720 719/719
3176 | f 772/772 771/771 719/719 773/773
3177 | f 774/774 772/772 773/773 718/718
3178 | f 775/775 774/774 718/718 776/776
3179 | f 720/720 721/721 705/705 704/704
3180 | f 705/705 696/696 695/695 704/704
3181 | f 719/719 720/720 704/704 703/703
3182 | f 719/719 703/703 779/779 773/773
3183 | f 779/779 780/780 693/693 702/702
3184 | f 718/718 773/773 779/779 702/702
3185 | f 702/702 693/693 778/778 777/777
3186 | f 776/776 718/718 702/702 777/777
3187 | f 621/621 619/619 1125/1125 1124/1124
3188 | f 1124/1124 1125/1125 620/620 618/618
3189 | f 855/855 499/499 1167/1167 1168/1168
3190 | f 817/817 1120/1120 1121/1121 818/818
3191 | f 1113/1113 1114/1114 811/811 810/810
3192 | f 1161/1161 495/495 494/494 1160/1160
3193 | f 1170/1170 1171/1171 621/621 789/789
3194 | f 1124/1124 618/618 791/791 1123/1123
3195 | f 1112/1112 1113/1113 810/810 809/809
3196 | f 1132/1132 507/507 848/848 1133/1133
3197 | f 494/494 788/788 1159/1159 1160/1160
3198 | f 793/793 608/608 607/607 796/796
3199 | f 795/795 738/738 606/606 794/794
3200 | f 796/796 607/607 736/736 797/797
3201 | f 804/804 794/794 606/606 579/579
3202 | f 575/575 521/521 806/806 578/578
3203 | f 576/576 575/575 578/578 577/577
3204 | f 578/578 804/804 579/579 577/577
3205 | f 579/579 606/606 10/10 9/9
3206 | f 7/7 576/576 577/577 8/8
3207 | f 577/577 579/579 9/9 8/8
3208 | f 605/605 810/810 811/811 603/603
3209 | f 603/603 811/811 812/812 604/604
3210 | f 604/604 812/812 813/813 758/758
3211 | f 862/862 758/758 813/813 814/814
3212 | f 596/596 755/755 815/815 816/816
3213 | f 668/668 669/669 783/783 609/609
3214 | f 14/14 608/608 819/819 15/15
3215 | f 856/856 37/37 15/15 819/819
3216 | f 819/819 608/608 793/793 799/799
3217 | f 620/620 657/657 764/764 765/765
3218 | f 792/792 791/791 618/618 781/781
3219 | f 819/819 799/799 798/798 856/856
3220 | f 764/764 658/658 609/609 765/765
3221 | f 781/781 618/618 782/782 851/851
3222 | f 852/852 853/853 20/20 19/19
3223 | f 792/792 781/781 17/17 16/16
3224 | f 782/782 765/765 609/609 783/783
3225 | f 17/17 781/781 851/851 18/18
3226 | f 851/851 852/852 19/19 18/18
3227 | f 1111/1111 1112/1112 809/809 820/820
3228 | f 785/785 820/820 809/809 821/821
3229 | f 605/605 821/821 809/809 810/810
3230 | f 685/685 639/639 825/825 824/824
3231 | f 826/826 825/825 639/639 679/679
3232 | f 827/827 826/826 679/679 640/640
3233 | f 828/828 827/827 640/640 638/638
3234 | f 622/622 829/829 828/828 638/638
3235 | f 622/622 623/623 830/830 829/829
3236 | f 623/623 624/624 831/831 830/830
3237 | f 624/624 625/625 832/832 831/831
3238 | f 625/625 626/626 833/833 832/832
3239 | f 836/836 835/835 741/741 742/742
3240 | f 837/837 836/836 742/742 680/680
3241 | f 838/838 837/837 680/680 567/567
3242 | f 840/840 839/839 568/568 560/560
3243 | f 841/841 840/840 560/560 561/561
3244 | f 842/842 841/841 561/561 559/559
3245 | f 843/843 842/842 559/559 508/508
3246 | f 844/844 843/843 508/508 509/509
3247 | f 616/616 582/582 849/849 850/850
3248 | f 849/849 582/582 1132/1132 1133/1133
3249 | f 1158/1158 1159/1159 788/788 847/847
3250 | f 618/618 620/620 765/765 782/782
3251 | f 783/783 669/669 853/853 852/852
3252 | f 782/782 783/783 852/852 851/851
3253 | f 856/856 798/798 791/791 792/792
3254 | f 16/16 37/37 856/856 792/792
3255 | f 755/755 862/862 814/814 815/815
3256 | f 863/863 862/862 755/755 754/754
3257 | f 864/864 863/863 754/754 753/753
3258 | f 753/753 750/750 865/865 864/864
3259 | f 750/750 749/749 866/866 865/865
3260 | f 867/867 866/866 749/749 748/748
3261 | f 868/868 867/867 748/748 744/744
3262 | f 869/869 868/868 744/744 537/537
3263 | f 743/743 869/869 537/537 870/870
3264 | f 537/537 516/516 871/871 870/870
3265 | f 817/817 818/818 500/500 584/584
3266 | f 584/584 596/596 816/816 817/817
3267 | f 757/757 756/756 600/600 601/601
3268 | f 601/601 604/604 758/758 757/757
3269 | f 600/600 597/597 598/598 599/599
3270 | f 599/599 598/598 630/630 629/629
3271 | f 834/834 629/629 630/630 833/833
3272 | f 626/626 843/843 844/844 627/627
3273 | f 834/834 833/833 626/626 627/627
3274 | f 603/603 604/604 601/601 602/602
3275 | f 601/601 600/600 599/599 876/876
3276 | f 605/605 603/603 602/602 786/786
3277 | f 877/877 629/629 834/834 878/878
3278 | f 876/876 599/599 629/629 877/877
3279 | f 880/880 876/876 877/877 881/881
3280 | f 880/880 602/602 601/601 876/876
3281 | f 884/884 786/786 602/602 880/880
3282 | f 850/850 849/849 846/846 787/787
3283 | f 846/846 849/849 1133/1133 1110/1110
3284 | f 846/846 820/820 785/785 787/787
3285 | f 1111/1111 820/820 846/846 1110/1110
3286 | f 1133/1133 848/848 497/497 1110/1110
3287 | f 1158/1158 847/847 497/497 1181/1181
3288 | f 497/497 848/848 1180/1180 1181/1181
3289 | f 1169/1169 1170/1170 789/789 790/790
3290 | f 1169/1169 790/790 855/855 1168/1168
3291 | f 1121/1121 855/855 790/790 1122/1122
3292 | f 1122/1122 1123/1123 791/791 861/861
3293 | f 818/818 1121/1121 1122/1122 861/861
3294 | f 802/802 861/861 791/791 798/798
3295 | f 802/802 803/803 610/610 500/500
3296 | f 500/500 818/818 861/861 802/802
3297 | f 585/585 610/610 803/803 800/800
3298 | f 803/803 802/802 798/798 799/799
3299 | f 800/800 801/801 586/586 585/585
3300 | f 803/803 799/799 793/793 800/800
3301 | f 801/801 800/800 793/793 796/796
3302 | f 801/801 875/875 735/735 586/586
3303 | f 737/737 735/735 875/875 874/874
3304 | f 801/801 796/796 797/797 875/875
3305 | f 587/587 737/737 874/874 873/873
3306 | f 875/875 797/797 795/795 874/874
3307 | f 591/591 587/587 873/873 805/805
3308 | f 873/873 874/874 795/795 794/794
3309 | f 532/532 592/592 590/590 591/591
3310 | f 591/591 805/805 806/806 532/532
3311 | f 805/805 873/873 794/794 804/804
3312 | f 804/804 578/578 806/806 805/805
3313 | f 650/650 651/651 616/616 670/670
3314 | f 807/807 787/787 785/785 628/628
3315 | f 822/822 628/628 785/785 821/821
3316 | f 822/822 821/821 605/605 786/786
3317 | f 1046/1046 1047/1047 807/807 628/628
3318 | f 885/885 822/822 786/786 884/884
3319 | f 1045/1045 1046/1046 628/628 822/822
3320 | f 1044/1044 1045/1045 822/822 885/885
3321 | f 671/671 670/670 616/616 850/850
3322 | f 891/891 890/890 670/670 671/671
3323 | f 671/671 850/850 787/787 807/807
3324 | f 807/807 1047/1047 891/891 671/671
3325 | f 663/663 650/650 670/670 890/890
3326 | f 1043/1043 1044/1044 885/885 886/886
3327 | f 878/878 834/834 627/627 879/879
3328 | f 879/879 627/627 844/844 845/845
3329 | f 879/879 845/845 894/894 895/895
3330 | f 882/882 881/881 877/877 878/878
3331 | f 882/882 878/878 879/879 895/895
3332 | f 886/886 885/885 884/884 883/883
3333 | f 883/883 884/884 880/880 881/881
3334 | f 897/897 895/895 894/894 896/896
3335 | f 892/892 886/886 883/883 899/899
3336 | f 887/887 1043/1043 886/886 892/892
3337 | f 897/897 896/896 898/898 900/900
3338 | f 882/882 895/895 897/897 899/899
3339 | f 899/899 897/897 900/900 892/892
3340 | f 883/883 881/881 882/882 899/899
3341 | f 900/900 898/898 887/887 892/892
3342 | f 519/519 517/517 530/530 529/529
3343 | f 531/531 530/530 592/592 532/532
3344 | f 532/532 806/806 521/521 531/531
3345 | f 531/531 521/521 522/522 872/872
3346 | f 529/529 530/530 531/531 872/872
3347 | f 5/5 4/4 759/759 760/760
3348 | f 857/857 38/38 6/6 574/574
3349 | f 901/901 574/574 6/6 39/39
3350 | f 901/901 39/39 5/5 760/760
3351 | f 858/858 857/857 574/574 525/525
3352 | f 760/760 759/759 743/743 526/526
3353 | f 901/901 760/760 526/526 902/902
3354 | f 525/525 574/574 901/901 902/902
3355 | f 859/859 858/858 525/525 523/523
3356 | f 526/526 743/743 870/870 527/527
3357 | f 902/902 526/526 527/527 903/903
3358 | f 523/523 525/525 902/902 903/903
3359 | f 860/860 859/859 523/523 524/524
3360 | f 527/527 870/870 871/871 528/528
3361 | f 903/903 527/527 528/528 904/904
3362 | f 524/524 523/523 903/903 904/904
3363 | f 1031/1031 1032/1032 890/890 891/891
3364 | f 889/889 490/490 943/943 944/944
3365 | f 965/965 617/617 662/662 964/964
3366 | f 1015/1015 1016/1016 1035/1035 1034/1034
3367 | f 665/665 664/664 1034/1034 1035/1035
3368 | f 963/963 766/766 661/661 962/962
3369 | f 1036/1036 1037/1037 666/666 767/767
3370 | f 964/964 662/662 766/766 963/963
3371 | f 1035/1035 1016/1016 1017/1017 1036/1036
3372 | f 767/767 665/665 1035/1035 1036/1036
3373 | f 669/669 668/668 1039/1039 1040/1040
3374 | f 959/959 960/960 581/581 784/784
3375 | f 845/845 844/844 509/509 510/510
3376 | f 1040/1040 1041/1041 853/853 669/669
3377 | f 959/959 784/784 854/854 958/958
3378 | f 1041/1041 1042/1042 20/20 853/853
3379 | f 854/854 21/21 957/957 958/958
3380 | f 888/888 1025/1025 887/887 898/898
3381 | f 1058/1058 1059/1059 1025/1025 888/888
3382 | f 898/898 896/896 511/511 888/888
3383 | f 1011/1011 1012/1012 1031/1031 1030/1030
3384 | f 1010/1010 1011/1011 1030/1030 1029/1029
3385 | f 1028/1028 1009/1009 1010/1010 1029/1029
3386 | f 1052/1052 1053/1053 971/971 972/972
3387 | f 983/983 1051/1051 973/973 974/974
3388 | f 943/943 490/490 580/580 942/942
3389 | f 1032/1032 1033/1033 663/663 890/890
3390 | f 580/580 617/617 965/965 942/942
3391 | f 1033/1033 1014/1014 1015/1015 1034/1034
3392 | f 1033/1033 1034/1034 664/664 663/663
3393 | f 961/961 660/660 581/581 960/960
3394 | f 1038/1038 1039/1039 668/668 667/667
3395 | f 961/961 962/962 661/661 660/660
3396 | f 1037/1037 1018/1018 1019/1019 1038/1038
3397 | f 667/667 666/666 1037/1037 1038/1038
3398 | f 971/971 1053/1053 1054/1054 970/970
3399 | f 1025/1025 1059/1059 1060/1060 1026/1026
3400 | f 983/983 974/974 975/975 984/984
3401 | f 994/994 983/983 984/984 995/995
3402 | f 893/893 1056/1056 1057/1057 511/511
3403 | f 511/511 896/896 894/894 893/893
3404 | f 893/893 510/510 1055/1055 1056/1056
3405 | f 894/894 845/845 510/510 893/893
3406 | f 1006/1006 1007/1007 907/907 823/823
3407 | f 908/908 907/907 1007/1007 1008/1008
3408 | f 909/909 908/908 1008/1008 991/991
3409 | f 910/910 909/909 991/991 992/992
3410 | f 911/911 910/910 992/992 993/993
3411 | f 945/945 912/912 911/911 993/993
3412 | f 945/945 994/994 913/913 912/912
3413 | f 994/994 995/995 914/914 913/913
3414 | f 731/731 808/808 1000/1000 1001/1001
3415 | f 933/933 925/925 924/924 990/990
3416 | f 928/928 927/927 935/935 936/936
3417 | f 1051/1051 1052/1052 972/972 973/973
3418 | f 1057/1057 1058/1058 888/888 511/511
3419 | f 478/478 934/934 933/933 61/61
3420 | f 935/935 934/934 478/478 62/62
3421 | f 62/62 462/462 936/936 935/935
3422 | f 462/462 392/392 937/937 936/936
3423 | f 469/469 938/938 937/937 392/392
3424 | f 939/939 938/938 469/469 466/466
3425 | f 940/940 939/939 466/466 465/465
3426 | f 941/941 940/940 465/465 472/472
3427 | f 1013/1013 943/943 942/942 1014/1014
3428 | f 947/947 946/946 467/467 215/215
3429 | f 215/215 216/216 948/948 947/947
3430 | f 949/949 948/948 216/216 217/217
3431 | f 217/217 218/218 950/950 949/949
3432 | f 218/218 332/332 951/951 950/950
3433 | f 332/332 219/219 952/952 951/951
3434 | f 220/220 953/953 952/952 219/219
3435 | f 220/220 221/221 954/954 953/953
3436 | f 352/352 955/955 954/954 221/221
3437 | f 352/352 425/425 956/956 955/955
3438 | f 1023/1023 957/957 956/956 425/425
3439 | f 1021/1021 959/959 958/958 1022/1022
3440 | f 961/961 960/960 1020/1020 1019/1019
3441 | f 1018/1018 962/962 961/961 1019/1019
3442 | f 963/963 962/962 1018/1018 1017/1017
3443 | f 1016/1016 964/964 963/963 1017/1017
3444 | f 965/965 964/964 1016/1016 1015/1015
3445 | f 942/942 965/965 1015/1015 1014/1014
3446 | f 966/966 944/944 1012/1012 1011/1011
3447 | f 967/967 889/889 944/944 966/966
3448 | f 808/808 967/967 966/966 1000/1000
3449 | f 941/941 968/968 932/932 940/940
3450 | f 969/969 968/968 941/941 1024/1024
3451 | f 510/510 509/509 563/563 970/970
3452 | f 971/971 970/970 563/563 564/564
3453 | f 972/972 971/971 564/564 775/775
3454 | f 973/973 972/972 775/775 776/776
3455 | f 974/974 973/973 776/776 777/777
3456 | f 975/975 974/974 777/777 778/778
3457 | f 976/976 975/975 778/778 36/36
3458 | f 977/977 976/976 36/36 345/345
3459 | f 978/978 977/977 345/345 344/344
3460 | f 979/979 978/978 344/344 343/343
3461 | f 980/980 979/979 343/343 342/342
3462 | f 981/981 980/980 342/342 115/115
3463 | f 982/982 981/981 115/115 114/114
3464 | f 61/61 982/982 114/114 60/60
3465 | f 986/986 985/985 977/977 978/978
3466 | f 987/987 986/986 978/978 979/979
3467 | f 988/988 987/987 979/979 980/980
3468 | f 981/981 989/989 988/988 980/980
3469 | f 982/982 990/990 989/989 981/981
3470 | f 933/933 990/990 982/982 61/61
3471 | f 997/997 996/996 985/985 986/986
3472 | f 998/998 997/997 986/986 987/987
3473 | f 999/999 998/998 987/987 988/988
3474 | f 923/923 999/999 988/988 989/989
3475 | f 1000/1000 966/966 1011/1011 1010/1010
3476 | f 1001/1001 1000/1000 1010/1010 1009/1009
3477 | f 970/970 1054/1054 1055/1055 510/510
3478 | f 1013/1013 1012/1012 944/944 943/943
3479 | f 1021/1021 1020/1020 960/960 959/959
3480 | f 1023/1023 1022/1022 958/958 957/957
3481 | f 1024/1024 941/941 472/472 473/473
3482 | f 474/474 467/467 1024/1024 473/473
3483 | f 1061/1061 1027/1027 1026/1026 1060/1060
3484 | f 1009/1009 1028/1028 1027/1027 1061/1061
3485 | f 1032/1032 1031/1031 1012/1012 1013/1013
3486 | f 1033/1033 1032/1032 1013/1013 1014/1014
3487 | f 1037/1037 1036/1036 1017/1017 1018/1018
3488 | f 1020/1020 1039/1039 1038/1038 1019/1019
3489 | f 1040/1040 1039/1039 1020/1020 1021/1021
3490 | f 1041/1041 1040/1040 1021/1021 1022/1022
3491 | f 1042/1042 1041/1041 1022/1022 1023/1023
3492 | f 1026/1026 1043/1043 887/887 1025/1025
3493 | f 1027/1027 1044/1044 1043/1043 1026/1026
3494 | f 1028/1028 1045/1045 1044/1044 1027/1027
3495 | f 1029/1029 1046/1046 1045/1045 1028/1028
3496 | f 1047/1047 1046/1046 1029/1029 1030/1030
3497 | f 891/891 1047/1047 1030/1030 1031/1031
3498 | f 1048/1048 914/914 995/995 1049/1049
3499 | f 915/915 1048/1048 1049/1049 996/996
3500 | f 1049/1049 995/995 984/984 1050/1050
3501 | f 996/996 1049/1049 1050/1050 985/985
3502 | f 1050/1050 984/984 975/975 976/976
3503 | f 985/985 1050/1050 976/976 977/977
3504 | f 945/945 1051/1051 983/983 994/994
3505 | f 993/993 1052/1052 1051/1051 945/945
3506 | f 1053/1053 1052/1052 993/993 992/992
3507 | f 1054/1054 1053/1053 992/992 991/991
3508 | f 991/991 1008/1008 1055/1055 1054/1054
3509 | f 1056/1056 1055/1055 1008/1008 1007/1007
3510 | f 1006/1006 1057/1057 1056/1056 1007/1007
3511 | f 1058/1058 1057/1057 1006/1006 1005/1005
3512 | f 1059/1059 1058/1058 1005/1005 1004/1004
3513 | f 1060/1060 1059/1059 1004/1004 1003/1003
3514 | f 1002/1002 1061/1061 1060/1060 1003/1003
3515 | f 1001/1001 1009/1009 1061/1061 1002/1002
3516 | f 1164/1164 1063/1063 1062/1062 1165/1165
3517 | f 1163/1163 1064/1064 1063/1063 1164/1164
3518 | f 1162/1162 1065/1065 1064/1064 1163/1163
3519 | f 1161/1161 1066/1066 1065/1065 1162/1162
3520 | f 1160/1160 1067/1067 1066/1066 1161/1161
3521 | f 1159/1159 1068/1068 1067/1067 1160/1160
3522 | f 1069/1069 1068/1068 1159/1159 1158/1158
3523 | f 1070/1070 1069/1069 1158/1158 1181/1181
3524 | f 1180/1180 1071/1071 1070/1070 1181/1181
3525 | f 1179/1179 1072/1072 1071/1071 1180/1180
3526 | f 1178/1178 1073/1073 1072/1072 1179/1179
3527 | f 1074/1074 1073/1073 1178/1178 1177/1177
3528 | f 1176/1176 1075/1075 1074/1074 1177/1177
3529 | f 1076/1076 1075/1075 1176/1176 1175/1175
3530 | f 1174/1174 1077/1077 1076/1076 1175/1175
3531 | f 1173/1173 1078/1078 1077/1077 1174/1174
3532 | f 1079/1079 1078/1078 1173/1173 1172/1172
3533 | f 1080/1080 1079/1079 1172/1172 1171/1171
3534 | f 1081/1081 1080/1080 1171/1171 1170/1170
3535 | f 1082/1082 1081/1081 1170/1170 1169/1169
3536 | f 1168/1168 1083/1083 1082/1082 1169/1169
3537 | f 1167/1167 1084/1084 1083/1083 1168/1168
3538 | f 1166/1166 1085/1085 1084/1084 1167/1167
3539 | f 1165/1165 1062/1062 1085/1085 1166/1166
3540 | f 847/847 1111/1111 1110/1110 497/497
3541 | f 788/788 1112/1112 1111/1111 847/847
3542 | f 494/494 1113/1113 1112/1112 788/788
3543 | f 492/492 1117/1117 1116/1116 493/493
3544 | f 491/491 1118/1118 1117/1117 492/492
3545 | f 1121/1121 1120/1120 499/499 855/855
3546 | f 789/789 1123/1123 1122/1122 790/790
3547 | f 621/621 1124/1124 1123/1123 789/789
3548 | f 504/504 1130/1130 1129/1129 505/505
3549 | f 419/419 1135/1135 1134/1134 133/133
3550 | f 416/416 1136/1136 1135/1135 419/419
3551 | f 389/389 1137/1137 1136/1136 416/416
3552 | f 169/169 1150/1150 1149/1149 360/360
3553 | f 327/327 1155/1155 1154/1154 164/164
3554 | f 165/165 1156/1156 1155/1155 327/327
3555 | f 166/166 1157/1157 1156/1156 165/165
3556 | f 133/133 1134/1134 1157/1157 166/166
3557 | f 1185/1185 1184/1184 1100/1100 1099/1099
3558 | f 1098/1098 1186/1186 1185/1185 1099/1099
3559 | f 1096/1096 1188/1188 1187/1187 1097/1097
3560 | f 1189/1189 1188/1188 1096/1096 1095/1095
3561 | f 1093/1093 1191/1191 1190/1190 1094/1094
3562 | f 1092/1092 1192/1192 1191/1191 1093/1093
3563 | f 1091/1091 1193/1193 1192/1192 1092/1092
3564 | f 1090/1090 1194/1194 1193/1193 1091/1091
3565 | f 1195/1195 1194/1194 1090/1090 1089/1089
3566 | f 1196/1196 1195/1195 1089/1089 1088/1088
3567 | f 516/516 518/518 1207/1207 871/871
3568 | f 517/517 519/519 1207/1207 518/518
3569 | f 489/489 75/75 444/444 80/80
3570 | f 524/524 872/872 522/522 860/860
3571 | f 444/444 75/75 432/432 73/73
3572 | f 79/79 70/70 1206/1206 443/443
3573 | f 489/489 80/80 70/70 79/79
3574 | f 519/519 529/529 904/904 528/528
3575 | f 904/904 529/529 872/872 524/524
3576 | f 519/519 528/528 871/871 1207/1207
3577 | f 1209/1209 1208/1208 567/567 570/570
3578 | f 569/569 568/568 1208/1208 1209/1209
3579 | f 1209/1209 570/570 572/572 573/573
3580 | f 566/566 569/569 1209/1209 573/573
3581 | f 189/189 1211/1211 408/408 191/191
3582 | f 409/409 1211/1211 189/189 173/173
3583 | f 1213/1213 121/121 118/118 1212/1212
3584 | f 120/120 1213/1213 1212/1212 119/119
3585 | f 1001/1001 1002/1002 1214/1214 731/731
3586 | f 1002/1002 1003/1003 1215/1215 1214/1214
3587 | f 1216/1216 1215/1215 1003/1003 1004/1004
3588 | f 1004/1004 1005/1005 1217/1217 1216/1216
3589 | f 1005/1005 1006/1006 823/823 1217/1217
3590 | f 571/571 1218/1218 684/684 683/683
3591 | f 118/118 121/121 1220/1220 246/246
3592 | f 121/121 123/123 247/247 1220/1220
3593 |
--------------------------------------------------------------------------------
/ARKitFaceExample.xcodeproj/.xcodesamplecode.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/ARKitFaceExample.xcodeproj/project.pbxproj:
--------------------------------------------------------------------------------
1 | // !$*UTF8*$!
2 | {
3 | archiveVersion = 1;
4 | classes = {
5 | };
6 | objectVersion = 46;
7 | objects = {
8 |
9 | /* Begin PBXBuildFile section */
10 | 11012C161F3D07BC0099F3A4 /* BlendShapeCharacter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */; };
11 | 116FDD742130A6BD008404D3 /* TransformVisualization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 116FDD732130A6BD008404D3 /* TransformVisualization.swift */; };
12 | 11764D981FB1344900D90F75 /* VideoTexturedFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */; };
13 | 11EC6AE12134CD18003C1B28 /* VideoTexturedFace.shader in Resources */ = {isa = PBXBuildFile; fileRef = 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */; };
14 | 11EE23D2213479CF00C0DEAD /* Utilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11EE23D1213479CF00C0DEAD /* Utilities.swift */; };
15 | 3929C48C1E89EC2C00E00B60 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */; };
16 | 3929C48E1E89EC2C00E00B60 /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3929C48D1E89EC2C00E00B60 /* ViewController.swift */; };
17 | 3929C4911E89EC2C00E00B60 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 3929C48F1E89EC2C00E00B60 /* Main.storyboard */; };
18 | 3929C4931E89EC2C00E00B60 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 3929C4921E89EC2C00E00B60 /* Assets.xcassets */; };
19 | 3929C49F1E89EE4400E00B60 /* Models.scnassets in Resources */ = {isa = PBXBuildFile; fileRef = 3929C49E1E89EE4400E00B60 /* Models.scnassets */; };
20 | 39D8DC1B1E8ADAE600386B05 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */; };
21 | C81DA0C61F4CC79A002AF1DA /* FaceOcclusionOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */; };
22 | C8904E551F4CFD000089E530 /* VirtualContent.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8904E541F4CFD000089E530 /* VirtualContent.swift */; };
23 | C8904E571F4CFD730089E530 /* TexturedFace.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8904E561F4CFD730089E530 /* TexturedFace.swift */; };
24 | /* End PBXBuildFile section */
25 |
26 | /* Begin PBXFileReference section */
27 | 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BlendShapeCharacter.swift; sourceTree = ""; };
28 | 11063F3B1EBE651B0033EE6D /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; };
29 | 116FDD732130A6BD008404D3 /* TransformVisualization.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TransformVisualization.swift; sourceTree = ""; };
30 | 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VideoTexturedFace.swift; sourceTree = ""; };
31 | 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */ = {isa = PBXFileReference; lastKnownFileType = text; path = VideoTexturedFace.shader; sourceTree = ""; };
32 | 11EE23D1213479CF00C0DEAD /* Utilities.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Utilities.swift; sourceTree = ""; };
33 | 11F053B72130CCD2005FCAF2 /* ARFaceGeometry.obj */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = ARFaceGeometry.obj; sourceTree = ""; };
34 | 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = ARKitFaceExample.app; sourceTree = BUILT_PRODUCTS_DIR; };
35 | 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = ""; };
36 | 3929C48D1E89EC2C00E00B60 /* ViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ViewController.swift; sourceTree = ""; };
37 | 3929C4901E89EC2C00E00B60 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = ""; };
38 | 3929C4921E89EC2C00E00B60 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = ""; };
39 | 3929C4971E89EC2C00E00B60 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; };
40 | 3929C49E1E89EE4400E00B60 /* Models.scnassets */ = {isa = PBXFileReference; lastKnownFileType = wrapper.scnassets; path = Models.scnassets; sourceTree = ""; };
41 | 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = ""; };
42 | 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */ = {isa = PBXFileReference; name = SampleCode.xcconfig; path = Configuration/SampleCode.xcconfig; sourceTree = ""; };
43 | A51C1467E68FA2B950926F70 /* LICENSE.txt */ = {isa = PBXFileReference; includeInIndex = 1; path = LICENSE.txt; sourceTree = ""; };
44 | C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FaceOcclusionOverlay.swift; sourceTree = ""; };
45 | C8904E541F4CFD000089E530 /* VirtualContent.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = VirtualContent.swift; sourceTree = ""; };
46 | C8904E561F4CFD730089E530 /* TexturedFace.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TexturedFace.swift; sourceTree = ""; };
47 | /* End PBXFileReference section */
48 |
49 | /* Begin PBXFrameworksBuildPhase section */
50 | 3929C4851E89EC2C00E00B60 /* Frameworks */ = {
51 | isa = PBXFrameworksBuildPhase;
52 | buildActionMask = 2147483647;
53 | files = (
54 | );
55 | runOnlyForDeploymentPostprocessing = 0;
56 | };
57 | /* End PBXFrameworksBuildPhase section */
58 |
59 | /* Begin PBXGroup section */
60 | 1488324C1EFC3ED00043E0AB /* Resources */ = {
61 | isa = PBXGroup;
62 | children = (
63 | 3929C49E1E89EE4400E00B60 /* Models.scnassets */,
64 | 3929C4921E89EC2C00E00B60 /* Assets.xcassets */,
65 | 3929C4971E89EC2C00E00B60 /* Info.plist */,
66 | 3929C48F1E89EC2C00E00B60 /* Main.storyboard */,
67 | 39D8DC1A1E8ADAE600386B05 /* LaunchScreen.storyboard */,
68 | 11EC6AE02134CD18003C1B28 /* VideoTexturedFace.shader */,
69 | );
70 | path = Resources;
71 | sourceTree = "";
72 | };
73 | 3929C47F1E89EC2C00E00B60 = {
74 | isa = PBXGroup;
75 | children = (
76 | 11063F3B1EBE651B0033EE6D /* README.md */,
77 | 11F053B72130CCD2005FCAF2 /* ARFaceGeometry.obj */,
78 | 3929C48A1E89EC2C00E00B60 /* ARKitFaceExample */,
79 | 3929C4891E89EC2C00E00B60 /* Products */,
80 | 690A3257C5246D71602E2F11 /* Configuration */,
81 | 41860C938D38FA5D26934B0F /* LICENSE */,
82 | );
83 | sourceTree = "";
84 | };
85 | 3929C4891E89EC2C00E00B60 /* Products */ = {
86 | isa = PBXGroup;
87 | children = (
88 | 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */,
89 | );
90 | name = Products;
91 | sourceTree = "";
92 | };
93 | 3929C48A1E89EC2C00E00B60 /* ARKitFaceExample */ = {
94 | isa = PBXGroup;
95 | children = (
96 | 3929C48B1E89EC2C00E00B60 /* AppDelegate.swift */,
97 | 3929C48D1E89EC2C00E00B60 /* ViewController.swift */,
98 | C8904E581F4CFE380089E530 /* Face Overlay Content */,
99 | 11EE23D1213479CF00C0DEAD /* Utilities.swift */,
100 | 1488324C1EFC3ED00043E0AB /* Resources */,
101 | );
102 | path = ARKitFaceExample;
103 | sourceTree = "";
104 | };
105 | 41860C938D38FA5D26934B0F /* LICENSE */ = {
106 | isa = PBXGroup;
107 | children = (
108 | A51C1467E68FA2B950926F70 /* LICENSE.txt */,
109 | );
110 | name = LICENSE;
111 | path = LICENSE;
112 | sourceTree = "";
113 | };
114 | 690A3257C5246D71602E2F11 /* Configuration */ = {
115 | isa = PBXGroup;
116 | children = (
117 | 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */,
118 | );
119 | name = Configuration;
120 | sourceTree = "";
121 | };
122 | C8904E581F4CFE380089E530 /* Face Overlay Content */ = {
123 | isa = PBXGroup;
124 | children = (
125 | C8904E541F4CFD000089E530 /* VirtualContent.swift */,
126 | 116FDD732130A6BD008404D3 /* TransformVisualization.swift */,
127 | C8904E561F4CFD730089E530 /* TexturedFace.swift */,
128 | C81DA0C51F4CC79A002AF1DA /* FaceOcclusionOverlay.swift */,
129 | 11764D971FB1344900D90F75 /* VideoTexturedFace.swift */,
130 | 11012C151F3D07BC0099F3A4 /* BlendShapeCharacter.swift */,
131 | );
132 | path = "Face Overlay Content";
133 | sourceTree = "";
134 | };
135 | /* End PBXGroup section */
136 |
137 | /* Begin PBXNativeTarget section */
138 | 3929C4871E89EC2C00E00B60 /* ARKitFaceExample */ = {
139 | isa = PBXNativeTarget;
140 | buildConfigurationList = 3929C49A1E89EC2C00E00B60 /* Build configuration list for PBXNativeTarget "ARKitFaceExample" */;
141 | buildPhases = (
142 | 3929C4841E89EC2C00E00B60 /* Sources */,
143 | 3929C4851E89EC2C00E00B60 /* Frameworks */,
144 | 3929C4861E89EC2C00E00B60 /* Resources */,
145 | );
146 | buildRules = (
147 | );
148 | dependencies = (
149 | );
150 | name = ARKitFaceExample;
151 | productName = ARKitFaceExample;
152 | productReference = 3929C4881E89EC2C00E00B60 /* ARKitFaceExample.app */;
153 | productType = "com.apple.product-type.application";
154 | };
155 | /* End PBXNativeTarget section */
156 |
157 | /* Begin PBXProject section */
158 | 3929C4801E89EC2C00E00B60 /* Project object */ = {
159 | isa = PBXProject;
160 | attributes = {
161 | LastSwiftUpdateCheck = 0900;
162 | LastUpgradeCheck = 0930;
163 | ORGANIZATIONNAME = Apple;
164 | TargetAttributes = {
165 | 3929C4871E89EC2C00E00B60 = {
166 | CreatedOnToolsVersion = 9.0;
167 | LastSwiftMigration = 1000;
168 | ProvisioningStyle = Automatic;
169 | };
170 | };
171 | };
172 | buildConfigurationList = 3929C4831E89EC2C00E00B60 /* Build configuration list for PBXProject "ARKitFaceExample" */;
173 | compatibilityVersion = "Xcode 3.2";
174 | developmentRegion = English;
175 | hasScannedForEncodings = 0;
176 | knownRegions = (
177 | en,
178 | Base,
179 | );
180 | mainGroup = 3929C47F1E89EC2C00E00B60;
181 | productRefGroup = 3929C4891E89EC2C00E00B60 /* Products */;
182 | projectDirPath = "";
183 | projectRoot = "";
184 | targets = (
185 | 3929C4871E89EC2C00E00B60 /* ARKitFaceExample */,
186 | );
187 | };
188 | /* End PBXProject section */
189 |
190 | /* Begin PBXResourcesBuildPhase section */
191 | 3929C4861E89EC2C00E00B60 /* Resources */ = {
192 | isa = PBXResourcesBuildPhase;
193 | buildActionMask = 2147483647;
194 | files = (
195 | 11EC6AE12134CD18003C1B28 /* VideoTexturedFace.shader in Resources */,
196 | 3929C49F1E89EE4400E00B60 /* Models.scnassets in Resources */,
197 | 39D8DC1B1E8ADAE600386B05 /* LaunchScreen.storyboard in Resources */,
198 | 3929C4931E89EC2C00E00B60 /* Assets.xcassets in Resources */,
199 | 3929C4911E89EC2C00E00B60 /* Main.storyboard in Resources */,
200 | );
201 | runOnlyForDeploymentPostprocessing = 0;
202 | };
203 | /* End PBXResourcesBuildPhase section */
204 |
205 | /* Begin PBXSourcesBuildPhase section */
206 | 3929C4841E89EC2C00E00B60 /* Sources */ = {
207 | isa = PBXSourcesBuildPhase;
208 | buildActionMask = 2147483647;
209 | files = (
210 | 116FDD742130A6BD008404D3 /* TransformVisualization.swift in Sources */,
211 | C81DA0C61F4CC79A002AF1DA /* FaceOcclusionOverlay.swift in Sources */,
212 | 11012C161F3D07BC0099F3A4 /* BlendShapeCharacter.swift in Sources */,
213 | 3929C48E1E89EC2C00E00B60 /* ViewController.swift in Sources */,
214 | 3929C48C1E89EC2C00E00B60 /* AppDelegate.swift in Sources */,
215 | C8904E551F4CFD000089E530 /* VirtualContent.swift in Sources */,
216 | 11764D981FB1344900D90F75 /* VideoTexturedFace.swift in Sources */,
217 | 11EE23D2213479CF00C0DEAD /* Utilities.swift in Sources */,
218 | C8904E571F4CFD730089E530 /* TexturedFace.swift in Sources */,
219 | );
220 | runOnlyForDeploymentPostprocessing = 0;
221 | };
222 | /* End PBXSourcesBuildPhase section */
223 |
224 | /* Begin PBXVariantGroup section */
225 | 3929C48F1E89EC2C00E00B60 /* Main.storyboard */ = {
226 | isa = PBXVariantGroup;
227 | children = (
228 | 3929C4901E89EC2C00E00B60 /* Base */,
229 | );
230 | name = Main.storyboard;
231 | path = ..;
232 | sourceTree = "";
233 | };
234 | /* End PBXVariantGroup section */
235 |
236 | /* Begin XCBuildConfiguration section */
237 | 3929C4981E89EC2C00E00B60 /* Debug */ = {
238 | isa = XCBuildConfiguration;
239 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */;
240 | buildSettings = {
241 | ALWAYS_SEARCH_USER_PATHS = NO;
242 | CLANG_ANALYZER_NONNULL = YES;
243 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
244 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
245 | CLANG_CXX_LIBRARY = "libc++";
246 | CLANG_ENABLE_MODULES = YES;
247 | CLANG_ENABLE_OBJC_ARC = YES;
248 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
249 | CLANG_WARN_BOOL_CONVERSION = YES;
250 | CLANG_WARN_COMMA = YES;
251 | CLANG_WARN_CONSTANT_CONVERSION = YES;
252 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
253 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
254 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
255 | CLANG_WARN_EMPTY_BODY = YES;
256 | CLANG_WARN_ENUM_CONVERSION = YES;
257 | CLANG_WARN_INFINITE_RECURSION = YES;
258 | CLANG_WARN_INT_CONVERSION = YES;
259 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
260 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
261 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
262 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
263 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
264 | CLANG_WARN_STRICT_PROTOTYPES = YES;
265 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
266 | CLANG_WARN_UNREACHABLE_CODE = YES;
267 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
268 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
269 | COPY_PHASE_STRIP = NO;
270 | DEBUG_INFORMATION_FORMAT = dwarf;
271 | ENABLE_STRICT_OBJC_MSGSEND = YES;
272 | ENABLE_TESTABILITY = YES;
273 | GCC_C_LANGUAGE_STANDARD = gnu99;
274 | GCC_DYNAMIC_NO_PIC = NO;
275 | GCC_NO_COMMON_BLOCKS = YES;
276 | GCC_OPTIMIZATION_LEVEL = 0;
277 | GCC_PREPROCESSOR_DEFINITIONS = (
278 | "DEBUG=1",
279 | "$(inherited)",
280 | );
281 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
282 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
283 | GCC_WARN_UNDECLARED_SELECTOR = YES;
284 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
285 | GCC_WARN_UNUSED_FUNCTION = YES;
286 | GCC_WARN_UNUSED_VARIABLE = YES;
287 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
288 | MTL_ENABLE_DEBUG_INFO = YES;
289 | ONLY_ACTIVE_ARCH = YES;
290 | SDKROOT = iphoneos;
291 | SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
292 | SWIFT_OPTIMIZATION_LEVEL = "-Onone";
293 | TARGETED_DEVICE_FAMILY = "1,2";
294 | };
295 | name = Debug;
296 | };
297 | 3929C4991E89EC2C00E00B60 /* Release */ = {
298 | isa = XCBuildConfiguration;
299 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */;
300 | buildSettings = {
301 | ALWAYS_SEARCH_USER_PATHS = NO;
302 | CLANG_ANALYZER_NONNULL = YES;
303 | CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
304 | CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
305 | CLANG_CXX_LIBRARY = "libc++";
306 | CLANG_ENABLE_MODULES = YES;
307 | CLANG_ENABLE_OBJC_ARC = YES;
308 | CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
309 | CLANG_WARN_BOOL_CONVERSION = YES;
310 | CLANG_WARN_COMMA = YES;
311 | CLANG_WARN_CONSTANT_CONVERSION = YES;
312 | CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
313 | CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
314 | CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
315 | CLANG_WARN_EMPTY_BODY = YES;
316 | CLANG_WARN_ENUM_CONVERSION = YES;
317 | CLANG_WARN_INFINITE_RECURSION = YES;
318 | CLANG_WARN_INT_CONVERSION = YES;
319 | CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
320 | CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
321 | CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
322 | CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
323 | CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
324 | CLANG_WARN_STRICT_PROTOTYPES = YES;
325 | CLANG_WARN_SUSPICIOUS_MOVE = YES;
326 | CLANG_WARN_UNREACHABLE_CODE = YES;
327 | CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
328 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
329 | COPY_PHASE_STRIP = NO;
330 | DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
331 | ENABLE_NS_ASSERTIONS = NO;
332 | ENABLE_STRICT_OBJC_MSGSEND = YES;
333 | GCC_C_LANGUAGE_STANDARD = gnu99;
334 | GCC_NO_COMMON_BLOCKS = YES;
335 | GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
336 | GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
337 | GCC_WARN_UNDECLARED_SELECTOR = YES;
338 | GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
339 | GCC_WARN_UNUSED_FUNCTION = YES;
340 | GCC_WARN_UNUSED_VARIABLE = YES;
341 | IPHONEOS_DEPLOYMENT_TARGET = 11.0;
342 | MTL_ENABLE_DEBUG_INFO = NO;
343 | SDKROOT = iphoneos;
344 | SWIFT_COMPILATION_MODE = wholemodule;
345 | SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule";
346 | TARGETED_DEVICE_FAMILY = "1,2";
347 | VALIDATE_PRODUCT = YES;
348 | };
349 | name = Release;
350 | };
351 | 3929C49B1E89EC2C00E00B60 /* Debug */ = {
352 | isa = XCBuildConfiguration;
353 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */;
354 | buildSettings = {
355 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
356 | CODE_SIGN_IDENTITY = "-";
357 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
358 | CODE_SIGN_STYLE = Automatic;
359 | DEVELOPMENT_TEAM = "";
360 | INFOPLIST_FILE = "$(SRCROOT)/ARKitFaceExample/Resources/Info.plist";
361 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
362 | PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME}${SAMPLE_CODE_DISAMBIGUATOR}";
363 | PRODUCT_NAME = "$(TARGET_NAME)";
364 | PROVISIONING_PROFILE_SPECIFIER = "";
365 | SWIFT_VERSION = 4.2;
366 | TARGETED_DEVICE_FAMILY = "1,2";
367 | };
368 | name = Debug;
369 | };
370 | 3929C49C1E89EC2C00E00B60 /* Release */ = {
371 | isa = XCBuildConfiguration;
372 | baseConfigurationReference = 971FFC8F4AAE1F661DD719DD /* SampleCode.xcconfig */;
373 | buildSettings = {
374 | ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
375 | CODE_SIGN_IDENTITY = "-";
376 | "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
377 | CODE_SIGN_STYLE = Automatic;
378 | DEVELOPMENT_TEAM = "";
379 | INFOPLIST_FILE = "$(SRCROOT)/ARKitFaceExample/Resources/Info.plist";
380 | LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
381 | PRODUCT_BUNDLE_IDENTIFIER = "com.example.apple-samplecode.${PRODUCT_NAME}${SAMPLE_CODE_DISAMBIGUATOR}";
382 | PRODUCT_NAME = "$(TARGET_NAME)";
383 | PROVISIONING_PROFILE_SPECIFIER = "";
384 | SWIFT_VERSION = 4.2;
385 | TARGETED_DEVICE_FAMILY = "1,2";
386 | };
387 | name = Release;
388 | };
389 | /* End XCBuildConfiguration section */
390 |
391 | /* Begin XCConfigurationList section */
392 | 3929C4831E89EC2C00E00B60 /* Build configuration list for PBXProject "ARKitFaceExample" */ = {
393 | isa = XCConfigurationList;
394 | buildConfigurations = (
395 | 3929C4981E89EC2C00E00B60 /* Debug */,
396 | 3929C4991E89EC2C00E00B60 /* Release */,
397 | );
398 | defaultConfigurationIsVisible = 0;
399 | defaultConfigurationName = Release;
400 | };
401 | 3929C49A1E89EC2C00E00B60 /* Build configuration list for PBXNativeTarget "ARKitFaceExample" */ = {
402 | isa = XCConfigurationList;
403 | buildConfigurations = (
404 | 3929C49B1E89EC2C00E00B60 /* Debug */,
405 | 3929C49C1E89EC2C00E00B60 /* Release */,
406 | );
407 | defaultConfigurationIsVisible = 0;
408 | defaultConfigurationName = Release;
409 | };
410 | /* End XCConfigurationList section */
411 | };
412 | rootObject = 3929C4801E89EC2C00E00B60 /* Project object */;
413 | }
414 |
--------------------------------------------------------------------------------
/ARKitFaceExample.xcodeproj/project.xcworkspace/xcshareddata/WorkspaceSettings.xcsettings:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | BuildSystemType
6 | Latest
7 |
8 |
9 |
--------------------------------------------------------------------------------
/ARKitFaceExample/AppDelegate.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Contains the application's delegate.
6 | */
7 |
8 | import UIKit
9 | import ARKit
10 |
11 | @UIApplicationMain
12 | class AppDelegate: UIResponder, UIApplicationDelegate {
13 | var window: UIWindow?
14 |
15 | func application(_ application: UIApplication, willFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? = nil) -> Bool {
16 | if !ARFaceTrackingConfiguration.isSupported {
17 | /*
18 | Shipping apps cannot require a face-tracking-compatible device, and thus must
19 | offer face tracking AR as a secondary feature. In a shipping app, use the
20 | `isSupported` property to determine whether to offer face tracking AR features.
21 | This sample code has no features other than a demo of ARKit face tracking, so
22 | it replaces the AR view (the initial storyboard in the view controller) with
23 | an alternate view controller containing a static error message.
24 | */
25 | let storyboard = UIStoryboard(name: "Main", bundle: nil)
26 | window?.rootViewController = storyboard.instantiateViewController(withIdentifier: "unsupportedDeviceMessage")
27 | }
28 | return true
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Base.lproj/Main.storyboard:
--------------------------------------------------------------------------------
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 |
74 |
83 |
84 |
85 |
86 |
87 |
88 |
89 |
90 |
91 |
92 |
93 |
94 |
95 |
96 |
97 |
98 |
99 |
100 |
101 |
102 |
103 |
104 |
105 |
106 |
107 |
108 |
109 |
110 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/BlendShapeCharacter.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | A simple cartoon character animated using ARKit blend shapes.
6 | */
7 |
8 | import Foundation
9 | import SceneKit
10 | import ARKit
11 |
12 | /// - Tag: BlendShapeCharacter
13 | class BlendShapeCharacter: NSObject, VirtualContentController {
14 |
15 | var contentNode: SCNNode?
16 |
17 | private var originalJawY: Float = 0
18 |
19 | private lazy var jawNode = contentNode!.childNode(withName: "jaw", recursively: true)!
20 | private lazy var eyeLeftNode = contentNode!.childNode(withName: "eyeLeft", recursively: true)!
21 | private lazy var eyeRightNode = contentNode!.childNode(withName: "eyeRight", recursively: true)!
22 |
23 | private lazy var jawHeight: Float = {
24 | let (min, max) = jawNode.boundingBox
25 | return max.y - min.y
26 | }()
27 |
28 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
29 | guard anchor is ARFaceAnchor else { return nil }
30 |
31 | contentNode = SCNReferenceNode(named: "robotHead")
32 | originalJawY = jawNode.position.y
33 | return contentNode
34 | }
35 |
36 | /// - Tag: BlendShapeAnimation
37 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
38 | guard let faceAnchor = anchor as? ARFaceAnchor
39 | else { return }
40 |
41 | let blendShapes = faceAnchor.blendShapes
42 | guard let eyeBlinkLeft = blendShapes[.eyeBlinkLeft] as? Float,
43 | let eyeBlinkRight = blendShapes[.eyeBlinkRight] as? Float,
44 | let jawOpen = blendShapes[.jawOpen] as? Float
45 | else { return }
46 | eyeLeftNode.scale.z = 1 - eyeBlinkLeft
47 | eyeRightNode.scale.z = 1 - eyeBlinkRight
48 | jawNode.position.y = originalJawY - jawHeight * jawOpen
49 | }
50 | }
51 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/FaceOcclusionOverlay.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Demonstrates how to simulate occlusion of virtual content by the real-world face.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | class FaceOcclusionOverlay: NSObject, VirtualContentController {
12 |
13 | var contentNode: SCNNode?
14 |
15 | var occlusionNode: SCNNode!
16 |
17 | /// - Tag: OcclusionMaterial
18 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
19 | guard let sceneView = renderer as? ARSCNView,
20 | anchor is ARFaceAnchor else { return nil }
21 |
22 | #if targetEnvironment(simulator)
23 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.")
24 | #else
25 | /*
26 | Write depth but not color and render before other objects.
27 | This causes the geometry to occlude other SceneKit content
28 | while showing the camera view beneath, creating the illusion
29 | that real-world objects are obscuring virtual 3D objects.
30 | */
31 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
32 | faceGeometry.firstMaterial!.colorBufferWriteMask = []
33 | occlusionNode = SCNNode(geometry: faceGeometry)
34 | occlusionNode.renderingOrder = -1
35 |
36 | // Add 3D asset positioned to appear as "glasses".
37 | let faceOverlayContent = SCNReferenceNode(named: "overlayModel")
38 |
39 | contentNode = SCNNode()
40 | contentNode!.addChildNode(occlusionNode)
41 | contentNode!.addChildNode(faceOverlayContent)
42 | #endif
43 | return contentNode
44 | }
45 |
46 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
47 | guard let faceGeometry = occlusionNode.geometry as? ARSCNFaceGeometry,
48 | let faceAnchor = anchor as? ARFaceAnchor
49 | else { return }
50 |
51 | faceGeometry.update(from: faceAnchor.geometry)
52 | }
53 |
54 | }
55 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/ProjectMesh.swift:
--------------------------------------------------------------------------------
1 | //
2 | // ProjectMesh.swift
3 | // ARKitFaceExample
4 |
5 | import Foundation
6 |
7 | /*
8 | Abstract:
9 | Project face mesh vertices on UIView.
10 | */
11 |
12 | import ARKit
13 | import SceneKit
14 |
15 | class ProjectMesh: NSObject, VirtualContentController {
16 |
17 | var contentNode: SCNNode?
18 | var debugView: UIView?
19 |
20 |
21 | func setupDebugView(scenView: ARSCNView){
22 | DispatchQueue.main.async {
23 | let screenSize = UIScreen.main.bounds
24 |
25 | self.debugView = UIView(frame: screenSize)
26 | self.debugView!.backgroundColor = .clear
27 |
28 | scenView.addSubview(self.debugView!)
29 | }
30 | }
31 |
32 | /// - Tag: ARNodeTracking
33 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
34 | // This class adds AR content only for face anchors.
35 | guard let sceneView = renderer as? ARSCNView,
36 | anchor is ARFaceAnchor else { return nil }
37 |
38 | #if targetEnvironment(simulator)
39 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.")
40 | #else
41 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
42 | let material = faceGeometry.firstMaterial!
43 |
44 | material.diffuse.contents = UIColor.lightGray
45 | material.lightingModel = .physicallyBased
46 |
47 | contentNode = SCNNode(geometry: faceGeometry)
48 | #endif
49 |
50 | // add a debug view on top of the scene view to write the 2d points
51 | if(debugView == nil){
52 | setupDebugView(scenView: sceneView)
53 | }
54 |
55 | // Provide the node to ARKit for keeping in sync with the face anchor.
56 | return contentNode
57 | }
58 |
59 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
60 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry,
61 | let faceAnchor = anchor as? ARFaceAnchor,
62 | let sceneView = renderer as? ARSCNView
63 | else { return }
64 |
65 | faceGeometry.update(from: faceAnchor.geometry)
66 |
67 | let points:[ARFaceAnchor.VerticesAndProjection] = faceAnchor.verticeAndProjection(to: sceneView)
68 |
69 | DispatchQueue.main.async {
70 |
71 | // draw debug points
72 | let projected = points.map{ $0.projected}
73 |
74 | self.debugView?.drawCircles(points: projected)
75 | }
76 | }
77 | }
78 |
79 | extension ARFaceAnchor{
80 |
81 | struct VerticesAndProjection {
82 | var vertex: SIMD3
83 | var projected: CGPoint
84 | }
85 |
86 | func verticeAndProjection(to view: ARSCNView) -> [VerticesAndProjection]{
87 |
88 | let points = geometry.vertices.compactMap({ (vertex) -> VerticesAndProjection? in
89 |
90 | let col = SIMD4(SCNVector4())
91 | let pos = SIMD4(SCNVector4(vertex.x, vertex.y, vertex.z, 1))
92 |
93 | let pworld = transform * simd_float4x4(col, col, col, pos)
94 |
95 | let vect = view.projectPoint(SCNVector3(pworld.position.x, pworld.position.y, pworld.position.z))
96 |
97 | let p = CGPoint(x: CGFloat(vect.x), y: CGFloat(vect.y))
98 | return VerticesAndProjection(vertex:vertex, projected: p)
99 | })
100 |
101 | return points
102 | }
103 | }
104 |
105 |
106 | extension matrix_float4x4 {
107 |
108 | /// Get the position of the transform matrix.
109 | public var position: SCNVector3 {
110 | get{
111 | return SCNVector3(self[3][0], self[3][1], self[3][2])
112 | }
113 | }
114 |
115 | /// Retrieve translation from a quaternion matrix
116 | public var translation: SCNVector3 {
117 | get {
118 | return SCNVector3(columns.3.x, columns.3.y, columns.3.z)
119 | }
120 | }
121 | }
122 |
123 |
124 | extension UIView{
125 |
126 | private struct drawCircleProperty{
127 | static let circleFillColor = UIColor.green
128 | static let circleStrokeColor = UIColor.black
129 | static let circleRadius: CGFloat = 3.0
130 | }
131 |
132 | func drawCircle(point: CGPoint) {
133 |
134 | let circlePath = UIBezierPath(arcCenter: point, radius: drawCircleProperty.circleRadius, startAngle: CGFloat(0), endAngle: CGFloat(Double.pi * 2.0), clockwise: true)
135 | let shapeLayer = CAShapeLayer()
136 | shapeLayer.path = circlePath.cgPath
137 | shapeLayer.fillColor = drawCircleProperty.circleFillColor.cgColor
138 | shapeLayer.strokeColor = drawCircleProperty.circleStrokeColor.cgColor
139 |
140 | self.layer.addSublayer(shapeLayer)
141 | }
142 |
143 | func drawCircles(points: [CGPoint]){
144 |
145 | self.clearLayers()
146 |
147 | for point in points{
148 | self.drawCircle(point: point)
149 | }
150 | }
151 |
152 | func clearLayers(){
153 | if let subLayers = self.layer.sublayers {
154 | for subLayer in subLayers {
155 | subLayer.removeFromSuperlayer()
156 | }
157 | }
158 | }
159 | }
160 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/TexturedFace.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Displays the 3D face mesh geometry provided by ARKit, with a static texture.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | class TexturedFace: NSObject, VirtualContentController {
12 |
13 | var contentNode: SCNNode?
14 |
15 | /// - Tag: CreateARSCNFaceGeometry
16 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
17 | guard let sceneView = renderer as? ARSCNView,
18 | anchor is ARFaceAnchor else { return nil }
19 |
20 | #if targetEnvironment(simulator)
21 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.")
22 | #else
23 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
24 | let material = faceGeometry.firstMaterial!
25 |
26 | material.diffuse.contents = #imageLiteral(resourceName: "wireframeTexture") // Example texture map image.
27 | material.lightingModel = .physicallyBased
28 |
29 | contentNode = SCNNode(geometry: faceGeometry)
30 | #endif
31 | return contentNode
32 | }
33 |
34 | /// - Tag: ARFaceGeometryUpdate
35 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
36 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry,
37 | let faceAnchor = anchor as? ARFaceAnchor
38 | else { return }
39 |
40 | faceGeometry.update(from: faceAnchor.geometry)
41 | }
42 |
43 | }
44 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/TransformVisualization.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Displays coordinate axes visualizing the tracked face pose (and eyes in iOS 12).
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | class TransformVisualization: NSObject, VirtualContentController {
12 |
13 | var contentNode: SCNNode?
14 |
15 | // Load multiple copies of the axis origin visualization for the transforms this class visualizes.
16 | lazy var rightEyeNode = SCNReferenceNode(named: "coordinateOrigin")
17 | lazy var leftEyeNode = SCNReferenceNode(named: "coordinateOrigin")
18 |
19 | /// - Tag: ARNodeTracking
20 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
21 | // This class adds AR content only for face anchors.
22 | guard anchor is ARFaceAnchor else { return nil }
23 |
24 | // Load an asset from the app bundle to provide visual content for the anchor.
25 | contentNode = SCNReferenceNode(named: "coordinateOrigin")
26 |
27 | // Add content for eye tracking in iOS 12.
28 | self.addEyeTransformNodes()
29 |
30 | // Provide the node to ARKit for keeping in sync with the face anchor.
31 | return contentNode
32 | }
33 |
34 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
35 | guard #available(iOS 12.0, *), let faceAnchor = anchor as? ARFaceAnchor
36 | else { return }
37 |
38 | rightEyeNode.simdTransform = faceAnchor.rightEyeTransform
39 | leftEyeNode.simdTransform = faceAnchor.leftEyeTransform
40 | }
41 |
42 | func addEyeTransformNodes() {
43 | guard #available(iOS 12.0, *), let anchorNode = contentNode else { return }
44 |
45 | // Scale down the coordinate axis visualizations for eyes.
46 | rightEyeNode.simdPivot = float4x4(diagonal: float4(3, 3, 3, 1))
47 | leftEyeNode.simdPivot = float4x4(diagonal: float4(3, 3, 3, 1))
48 |
49 | anchorNode.addChildNode(rightEyeNode)
50 | anchorNode.addChildNode(leftEyeNode)
51 | }
52 |
53 | }
54 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/VideoTexturedFace.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Demonstrates using video imagery to texture and modify the face mesh.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | /// - Tag: VideoTexturedFace
12 | class VideoTexturedFace: TexturedFace {
13 |
14 | override func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
15 | guard let sceneView = renderer as? ARSCNView,
16 | let frame = sceneView.session.currentFrame,
17 | anchor is ARFaceAnchor
18 | else { return nil }
19 |
20 | #if targetEnvironment(simulator)
21 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.")
22 | #else
23 | // Show video texture as the diffuse material and disable lighting.
24 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!, fillMesh: true)!
25 | let material = faceGeometry.firstMaterial!
26 | material.diffuse.contents = sceneView.scene.background.contents
27 | material.lightingModel = .constant
28 |
29 | guard let shaderURL = Bundle.main.url(forResource: "VideoTexturedFace", withExtension: "shader"),
30 | let modifier = try? String(contentsOf: shaderURL)
31 | else { fatalError("Can't load shader modifier from bundle.") }
32 | faceGeometry.shaderModifiers = [ .geometry: modifier]
33 |
34 | // Pass view-appropriate image transform to the shader modifier so
35 | // that the mapped video lines up correctly with the background video.
36 | let affineTransform = frame.displayTransform(for: .portrait, viewportSize: sceneView.bounds.size)
37 | let transform = SCNMatrix4(affineTransform)
38 | faceGeometry.setValue(SCNMatrix4Invert(transform), forKey: "displayTransform")
39 |
40 | contentNode = SCNNode(geometry: faceGeometry)
41 | #endif
42 | return contentNode
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Face Overlay Content/VirtualContent.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Manages virtual overlays diplayed on the face in the AR experience.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | enum VirtualContentType: Int {
12 | case transforms, texture, geometry, videoTexture, blendShape
13 |
14 | func makeController() -> VirtualContentController {
15 | switch self {
16 | case .transforms:
17 | // return TransformVisualization()
18 | return ProjectMesh()
19 | case .texture:
20 | return TexturedFace()
21 | case .geometry:
22 | return FaceOcclusionOverlay()
23 | case .videoTexture:
24 | return VideoTexturedFace()
25 | case .blendShape:
26 | return BlendShapeCharacter()
27 | }
28 | }
29 | }
30 |
31 | /// For forwarding `ARSCNViewDelegate` messages to the object controlling the currently visible virtual content.
32 | protocol VirtualContentController: ARSCNViewDelegate {
33 | /// The root node for the virtual content.
34 | var contentNode: SCNNode? { get set }
35 |
36 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode?
37 |
38 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor)
39 | }
40 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | },
6 | "images" : [
7 | {
8 | "size" : "40x40",
9 | "filename" : "Icon-40.png",
10 | "scale" : "1x",
11 | "idiom" : "ipad"
12 | },
13 | {
14 | "size" : "40x40",
15 | "filename" : "Icon-40@2x.png",
16 | "scale" : "2x",
17 | "idiom" : "ipad"
18 | },
19 | {
20 | "size" : "60x60",
21 | "filename" : "Icon-60@2x.png",
22 | "scale" : "2x",
23 | "idiom" : "iphone"
24 | },
25 | {
26 | "size" : "72x72",
27 | "filename" : "Icon-72.png",
28 | "scale" : "1x",
29 | "idiom" : "ipad"
30 | },
31 | {
32 | "size" : "72x72",
33 | "filename" : "Icon-72@2x.png",
34 | "scale" : "2x",
35 | "idiom" : "ipad"
36 | },
37 | {
38 | "size" : "76x76",
39 | "filename" : "Icon-76.png",
40 | "scale" : "1x",
41 | "idiom" : "ipad"
42 | },
43 | {
44 | "size" : "76x76",
45 | "filename" : "Icon-76@2x.png",
46 | "scale" : "2x",
47 | "idiom" : "ipad"
48 | },
49 | {
50 | "size" : "50x50",
51 | "filename" : "Icon-Small-50.png",
52 | "scale" : "1x",
53 | "idiom" : "ipad"
54 | },
55 | {
56 | "size" : "50x50",
57 | "filename" : "Icon-Small-50@2x.png",
58 | "scale" : "2x",
59 | "idiom" : "ipad"
60 | },
61 | {
62 | "size" : "29x29",
63 | "filename" : "Icon-Small.png",
64 | "scale" : "1x",
65 | "idiom" : "iphone"
66 | },
67 | {
68 | "size" : "29x29",
69 | "filename" : "Icon-Small@2x.png",
70 | "scale" : "2x",
71 | "idiom" : "iphone"
72 | },
73 | {
74 | "size" : "57x57",
75 | "filename" : "Icon.png",
76 | "scale" : "1x",
77 | "idiom" : "iphone"
78 | },
79 | {
80 | "size" : "57x57",
81 | "filename" : "Icon@2x.png",
82 | "scale" : "2x",
83 | "idiom" : "iphone"
84 | },
85 | {
86 | "size" : "29x29",
87 | "filename" : "Icon-Small@3x.png",
88 | "scale" : "3x",
89 | "idiom" : "iphone"
90 | },
91 | {
92 | "size" : "40x40",
93 | "filename" : "Icon-40@3x.png",
94 | "scale" : "3x",
95 | "idiom" : "iphone"
96 | },
97 | {
98 | "size" : "60x60",
99 | "filename" : "Icon-60@3x.png",
100 | "scale" : "3x",
101 | "idiom" : "iphone"
102 | },
103 | {
104 | "size" : "40x40",
105 | "filename" : "Icon-40@2x.png",
106 | "scale" : "2x",
107 | "idiom" : "iphone"
108 | },
109 | {
110 | "size" : "29x29",
111 | "filename" : "Icon-Small.png",
112 | "scale" : "1x",
113 | "idiom" : "ipad"
114 | },
115 | {
116 | "size" : "29x29",
117 | "filename" : "Icon-Small@2x.png",
118 | "scale" : "2x",
119 | "idiom" : "ipad"
120 | },
121 | {
122 | "size" : "83.5x83.5",
123 | "filename" : "Icon-83.5@2x.png",
124 | "scale" : "2x",
125 | "idiom" : "ipad"
126 | },
127 | {
128 | "size" : "20x20",
129 | "filename" : "NotificationIcon@2x.png",
130 | "scale" : "2x",
131 | "idiom" : "iphone"
132 | },
133 | {
134 | "size" : "20x20",
135 | "filename" : "NotificationIcon@3x.png",
136 | "scale" : "3x",
137 | "idiom" : "iphone"
138 | },
139 | {
140 | "size" : "20x20",
141 | "filename" : "NotificationIcon~ipad.png",
142 | "scale" : "1x",
143 | "idiom" : "ipad"
144 | },
145 | {
146 | "size" : "20x20",
147 | "filename" : "NotificationIcon~ipad@2x.png",
148 | "scale" : "2x",
149 | "idiom" : "ipad"
150 | },
151 | {
152 | "size" : "1024x1024",
153 | "filename" : "ios-marketing.png",
154 | "scale" : "1x",
155 | "idiom" : "ios-marketing"
156 | }
157 | ]
158 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-40@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-60@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-72@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-76@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-83.5@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small-50@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon-Small@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/Icon@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/NotificationIcon~ipad@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/ios-marketing.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/AppIcon.appiconset/ios-marketing.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "info" : {
3 | "author" : "xcode",
4 | "version" : 1
5 | }
6 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "blendShapes-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "blendShapes.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes-1.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/blendShapes.imageset/blendShapes.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "geometry-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "geometry.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry-1.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/geometry.imageset/geometry.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "refresh@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "refresh@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restart.imageset/refresh@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "refreshPressed@2x.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "refreshPressed@3x.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | }
22 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@2x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@2x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@3x.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/restartPressed.imageset/refreshPressed@3x.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "texture-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "texture.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture-1.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/texture.imageset/texture.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "transforms-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "transforms.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms-1.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/transforms.imageset/transforms.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "scale" : "1x"
6 | },
7 | {
8 | "idiom" : "universal",
9 | "filename" : "videoTexture-1.png",
10 | "scale" : "2x"
11 | },
12 | {
13 | "idiom" : "universal",
14 | "filename" : "videoTexture.png",
15 | "scale" : "3x"
16 | }
17 | ],
18 | "info" : {
19 | "version" : 1,
20 | "author" : "xcode"
21 | },
22 | "properties" : {
23 | "template-rendering-intent" : "template"
24 | }
25 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture-1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture-1.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/videoTexture.imageset/videoTexture.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/Contents.json:
--------------------------------------------------------------------------------
1 | {
2 | "images" : [
3 | {
4 | "idiom" : "universal",
5 | "filename" : "wireframeTexture.png"
6 | }
7 | ],
8 | "info" : {
9 | "version" : 1,
10 | "author" : "xcode"
11 | }
12 | }
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/wireframeTexture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Assets.xcassets/wireframeTexture.imageset/wireframeTexture.png
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Info.plist:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | CFBundleDevelopmentRegion
6 | en
7 | CFBundleDisplayName
8 | AR Faces
9 | CFBundleExecutable
10 | $(EXECUTABLE_NAME)
11 | CFBundleIdentifier
12 | $(PRODUCT_BUNDLE_IDENTIFIER)
13 | CFBundleInfoDictionaryVersion
14 | 6.0
15 | CFBundleName
16 | $(PRODUCT_NAME)
17 | CFBundlePackageType
18 | APPL
19 | CFBundleShortVersionString
20 | 1.0
21 | CFBundleVersion
22 | 1
23 | LSRequiresIPhoneOS
24 |
25 | NSCameraUsageDescription
26 | The camera is used for augmenting reality
27 | UILaunchStoryboardName
28 | LaunchScreen
29 | UIMainStoryboardFile
30 | Main
31 | UIRequiredDeviceCapabilities
32 |
33 | armv7
34 |
35 | UIRequiresFullScreen
36 |
37 | UIStatusBarHidden
38 |
39 | UISupportedInterfaceOrientations
40 |
41 | UIInterfaceOrientationPortrait
42 |
43 | UISupportedInterfaceOrientations~ipad
44 |
45 | UIInterfaceOrientationPortrait
46 | UIInterfaceOrientationPortraitUpsideDown
47 | UIInterfaceOrientationLandscapeLeft
48 | UIInterfaceOrientationLandscapeRight
49 |
50 | UIViewControllerBasedStatusBarAppearance
51 |
52 |
53 |
54 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/LaunchScreen.storyboard:
--------------------------------------------------------------------------------
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 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Models.scnassets/coordinateOrigin.scn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/coordinateOrigin.scn
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Models.scnassets/overlayModel.scn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/overlayModel.scn
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/Models.scnassets/robotHead.scn:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/ARKitFaceExample/Resources/Models.scnassets/robotHead.scn
--------------------------------------------------------------------------------
/ARKitFaceExample/Resources/VideoTexturedFace.shader:
--------------------------------------------------------------------------------
1 | /*
2 |
3 |
4 | SceneKit shader (geometry) modifier for texture mapping ARKit camera video onto the face.
5 |
6 |
7 | */
8 |
9 | #pragma arguments
10 | float4x4 displayTransform // from ARFrame.displayTransform(for:viewportSize:)
11 |
12 | #pragma body
13 |
14 | // Transform the vertex to the camera coordinate system.
15 | float4 vertexCamera = scn_node.modelViewTransform * _geometry.position;
16 |
17 | // Camera projection and perspective divide to get normalized viewport coordinates (clip space).
18 | float4 vertexClipSpace = scn_frame.projectionTransform * vertexCamera;
19 | vertexClipSpace /= vertexClipSpace.w;
20 |
21 | // XY in clip space is [-1,1]x[-1,1], so adjust to UV texture coordinates: [0,1]x[0,1].
22 | // Image coordinates are Y-flipped (upper-left origin).
23 | float4 vertexImageSpace = float4(vertexClipSpace.xy * 0.5 + 0.5, 0.0, 1.0);
24 | vertexImageSpace.y = 1.0 - vertexImageSpace.y;
25 |
26 | // Apply ARKit's display transform (device orientation * front-facing camera flip).
27 | float4 transformedVertex = displayTransform * vertexImageSpace;
28 |
29 | // Output as texture coordinates for use in later rendering stages.
30 | _geometry.texcoords[0] = transformedVertex.xy;
31 |
32 | /**
33 | * MARK: Post-process special effects
34 | */
35 |
36 | // Make head appear big. (You could also apply other geometry modifications here.)
37 | _geometry.position.xyz *= 1.5;
38 |
--------------------------------------------------------------------------------
/ARKitFaceExample/Utilities.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Convenience extensions for system types.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 |
11 | extension SCNMatrix4 {
12 | /**
13 | Create a 4x4 matrix from CGAffineTransform, which represents a 3x3 matrix
14 | but stores only the 6 elements needed for 2D affine transformations.
15 |
16 | [ a b 0 ] [ a b 0 0 ]
17 | [ c d 0 ] -> [ c d 0 0 ]
18 | [ tx ty 1 ] [ 0 0 1 0 ]
19 | . [ tx ty 0 1 ]
20 |
21 | Used for transforming texture coordinates in the shader modifier.
22 | (Needs to be SCNMatrix4, not SIMD float4x4, for passing to shader modifier via KVC.)
23 | */
24 | init(_ affineTransform: CGAffineTransform) {
25 | self.init()
26 | m11 = Float(affineTransform.a)
27 | m12 = Float(affineTransform.b)
28 | m21 = Float(affineTransform.c)
29 | m22 = Float(affineTransform.d)
30 | m41 = Float(affineTransform.tx)
31 | m42 = Float(affineTransform.ty)
32 | m33 = 1
33 | m44 = 1
34 | }
35 | }
36 |
37 | extension SCNReferenceNode {
38 | convenience init(named resourceName: String, loadImmediately: Bool = true) {
39 | let url = Bundle.main.url(forResource: resourceName, withExtension: "scn", subdirectory: "Models.scnassets")!
40 | self.init(url: url)!
41 | if loadImmediately {
42 | self.load()
43 | }
44 | }
45 | }
46 |
--------------------------------------------------------------------------------
/ARKitFaceExample/ViewController.swift:
--------------------------------------------------------------------------------
1 | /*
2 | See LICENSE folder for this sample’s licensing information.
3 |
4 | Abstract:
5 | Main view controller for the AR experience.
6 | */
7 |
8 | import ARKit
9 | import SceneKit
10 | import UIKit
11 |
12 | class ViewController: UIViewController, ARSessionDelegate {
13 |
14 | // MARK: Outlets
15 |
16 | @IBOutlet var sceneView: ARSCNView!
17 | @IBOutlet weak var tabBar: UITabBar!
18 |
19 | // MARK: Properties
20 |
21 | var contentControllers: [VirtualContentType: VirtualContentController] = [:]
22 |
23 | var selectedVirtualContent: VirtualContentType! {
24 | didSet {
25 | guard oldValue != nil, oldValue != selectedVirtualContent
26 | else { return }
27 |
28 | // Remove existing content when switching types.
29 | contentControllers[oldValue]?.contentNode?.removeFromParentNode()
30 |
31 | // If there's an anchor already (switching content), get the content controller to place initial content.
32 | // Otherwise, the content controller will place it in `renderer(_:didAdd:for:)`.
33 | if let anchor = currentFaceAnchor, let node = sceneView.node(for: anchor),
34 | let newContent = selectedContentController.renderer(sceneView, nodeFor: anchor) {
35 | node.addChildNode(newContent)
36 | }
37 | }
38 | }
39 | var selectedContentController: VirtualContentController {
40 | if let controller = contentControllers[selectedVirtualContent] {
41 | return controller
42 | } else {
43 | let controller = selectedVirtualContent.makeController()
44 | contentControllers[selectedVirtualContent] = controller
45 | return controller
46 | }
47 | }
48 |
49 | var currentFaceAnchor: ARFaceAnchor?
50 |
51 | // MARK: - View Controller Life Cycle
52 |
53 | override func viewDidLoad() {
54 | super.viewDidLoad()
55 |
56 | sceneView.delegate = self
57 | sceneView.session.delegate = self
58 | sceneView.automaticallyUpdatesLighting = true
59 |
60 | // Set the initial face content.
61 | tabBar.selectedItem = tabBar.items!.first!
62 | selectedVirtualContent = VirtualContentType(rawValue: tabBar.selectedItem!.tag)
63 | }
64 |
65 | override func viewDidAppear(_ animated: Bool) {
66 | super.viewDidAppear(animated)
67 |
68 | // AR experiences typically involve moving the device without
69 | // touch input for some time, so prevent auto screen dimming.
70 | UIApplication.shared.isIdleTimerDisabled = true
71 |
72 | // "Reset" to run the AR session for the first time.
73 | resetTracking()
74 | }
75 |
76 | // MARK: - ARSessionDelegate
77 |
78 | func session(_ session: ARSession, didFailWithError error: Error) {
79 | guard error is ARError else { return }
80 |
81 | let errorWithInfo = error as NSError
82 | let messages = [
83 | errorWithInfo.localizedDescription,
84 | errorWithInfo.localizedFailureReason,
85 | errorWithInfo.localizedRecoverySuggestion
86 | ]
87 | let errorMessage = messages.compactMap({ $0 }).joined(separator: "\n")
88 |
89 | DispatchQueue.main.async {
90 | self.displayErrorMessage(title: "The AR session failed.", message: errorMessage)
91 | }
92 | }
93 |
94 | /// - Tag: ARFaceTrackingSetup
95 | func resetTracking() {
96 | guard ARFaceTrackingConfiguration.isSupported else { return }
97 | let configuration = ARFaceTrackingConfiguration()
98 | configuration.isLightEstimationEnabled = true
99 | sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
100 | }
101 |
102 | // MARK: - Error handling
103 |
104 | func displayErrorMessage(title: String, message: String) {
105 | // Present an alert informing about the error that has occurred.
106 | let alertController = UIAlertController(title: title, message: message, preferredStyle: .alert)
107 | let restartAction = UIAlertAction(title: "Restart Session", style: .default) { _ in
108 | alertController.dismiss(animated: true, completion: nil)
109 | self.resetTracking()
110 | }
111 | alertController.addAction(restartAction)
112 | present(alertController, animated: true, completion: nil)
113 | }
114 | }
115 |
116 | extension ViewController: UITabBarDelegate {
117 | func tabBar(_ tabBar: UITabBar, didSelect item: UITabBarItem) {
118 | guard let contentType = VirtualContentType(rawValue: item.tag)
119 | else { fatalError("unexpected virtual content tag") }
120 | selectedVirtualContent = contentType
121 | }
122 | }
123 |
124 | extension ViewController: ARSCNViewDelegate {
125 |
126 | func renderer(_ renderer: SCNSceneRenderer, didAdd node: SCNNode, for anchor: ARAnchor) {
127 | guard let faceAnchor = anchor as? ARFaceAnchor else { return }
128 | currentFaceAnchor = faceAnchor
129 |
130 | // If this is the first time with this anchor, get the controller to create content.
131 | // Otherwise (switching content), will change content when setting `selectedVirtualContent`.
132 | if node.childNodes.isEmpty, let contentNode = selectedContentController.renderer(renderer, nodeFor: faceAnchor) {
133 | node.addChildNode(contentNode)
134 | }
135 | }
136 |
137 | /// - Tag: ARFaceGeometryUpdate
138 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
139 | guard anchor == currentFaceAnchor,
140 | let contentNode = selectedContentController.contentNode,
141 | contentNode.parent == node
142 | else { return }
143 |
144 | selectedContentController.renderer(renderer, didUpdate: contentNode, for: anchor)
145 | }
146 | }
147 |
148 |
--------------------------------------------------------------------------------
/Configuration/SampleCode.xcconfig:
--------------------------------------------------------------------------------
1 | //
2 | // See LICENSE folder for this sample’s licensing information.
3 | //
4 | // SampleCode.xcconfig
5 | //
6 |
7 | // The `SAMPLE_CODE_DISAMBIGUATOR` configuration is to make it easier to build
8 | // and run a sample code project. Once you set your project's development team,
9 | // you'll have a unique bundle identifier. This is because the bundle identifier
10 | // is derived based on the 'SAMPLE_CODE_DISAMBIGUATOR' value. Do not use this
11 | // approach in your own projects—it's only useful for sample code projects because
12 | // they are frequently downloaded and don't have a development team set.
13 | SAMPLE_CODE_DISAMBIGUATOR=${DEVELOPMENT_TEAM}
14 |
--------------------------------------------------------------------------------
/Documentation/FaceExampleModes.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/Documentation/FaceExampleModes.png
--------------------------------------------------------------------------------
/IMG_7407.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/hugoliv/projectvertices/5839f92c629133e85e12a850ccde203ae5f5efe3/IMG_7407.jpg
--------------------------------------------------------------------------------
/LICENSE/LICENSE.txt:
--------------------------------------------------------------------------------
1 | Copyright © 2020 Apple Inc.
2 |
3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
4 |
5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
6 |
7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
8 |
9 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # Tracking and Visualizing Faces
2 |
3 | Detect faces in a front-camera AR experience, overlay virtual content, and animate facial expressions in real-time.
4 |
5 | ## Overview
6 |
7 | This sample app presents a simple interface allowing you to choose between five augmented reality (AR) visualizations on devices with a TrueDepth front-facing camera.
8 |
9 | - An overlay of x/y/z axes indicating the ARKit coordinate system tracking the face (and in iOS 12, the position and orientation of each eye).
10 | - The face mesh provided by ARKit, showing automatic estimation of the real-world directional lighting environment, as well as a texture you can use to map 2D imagery onto the face.
11 | - Virtual 3D content that appears to attach to (and interact with) the user's real face.
12 | - Live camera video texture-mapped onto the ARKit face mesh, with which you can create effects that appear to distort the user's real face in 3D.
13 | - A simple robot character whose facial expression animates to match that of the user, showing how to use ARKit's animation blend shape values to create experiences like the system Animoji app.
14 |
15 | Use the tab bar to switch between these modes.
16 |
17 | 
18 |
19 | ## Getting Started
20 |
21 | This sample code project requires:
22 |
23 | - An iOS device with front-facing TrueDepth camera:
24 | - iPhone X, iPhone XS, iPhone XS Max, or iPhone XR.
25 | - iPad Pro (11-inch) or iPad Pro (12.9-inch, 3rd generation).
26 | - iOS 11.0 or later.
27 | - Xcode 10.0 or later.
28 |
29 | ARKit is not available in iOS Simulator.
30 |
31 | ## Start a Face-Tracking Session in a SceneKit View
32 |
33 | Like other uses of ARKit, face tracking requires configuring and running a session (an [`ARSession`][0] object) and rendering the camera image together with virtual content in a view. This sample uses [`ARSCNView`][1] to display 3D content with SceneKit, but you can also use SpriteKit or build your own renderer using Metal (see [ARSKView][2] and [Displaying an AR Experience with Metal][3]).
34 |
35 | [0]:https://developer.apple.com/documentation/arkit/arsession
36 | [1]:https://developer.apple.com/documentation/arkit/arscnview
37 | [2]:https://developer.apple.com/documentation/arkit/arskview
38 | [3]:https://developer.apple.com/documentation/arkit/displaying_an_ar_experience_with_metal
39 |
40 | Face tracking differs from other uses of ARKit in the class you use to configure the session. To enable face tracking, create an instance of [`ARFaceTrackingConfiguration`][5], configure its properties, and pass it to the [`run(_:options:)`][6] method of the AR session associated with your view, as shown here:
41 |
42 | [5]:https://developer.apple.com/documentation/arkit/arfacetrackingconfiguration
43 | [6]:https://developer.apple.com/documentation/arkit/arsession/2875735-run
44 |
45 | ``` swift
46 | guard ARFaceTrackingConfiguration.isSupported else { return }
47 | let configuration = ARFaceTrackingConfiguration()
48 | configuration.isLightEstimationEnabled = true
49 | sceneView.session.run(configuration, options: [.resetTracking, .removeExistingAnchors])
50 | ```
51 | [View in Source](x-source-tag://ARFaceTrackingSetup)
52 |
53 | Before offering features that require a face-tracking AR session, check the [`isSupported`][7] property on the [`ARFaceTrackingConfiguration`][5] class to determine whether the current device supports ARKit face tracking.
54 |
55 | [7]:https://developer.apple.com/documentation/arkit/arconfiguration/2923553-issupported
56 |
57 | ## Track the Position and Orientation of a Face
58 |
59 | When face tracking is active, ARKit automatically adds [`ARFaceAnchor`][10] objects to the running AR session, containing information about the user's face, including its position and orientation. (ARKit detects and provides information about only face at a time. If multiple faces are present in the camera image, ARKit chooses the largest or most clearly recognizable face.)
60 |
61 | [10]:https://developer.apple.com/documentation/arkit/arfaceanchor
62 |
63 | In a SceneKit-based AR experience, you can add 3D content corresponding to a face anchor in the [`renderer(_:nodeFor:)`][11] or [`renderer(_:didAdd:for:)`][12] delegate method. ARKit manages a SceneKit node for the anchor, and updates that node's position and orientation on each frame, so any SceneKit content you add to that node automatically follows the position and orientation of the user's face.
64 |
65 | [11]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865801-renderer
66 | [12]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865794-renderer
67 |
68 | ``` swift
69 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
70 | // This class adds AR content only for face anchors.
71 | guard anchor is ARFaceAnchor else { return nil }
72 |
73 | // Load an asset from the app bundle to provide visual content for the anchor.
74 | contentNode = SCNReferenceNode(named: "coordinateOrigin")
75 |
76 | // Add content for eye tracking in iOS 12.
77 | self.addEyeTransformNodes()
78 |
79 | // Provide the node to ARKit for keeping in sync with the face anchor.
80 | return contentNode
81 | }
82 | ```
83 | [View in Source](x-source-tag://ARNodeTracking)
84 |
85 | This example uses a convenience extension on [`SCNReferenceNode`][13] to load content from an `.scn` file in the app bundle. The [`renderer(_:nodeFor:)`][1] method provides that node to [`ARSCNView`][1], allowing ARKit to automatically adjust the node's position and orientation to match the tracked face.
86 |
87 | [13]:https://developer.apple.com/documentation/scenekit/scnreferencenode
88 |
89 | ## Use Face Geometry to Model the User's Face
90 |
91 | ARKit provides a coarse 3D mesh geometry matching the size, shape, topology, and current facial expression of the user's face. ARKit also provides the [`ARSCNFaceGeometry`][20] class, offering an easy way to visualize this mesh in SceneKit.
92 |
93 | [20]:https://developer.apple.com/documentation/arkit/arscnfacegeometry
94 |
95 | Your AR experience can use this mesh to place or draw content that appears to attach to the face. For example, by applying a semitransparent texture to this geometry you could paint virtual tattoos or makeup onto the user's skin.
96 |
97 | To create a SceneKit face geometry, initialize an [`ARSCNFaceGeometry`][20] object with the Metal device your SceneKit view uses for rendering, and assign that geometry to the SceneKit node tracking the face anchor.
98 |
99 | ``` swift
100 | func renderer(_ renderer: SCNSceneRenderer, nodeFor anchor: ARAnchor) -> SCNNode? {
101 | guard let sceneView = renderer as? ARSCNView,
102 | anchor is ARFaceAnchor else { return nil }
103 |
104 | #if targetEnvironment(simulator)
105 | #error("ARKit is not supported in iOS Simulator. Connect a physical iOS device and select it as your Xcode run destination, or select Generic iOS Device as a build-only destination.")
106 | #else
107 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
108 | let material = faceGeometry.firstMaterial!
109 |
110 | material.diffuse.contents = #imageLiteral(resourceName: "wireframeTexture") // Example texture map image.
111 | material.lightingModel = .physicallyBased
112 |
113 | contentNode = SCNNode(geometry: faceGeometry)
114 | #endif
115 | return contentNode
116 | }
117 | ```
118 | [View in Source](x-source-tag://CreateARSCNFaceGeometry)
119 |
120 | - Note: This example uses a texture with transparency to create the illusion of colorful grid lines painted onto a real face. You can use the `wireframeTexture.png` image included with this sample code project as a starting point to design your own face textures.
121 |
122 | ARKit updates its face mesh conform to the shape of the user's face, even as the user blinks, talks, and makes various expressions. To make the displayed face model follow the user's expressions, retrieve an updated face meshes in the [`renderer(_:didUpdate:for:)`][21] delegate callback, then update the [`ARSCNFaceGeometry`][20] object in your scene to match by passing the new face mesh to its [`update(from:)`][22] method:
123 |
124 | [21]:https://developer.apple.com/documentation/arkit/arscnviewdelegate/2865799-renderer
125 | [22]:https://developer.apple.com/documentation/arkit/arscnfacegeometry/2928196-update
126 |
127 | ``` swift
128 | func renderer(_ renderer: SCNSceneRenderer, didUpdate node: SCNNode, for anchor: ARAnchor) {
129 | guard let faceGeometry = node.geometry as? ARSCNFaceGeometry,
130 | let faceAnchor = anchor as? ARFaceAnchor
131 | else { return }
132 |
133 | faceGeometry.update(from: faceAnchor.geometry)
134 | }
135 | ```
136 | [View in Source](x-source-tag://ARFaceGeometryUpdate)
137 |
138 | ## Place 3D Content on the User's Face
139 |
140 | Another use of the face mesh that ARKit provides is to create *occlusion geometry* in your scene. An occlusion geometry is a 3D model that doesn't render any visible content (allowing the camera image to show through), but obstructs the camera's view of other virtual content in the scene.
141 |
142 | This technique creates the illusion that the real face interacts with virtual objects, even though the face is a 2D camera image and the virtual content is a rendered 3D object. For example, if you place an occlusion geometry and virtual glasses on the user's face, the face can obscure the frame of the glasses.
143 |
144 | To create an occlusion geometry for the face, start by creating an [`ARSCNFaceGeometry`][20] object as in the previous example. However, instead of configuring that object's SceneKit material with a visible appearance, set the material to render depth but not color during rendering:
145 |
146 | ``` swift
147 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!)!
148 | faceGeometry.firstMaterial!.colorBufferWriteMask = []
149 | occlusionNode = SCNNode(geometry: faceGeometry)
150 | occlusionNode.renderingOrder = -1
151 | ```
152 | [View in Source](x-source-tag://OcclusionMaterial)
153 |
154 | Because the material renders depth, other objects rendered by SceneKit correctly appear in front of it or behind it. But because the material doesn't render color, the camera image appears in its place.
155 |
156 | The sample app combines this technique with a SceneKit object positioned in front of the user's eyes, creating an effect where the user's nose realistically obscures the object. This object uses physically-based materials, so it automatically benefits from the real-time directional lighting information that [`ARFaceTrackingConfiguration`][5] provides.
157 |
158 | - Note: The `ARFaceGeometry.obj` file included in this sample project represents ARKit's face geometry in a neutral pose. You can use this as a template to design your own 3D art assets for placement on a real face.
159 |
160 | ## Map Camera Video onto 3D Face Geometry
161 |
162 | For additional creative uses of face tracking, you can texture-map the live 2D video feed from the camera onto the 3D geometry that ARKit provides. After mapping pixels in the camera video onto the corresponding points on ARKit's face mesh, you can modify that mesh, creating illusions such as resizing or distorting the user's face in 3D.
163 |
164 | First, create an [`ARSCNFaceGeometry`][20] for the face and assign the camera image to its main material. [`ARSCNView`][1] automatically sets the scene's [`background`][40] material to use the live video feed from the camera, so you can set the geometry to use the same material.
165 |
166 | [40]:https://developer.apple.com/documentation/scenekit/scnscene/1523665-background
167 |
168 | ``` swift
169 | // Show video texture as the diffuse material and disable lighting.
170 | let faceGeometry = ARSCNFaceGeometry(device: sceneView.device!, fillMesh: true)!
171 | let material = faceGeometry.firstMaterial!
172 | material.diffuse.contents = sceneView.scene.background.contents
173 | material.lightingModel = .constant
174 | ```
175 | [View in Source](x-source-tag://VideoTexturedFace)
176 |
177 | To correctly align the camera image to the face, you'll also need to modify the texture coordinates that SceneKit uses for rendering the image on the geometry. One easy way to perform this mapping is with a SceneKit shader modifier (see the [`SCNShadable`][41] protocol). The shader code here applies the coordinate system transformations needed to convert each vertex position in the mesh from 3D scene space to the 2D image space used by the video texture:
178 |
179 | [41]:https://developer.apple.com/documentation/scenekit/scnshadable
180 |
181 | ``` metal
182 | // Transform the vertex to the camera coordinate system.
183 | float4 vertexCamera = scn_node.modelViewTransform * _geometry.position;
184 |
185 | // Camera projection and perspective divide to get normalized viewport coordinates (clip space).
186 | float4 vertexClipSpace = scn_frame.projectionTransform * vertexCamera;
187 | vertexClipSpace /= vertexClipSpace.w;
188 |
189 | // XY in clip space is [-1,1]x[-1,1], so adjust to UV texture coordinates: [0,1]x[0,1].
190 | // Image coordinates are Y-flipped (upper-left origin).
191 | float4 vertexImageSpace = float4(vertexClipSpace.xy * 0.5 + 0.5, 0.0, 1.0);
192 | vertexImageSpace.y = 1.0 - vertexImageSpace.y;
193 |
194 | // Apply ARKit's display transform (device orientation * front-facing camera flip).
195 | float4 transformedVertex = displayTransform * vertexImageSpace;
196 |
197 | // Output as texture coordinates for use in later rendering stages.
198 | _geometry.texcoords[0] = transformedVertex.xy;
199 | ```
200 |
201 | When you assign a shader code string to the [`geometry`][42] entry point, SceneKit configures its renderer to automatically run that code on the GPU for each vertex in the mesh. This shader code also needs to know the intended orientation for the camera image, so the sample gets that from the ARKit [`displayTransform(for:viewportSize:)`][43] method and passes it to the shader's `displayTransform` argument:
202 |
203 | [42]:https://developer.apple.com/documentation/scenekit/scnshadermodifierentrypoint/1524108-geometry
204 | [43]:https://developer.apple.com/documentation/arkit/arframe/2923543-displaytransform
205 |
206 | ``` swift
207 | // Pass view-appropriate image transform to the shader modifier so
208 | // that the mapped video lines up correctly with the background video.
209 | let affineTransform = frame.displayTransform(for: .portrait, viewportSize: sceneView.bounds.size)
210 | let transform = SCNMatrix4(affineTransform)
211 | faceGeometry.setValue(SCNMatrix4Invert(transform), forKey: "displayTransform")
212 | ```
213 | [View in Source](x-source-tag://VideoTexturedFace)
214 |
215 | - Note: This example's shader modifier also applies a constant scale factor to all vertices, causing the user's face to appear larger than life. Try other transformations to distort the face in other ways.
216 |
217 | ## Animate a Character with Blend Shapes
218 |
219 | In addition to the face mesh shown in the earlier examples, ARKit also provides a more abstract representation of the user's facial expressions. You can use this representation (called *blend shapes*) to control animation parameters for your own 2D or 3D assets, creating a character that follows the user's real facial movements and expressions.
220 |
221 | As a basic demonstration of blend shape animation, this sample includes a simple model of a robot character's head, created using SceneKit primitive shapes. (See the `robotHead.scn` file in the source code.)
222 |
223 | To get the user's current facial expression, read the [`blendShapes`][50] dictionary from the face anchor in the [`renderer(_:didUpdate:for:)`][21] delegate callback. Then, examine the key-value pairs in that dictionary to calculate animation parameters for your 3D content and update that content accordingly.
224 |
225 | [50]:https://developer.apple.com/documentation/arkit/arfaceanchor/2928251-blendshapes
226 |
227 | ``` swift
228 | let blendShapes = faceAnchor.blendShapes
229 | guard let eyeBlinkLeft = blendShapes[.eyeBlinkLeft] as? Float,
230 | let eyeBlinkRight = blendShapes[.eyeBlinkRight] as? Float,
231 | let jawOpen = blendShapes[.jawOpen] as? Float
232 | else { return }
233 | eyeLeftNode.scale.z = 1 - eyeBlinkLeft
234 | eyeRightNode.scale.z = 1 - eyeBlinkRight
235 | jawNode.position.y = originalJawY - jawHeight * jawOpen
236 | ```
237 | [View in Source](x-source-tag://BlendShapeAnimation)
238 |
239 | There are more than 50 unique [`ARFaceAnchor.BlendShapeLocation`][51] coefficients, of which your app can use as few or as many as necessary to create the artistic effect you want. In this sample, the [`BlendShapeCharacter`](x-source-tag://BlendShapeCharacter) class performs this calculation, mapping the [`eyeBlinkLeft`][52] and [`eyeBlinkRight`][53] parameters to one axis of the [`scale`][54] factor of the robot's eyes, and the [`jawOpen`][55] parameter to offset the position of the robot's jaw.
240 |
241 | [51]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation
242 | [52]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928261-eyeblinkleft
243 | [53]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928262-eyeblinkright
244 | [54]:https://developer.apple.com/documentation/scenekit/scnnode/1408050-scale
245 | [55]:https://developer.apple.com/documentation/arkit/arfaceanchor/blendshapelocation/2928236-jawopen
246 |
247 |
--------------------------------------------------------------------------------