Fix some stuff

This commit is contained in:
Miloslav Ciz 2024-09-10 15:30:07 +02:00
parent 08fb45b652
commit 74ea3dcd41
4 changed files with 615 additions and 405 deletions

View file

@ -1,127 +1,170 @@
v -1.367492 -0.088491 0.692367
v -0.564691 -0.088491 0.707468
v -1.367492 -0.477689 0.853578
v -0.564691 -0.467011 0.864257
v -1.367492 -0.638901 1.242777
v -0.564691 -0.623799 1.242777
v -1.367492 -0.477689 1.631975
v -0.564691 -0.467011 1.621297
v -1.367492 -0.088491 1.793186
v -0.564691 -0.088491 1.778085
v -1.367492 0.300707 1.631975
v -0.564692 0.290029 1.621297
v -1.367492 0.461918 1.242777
v -0.564692 0.446817 1.242777
v -1.367492 0.300707 0.853578
v -0.564692 0.290029 0.864257
v -0.977041 -0.088491 0.593934
v -0.977041 -0.547293 0.783975
v -0.977041 -0.737334 1.242777
v -0.977041 -0.547293 1.701578
v -0.977041 -0.088491 1.891620
v -0.977041 0.370310 1.701578
v -0.977041 0.560352 1.242777
v -0.977041 0.370310 0.783975
v 1.364076 -0.088491 1.793186
v 0.561275 -0.088491 1.778085
v 1.364076 -0.477689 1.631975
v 0.561276 -0.467011 1.621297
v 1.364076 -0.638901 1.242777
v 0.561275 -0.623800 1.242777
v 1.364076 -0.477689 0.853578
v 0.561275 -0.467011 0.864257
v 1.364076 -0.088491 0.692367
v 0.561275 -0.088491 0.707469
v 1.364076 0.300707 0.853578
v 0.561275 0.290029 0.864257
v 1.364076 0.461918 1.242777
v 0.561275 0.446817 1.242777
v 1.364076 0.300707 1.631975
v 0.561275 0.290029 1.621297
v 0.973625 -0.088491 1.891620
v 0.973625 -0.547293 1.701578
v 0.973625 -0.737334 1.242777
v 0.973625 -0.547293 0.783975
v 0.973625 -0.088491 0.593934
v 0.973625 0.370310 0.783975
v 0.973625 0.560352 1.242777
v 0.973625 0.370310 1.701578
v -1.367492 -0.088491 -1.994304
v -0.564692 -0.088491 -1.979203
v -1.367492 -0.477690 -1.833092
v -0.564692 -0.467011 -1.822414
v -1.367492 -0.638901 -1.443894
v -0.564692 -0.623800 -1.443894
v -1.367492 -0.477690 -1.054696
v -0.564692 -0.467011 -1.065374
v -1.367492 -0.088491 -0.893484
v -0.564692 -0.088491 -0.908586
v -1.367492 0.300707 -1.054696
v -0.564692 0.290029 -1.065374
v -1.367492 0.461918 -1.443894
v -0.564692 0.446817 -1.443894
v -1.367492 0.300707 -1.833092
v -0.564692 0.290029 -1.822414
v -0.977042 -0.088491 -2.092737
v -0.977042 -0.547293 -1.902696
v -0.977042 -0.737334 -1.443894
v -0.977042 -0.547293 -0.985093
v -0.977042 -0.088491 -0.795051
v -0.977042 0.370310 -0.985093
v -0.977042 0.560352 -1.443894
v -0.977042 0.370310 -1.902696
v 1.364076 -0.088491 -0.893485
v 0.561275 -0.088491 -0.908586
v 1.364076 -0.477689 -1.054696
v 0.561276 -0.467011 -1.065374
v 1.364076 -0.638901 -1.443894
v 0.561275 -0.623800 -1.443894
v 1.364076 -0.477689 -1.833092
v 0.561275 -0.467011 -1.822414
v 1.364076 -0.088491 -1.994304
v 0.561275 -0.088491 -1.979202
v 1.364076 0.300707 -1.833092
v 0.561275 0.290029 -1.822414
v 1.364076 0.461918 -1.443894
v 0.561275 0.446817 -1.443894
v 1.364076 0.300707 -1.054696
v 0.561275 0.290029 -1.065374
v 0.973625 -0.088491 -0.795051
v 0.973625 -0.547293 -0.985093
v 0.973625 -0.737334 -1.443894
v 0.973625 -0.547293 -1.902696
v 0.973625 -0.088491 -2.092737
v 0.973625 0.370310 -1.902696
v 0.973625 0.560352 -1.443894
v 0.973625 0.370310 -0.985093
v -0.698782 -0.275080 0.375666
v -0.751407 -0.372127 -0.572427
v -0.825614 0.246449 0.476541
v -0.937154 0.186351 -0.702220
v -0.394348 0.933427 0.326820
v -0.462354 0.872611 -0.590201
v -0.415357 0.328760 -1.212920
v -0.435391 0.239687 -1.561080
v -0.532521 0.404681 0.902465
v -0.453189 -0.214632 -1.655422
v -0.479206 0.353065 1.310565
v -0.458878 -0.129672 1.378813
v -0.460862 -0.376587 -0.765167
v -0.497771 -0.260484 0.546224
v 0.710485 -0.275080 0.375666
v 0.763109 -0.372127 -0.572427
v 0.837320 0.246449 0.476541
v 0.948860 0.186351 -0.702220
v 0.406054 0.933427 0.326820
v 0.474060 0.872611 -0.590201
v 0.427063 0.328760 -1.212920
v 0.447097 0.239687 -1.561080
v 0.544227 0.404681 0.902465
v 0.464895 -0.214632 -1.655422
v 0.490912 0.353065 1.310565
v 0.470584 -0.129672 1.378813
v 0.472567 -0.376587 -0.765167
v 0.509476 -0.260484 0.546224
v -1.367492 -0.116281 -0.985208
v -1.367492 -1.055889 -1.374406
v -1.367492 -0.505479 -0.823996
v -1.367492 0.044930 -1.374406
v -0.977042 -0.964281 -1.833208
v -1.367492 -0.505479 -1.924816
v -0.977042 -0.505479 -2.023249
v -1.367492 -0.116281 -1.763604
v -0.977042 -0.046678 -1.833208
v -0.564692 -0.126959 -1.752926
v -0.564692 -0.505479 -1.909715
v -0.564692 -0.883999 -1.752926
v -0.564692 -1.040788 -1.374406
v -0.977042 -1.154322 -1.374406
v -1.367492 -0.894678 -0.985208
v -0.977042 -0.964281 -0.915605
v -0.564692 -0.883999 -0.995886
v -0.564692 -0.505479 -0.839098
v -0.977042 -0.505479 -0.725563
v -0.564692 -0.126959 -0.995886
v -0.977042 -0.046678 -0.915605
v -0.977042 0.143364 -1.374406
v -0.564692 0.029829 -1.374406
v -1.367492 -0.894678 -1.763604
v 1.364076 -0.116281 -1.763604
v 1.364076 -1.055889 -1.374406
v 1.364076 -0.505479 -1.924816
v 1.364076 0.044930 -1.374406
v 0.973625 -0.964281 -0.915605
v 1.364076 -0.505479 -0.823997
v 0.973625 -0.505479 -0.725563
v 1.364076 -0.116281 -0.985208
v 0.973625 -0.046678 -0.915605
v 0.561275 -0.126959 -0.995886
v 0.561275 -0.505479 -0.839098
v 0.561276 -0.883999 -0.995886
v 0.561275 -1.040788 -1.374406
v 0.973625 -1.154322 -1.374406
v 1.364076 -0.894677 -1.763604
v 0.973625 -0.964281 -1.833208
v 0.561275 -0.883999 -1.752926
v 0.561275 -0.505479 -1.909714
v 0.973625 -0.505479 -2.023249
v 0.561275 -0.126959 -1.752926
v 0.973625 -0.046678 -1.833208
v 0.973625 0.143364 -1.374406
v 0.561275 0.029829 -1.374406
v 1.364076 -0.894677 -0.985208
v -0.698782 -0.692068 0.445154
v -0.825614 -0.170539 0.546029
v -0.937154 -0.230637 -0.632732
v -0.394348 0.516439 0.396308
v -0.462354 0.455623 -0.520713
v -0.458878 -0.546660 1.448301
v -0.497771 -0.677472 0.615712
v 0.470584 -0.546660 1.448301
v 0.544227 -0.012307 0.971953
v -0.479206 -0.063923 1.380053
v 0.490912 -0.063923 1.380053
v -0.415357 -0.088228 -1.143432
v 0.406054 0.516439 0.396308
v -0.532521 -0.012307 0.971953
v 0.474060 0.455623 -0.520713
v -0.435391 -0.177301 -1.491592
v 0.447097 -0.177301 -1.491592
v 0.464895 -0.631620 -1.585934
v -0.453189 -0.631620 -1.585934
v -0.460862 -0.793575 -0.695679
v -0.751407 -0.789115 -0.502939
v 0.427063 -0.088228 -1.143432
v 0.472567 -0.793575 -0.695679
v 0.509476 -0.677472 0.615712
v 0.710485 -0.692068 0.445154
v 0.763109 -0.789115 -0.502939
v 0.948860 -0.230637 -0.632732
v 0.837320 -0.170539 0.546029
v -1.367492 -0.116281 1.701463
v -1.367492 -1.055889 1.312265
v -1.367492 -0.505479 1.862674
v -1.367492 0.044930 1.312265
v -0.977041 -0.964281 0.853463
v -1.367492 -0.505479 0.761855
v -0.977041 -0.505479 0.663422
v -1.367492 -0.116281 0.923066
v -0.977041 -0.046678 0.853463
v -0.564692 -0.126959 0.933745
v -0.564691 -0.505479 0.776956
v -0.564691 -0.883999 0.933745
v -0.564691 -1.040787 1.312265
v -0.977041 -1.154322 1.312265
v -1.367492 -0.894677 1.701463
v -0.977041 -0.964281 1.771066
v -0.564691 -0.883999 1.690785
v -0.564691 -0.505479 1.847573
v -0.977041 -0.505479 1.961108
v -0.564692 -0.126959 1.690785
v -0.977041 -0.046678 1.771066
v -0.977041 0.143364 1.312265
v -0.564692 0.029829 1.312265
v -1.367492 -0.894677 0.923066
v 1.364076 -0.116281 0.923066
v 1.364076 -1.055889 1.312265
v 1.364076 -0.505479 0.761855
v 1.364076 0.044930 1.312265
v 0.973625 -0.964281 1.771066
v 1.364076 -0.505479 1.862674
v 0.973625 -0.505479 1.961108
v 1.364076 -0.116281 1.701463
v 0.973625 -0.046678 1.771066
v 0.561275 -0.126959 1.690785
v 0.561275 -0.505479 1.847573
v 0.561276 -0.883999 1.690785
v 0.561275 -1.040788 1.312265
v 0.973625 -1.154322 1.312265
v 1.364076 -0.894677 0.923066
v 0.973625 -0.964281 0.853463
v 0.561275 -0.883999 0.933745
v 0.561275 -0.505479 0.776957
v 0.973625 -0.505479 0.663422
v 0.561275 -0.126959 0.933745
v 0.973625 -0.046678 0.853463
v 0.973625 0.143364 1.312265
v 0.561275 0.029829 1.312265
v 1.364076 -0.894677 1.701463
vt 0.209947 0.456692
vt 0.125567 0.263214
vt 0.241901 0.375309
vt 0.129805 0.491643
vt 0.124436 0.570947
vt 0.244305 0.631444
vt 0.124436 0.631444
vt 0.244305 0.690874
vt 0.124436 0.690874
vt 0.009233 0.690874
vt 0.009233 0.631444
vt 0.009233 0.570947
vt 0.009233 0.508357
vt 0.124436 0.508357
vt 0.244305 0.508357
vt 0.244305 0.932575
vt 0.124436 0.995127
vt 0.124436 0.932575
vt 0.009233 0.932575
vt 0.009233 0.871660
vt 0.124436 0.871660
vt 0.244305 0.871660
vt 0.009233 0.811345
vt 0.124436 0.811345
vt 0.244305 0.811345
vt 0.244305 0.751007
vt 0.124436 0.751007
vt 0.009233 0.751007
vt 0.206950 0.295168
vt 0.048423 0.459689
vt 0.013471 0.379548
vt 0.045426 0.298165
vt 0.048585 0.459506
vt 0.125867 0.262680
vt 0.130113 0.491518
vt 0.013572 0.379222
vt 0.045583 0.297694
vt 0.210398 0.456504
vt 0.242409 0.374976
vt 0.207395 0.294691
vt 0.244305 0.570947
vt 0.244305 0.995127
vt 0.009233 0.995127
vt 0.209947 0.456692
vt 0.125567 0.263214
vt 0.241901 0.375309
@ -221,236 +264,322 @@ vt 0.957847 0.838556
vt 0.987860 0.694744
vt 0.263605 0.787894
vt 0.744476 0.273333
s 1
usemtl b
f 59/1 53/2 57/3
f 53/2 59/1 61/4
f 66/5 49/6 65/7
f 65/7 63/8 72/9
f 65/7 64/10 50/11
f 65/7 52/12 66/5
f 66/5 54/13 67/14
f 53/15 66/5 67/14
f 55/16 67/17 68/18
f 67/17 56/19 68/18
f 68/18 58/20 69/21
f 57/22 68/18 69/21
f 69/21 60/23 70/24
f 59/25 69/21 70/24
f 61/26 70/24 71/27
f 61/26 72/9 63/8
f 62/28 72/9 71/27
f 71/27 60/23 62/28
f 53/2 55/29 57/3
f 61/4 63/30 53/2
f 63/30 49/31 53/2
f 49/31 51/32 53/2
f 60/33 54/34 62/35
f 60/33 58/36 54/34
f 54/34 58/36 56/37
f 62/35 54/34 64/38
f 64/38 54/34 50/39
f 52/40 50/39 54/34
f 66/5 51/41 49/6
f 65/7 49/6 63/8
f 65/7 72/9 64/10
f 65/7 50/11 52/12
f 66/5 52/12 54/13
f 53/15 51/41 66/5
f 55/16 53/42 67/17
f 67/17 54/43 56/19
f 68/18 56/19 58/20
f 57/22 55/16 68/18
f 69/21 58/20 60/23
f 59/25 57/22 69/21
f 61/26 59/25 70/24
f 61/26 71/27 72/9
f 62/28 64/10 72/9
f 71/27 70/24 60/23
f 83/1 77/2 81/3
f 77/2 83/1 85/4
f 90/5 73/6 89/7
f 89/7 87/8 96/9
f 89/7 88/10 74/11
f 89/7 76/12 90/5
f 90/5 78/13 91/14
f 77/15 90/5 91/14
f 79/16 91/17 92/18
f 91/17 80/19 92/18
f 92/18 82/20 93/21
f 81/22 92/18 93/21
f 93/21 84/23 94/24
f 83/25 93/21 94/24
f 85/26 94/24 95/27
f 85/26 96/9 87/8
f 86/28 96/9 95/27
f 95/27 84/23 86/28
f 77/2 79/29 81/3
f 85/4 87/30 77/2
f 87/30 73/31 77/2
f 73/31 75/32 77/2
f 84/33 78/34 86/35
f 84/33 82/36 78/34
f 78/34 82/36 80/37
f 86/35 78/34 88/38
f 88/38 78/34 74/39
f 76/40 74/39 78/34
f 90/5 75/41 73/6
f 89/7 73/6 87/8
f 89/7 96/9 88/10
f 89/7 74/11 76/12
f 90/5 76/12 78/13
f 77/15 75/41 90/5
f 79/16 77/42 91/17
f 91/17 78/43 80/19
f 92/18 80/19 82/20
f 81/22 79/16 92/18
f 93/21 82/20 84/23
f 83/25 81/22 93/21
f 85/26 83/25 94/24
f 85/26 95/27 96/9
f 86/28 88/10 96/9
f 95/27 94/24 84/23
usemtl a
f 97/44 99/45 100/46
f 99/45 101/47 102/48
f 108/49 110/50 122/51
f 119/52 107/53 121/54
f 102/48 103/55 100/46
f 119/52 115/56 105/57
f 122/58 121/54 108/59
f 101/47 99/45 105/60
f 115/56 116/61 101/62
f 104/63 103/64 118/65
f 104/63 120/66 106/67
f 110/68 108/69 105/60
f 103/55 109/70 100/46
f 100/46 109/70 98/71
f 109/72 110/50 98/73
f 104/74 106/75 103/55
f 109/70 103/55 106/75
f 105/60 99/45 110/68
f 99/45 97/44 110/68
f 107/76 105/60 108/69
f 103/64 102/77 117/78
f 123/79 106/80 120/81
f 124/82 109/72 123/79
f 97/83 98/73 110/50
f 111/84 112/85 114/86
f 113/87 114/86 116/88
f 110/50 124/82 122/51
f 107/53 119/52 105/57
f 116/88 114/86 117/89
f 101/62 105/57 115/56
f 121/54 107/53 108/59
f 115/90 119/91 113/87
f 102/77 101/62 116/61
f 118/65 103/64 117/78
f 120/66 104/63 118/65
f 124/92 119/91 122/93
f 117/89 114/86 123/94
f 114/86 112/85 123/94
f 123/79 112/95 124/82
f 118/96 117/89 120/97
f 123/94 120/97 117/89
f 119/91 124/92 113/87
f 113/87 124/92 111/84
f 121/98 122/93 119/91
f 116/61 117/78 102/77
f 110/50 109/72 124/82
f 123/79 109/72 106/80
f 111/99 124/82 112/95
f 97/44 100/46 98/71
f 99/45 102/48 100/46
f 111/84 114/86 113/87
f 113/87 116/88 115/90
usemtl c
f 11/1 5/2 9/3
f 5/2 11/1 13/4
f 18/5 1/6 17/7
f 17/7 15/8 24/9
f 17/7 16/10 2/11
f 17/7 4/12 18/5
f 18/5 6/13 19/14
f 5/15 18/5 19/14
f 7/16 19/17 20/18
f 19/17 8/19 20/18
f 20/18 10/20 21/21
f 9/22 20/18 21/21
f 21/21 12/23 22/24
f 11/25 21/21 22/24
f 13/26 22/24 23/27
f 13/26 24/9 15/8
f 14/28 24/9 23/27
f 23/27 12/23 14/28
f 5/2 7/29 9/3
f 13/4 15/30 5/2
f 15/30 1/31 5/2
f 1/31 3/32 5/2
f 12/33 6/34 14/35
f 12/33 10/36 6/34
f 6/34 10/36 8/37
f 14/35 6/34 16/38
f 16/38 6/34 2/39
f 4/40 2/39 6/34
f 18/5 3/41 1/6
f 17/7 1/6 15/8
f 17/7 24/9 16/10
f 17/7 2/11 4/12
f 18/5 4/12 6/13
f 5/15 3/41 18/5
f 7/16 5/42 19/17
f 19/17 6/43 8/19
f 20/18 8/19 10/20
f 9/22 7/16 20/18
f 21/21 10/20 12/23
f 11/25 9/22 21/21
f 13/26 11/25 22/24
f 13/26 23/27 24/9
f 14/28 16/10 24/9
f 23/27 22/24 12/23
vt 0.209947 0.456692
vt 0.125567 0.263214
vt 0.241901 0.375309
vt 0.129805 0.491643
vt 0.124436 0.570947
vt 0.244305 0.631444
vt 0.124436 0.631444
vt 0.244305 0.690874
vt 0.124436 0.690874
vt 0.009233 0.690874
vt 0.009233 0.631444
vt 0.009233 0.570947
vt 0.009233 0.508357
vt 0.124436 0.508357
vt 0.244305 0.508357
vt 0.244305 0.932575
vt 0.124436 0.995127
vt 0.124436 0.932575
vt 0.009233 0.932575
vt 0.009233 0.871660
vt 0.124436 0.871660
vt 0.244305 0.871660
vt 0.009233 0.811345
vt 0.124436 0.811345
vt 0.244305 0.811345
vt 0.244305 0.751007
vt 0.124436 0.751007
vt 0.009233 0.751007
vt 0.206950 0.295168
vt 0.048423 0.459689
vt 0.013471 0.379548
vt 0.045426 0.298165
vt 0.048585 0.459506
vt 0.125867 0.262680
vt 0.130113 0.491518
vt 0.013572 0.379222
vt 0.045583 0.297694
vt 0.210398 0.456504
vt 0.242409 0.374976
vt 0.207395 0.294691
vt 0.244305 0.570947
vt 0.244305 0.995127
vt 0.009233 0.995127
vt 0.209947 0.456692
vt 0.125567 0.263214
vt 0.241901 0.375309
vt 0.129805 0.491643
vt 0.124436 0.570947
vt 0.244305 0.631444
vt 0.124436 0.631444
vt 0.244305 0.690874
vt 0.124436 0.690874
vt 0.009233 0.690874
vt 0.009233 0.631444
vt 0.009233 0.570947
vt 0.009233 0.508357
vt 0.124436 0.508357
vt 0.244305 0.508357
vt 0.244305 0.932575
vt 0.124436 0.995127
vt 0.124436 0.932575
vt 0.009233 0.932575
vt 0.009233 0.871660
vt 0.124436 0.871660
vt 0.244305 0.871660
vt 0.009233 0.811345
vt 0.124436 0.811345
vt 0.244305 0.811345
vt 0.244305 0.751007
vt 0.124436 0.751007
vt 0.009233 0.751007
vt 0.206950 0.295168
vt 0.048423 0.459689
vt 0.013471 0.379548
vt 0.045426 0.298165
vt 0.048585 0.459506
vt 0.125867 0.262680
vt 0.130113 0.491518
vt 0.013572 0.379222
vt 0.045583 0.297694
vt 0.210398 0.456504
vt 0.242409 0.374976
vt 0.207395 0.294691
vt 0.244305 0.570947
vt 0.244305 0.995127
vt 0.009233 0.995127
usemtl d
f 35/1 29/2 33/3
f 29/2 35/1 37/4
f 42/5 25/6 41/7
f 41/7 39/8 48/9
f 41/7 40/10 26/11
f 41/7 28/12 42/5
f 42/5 30/13 43/14
f 29/15 42/5 43/14
f 31/16 43/17 44/18
f 43/17 32/19 44/18
f 44/18 34/20 45/21
f 33/22 44/18 45/21
f 45/21 36/23 46/24
f 35/25 45/21 46/24
f 37/26 46/24 47/27
f 37/26 48/9 39/8
f 38/28 48/9 47/27
f 47/27 36/23 38/28
f 29/2 31/29 33/3
f 37/4 39/30 29/2
f 39/30 25/31 29/2
f 25/31 27/32 29/2
f 36/33 30/34 38/35
f 36/33 34/36 30/34
f 30/34 34/36 32/37
f 38/35 30/34 40/38
f 40/38 30/34 26/39
f 28/40 26/39 30/34
f 42/5 27/41 25/6
f 41/7 25/6 39/8
f 41/7 48/9 40/10
f 41/7 26/11 28/12
f 42/5 28/12 30/13
f 29/15 27/41 42/5
f 31/16 29/42 43/17
f 43/17 30/43 32/19
f 44/18 32/19 34/20
f 33/22 31/16 44/18
f 45/21 34/20 36/23
f 35/25 33/22 45/21
f 37/26 35/25 46/24
f 37/26 47/27 48/9
f 38/28 40/10 48/9
f 47/27 46/24 36/23
s 1
f 101/1 102/2 103/3
f 102/2 101/1 104/4
f 105/5 106/6 107/7
f 107/7 108/8 109/9
f 107/7 110/10 111/11
f 107/7 112/12 105/5
f 105/5 113/13 114/14
f 102/15 105/5 114/14
f 115/16 114/17 116/18
f 114/17 117/19 116/18
f 116/18 118/20 119/21
f 103/22 116/18 119/21
f 119/21 120/23 121/24
f 101/25 119/21 121/24
f 104/26 121/24 122/27
f 104/26 109/9 108/8
f 123/28 109/9 122/27
f 122/27 120/23 123/28
f 102/2 115/29 103/3
f 104/4 108/30 102/2
f 108/30 106/31 102/2
f 106/31 124/32 102/2
f 120/33 113/34 123/35
f 120/33 118/36 113/34
f 113/34 118/36 117/37
f 123/35 113/34 110/38
f 110/38 113/34 111/39
f 112/40 111/39 113/34
f 105/5 124/41 106/6
f 107/7 106/6 108/8
f 107/7 109/9 110/10
f 107/7 111/11 112/12
f 105/5 112/12 113/13
f 102/15 124/41 105/5
f 115/16 102/42 114/17
f 114/17 113/43 117/19
f 116/18 117/19 118/20
f 103/22 115/16 116/18
f 119/21 118/20 120/23
f 101/25 103/22 119/21
f 104/26 101/25 121/24
f 104/26 122/27 109/9
f 123/28 110/10 109/9
f 122/27 121/24 120/23
usemtl c
f 77/44 78/45 79/46
f 78/45 77/44 80/47
f 81/48 82/49 83/50
f 83/50 84/51 85/52
f 83/50 86/53 87/54
f 83/50 88/55 81/48
f 81/48 89/56 90/57
f 78/58 81/48 90/57
f 91/59 90/60 92/61
f 90/60 93/62 92/61
f 92/61 94/63 95/64
f 79/65 92/61 95/64
f 95/64 96/66 97/67
f 77/68 95/64 97/67
f 80/69 97/67 98/70
f 80/69 85/52 84/51
f 99/71 85/52 98/70
f 98/70 96/66 99/71
f 78/45 91/72 79/46
f 80/47 84/73 78/45
f 84/73 82/74 78/45
f 82/74 100/75 78/45
f 96/76 89/77 99/78
f 96/76 94/79 89/77
f 89/77 94/79 93/80
f 99/78 89/77 86/81
f 86/81 89/77 87/82
f 88/83 87/82 89/77
f 81/48 100/84 82/49
f 83/50 82/49 84/51
f 83/50 85/52 86/53
f 83/50 87/54 88/55
f 81/48 88/55 89/56
f 78/58 100/84 81/48
f 91/59 78/85 90/60
f 90/60 89/86 93/62
f 92/61 93/62 94/63
f 79/65 91/59 92/61
f 95/64 94/63 96/66
f 77/68 79/65 95/64
f 80/69 77/68 97/67
f 80/69 98/70 85/52
f 99/71 86/53 85/52
f 98/70 97/67 96/66
usemtl a
f 49/87 50/88 51/89
f 50/88 52/90 53/91
f 54/92 55/93 56/94
f 57/95 58/96 59/97
f 53/91 60/98 51/89
f 57/95 61/99 62/100
f 56/101 59/97 54/102
f 52/90 50/88 62/103
f 61/99 63/104 52/105
f 64/106 60/107 65/108
f 64/106 66/109 67/110
f 55/111 54/112 62/103
f 60/98 68/113 51/89
f 51/89 68/113 69/114
f 68/115 55/93 69/116
f 64/117 67/118 60/98
f 68/113 60/98 67/118
f 62/103 50/88 55/111
f 50/88 49/87 55/111
f 58/119 62/103 54/112
f 60/107 53/120 70/121
f 71/122 67/123 66/124
f 72/125 68/115 71/122
f 49/126 69/116 55/93
f 73/127 74/128 75/129
f 76/130 75/129 63/131
f 55/93 72/125 56/94
f 58/96 57/95 62/100
f 63/131 75/129 70/132
f 52/105 62/100 61/99
f 59/97 58/96 54/102
f 61/133 57/134 76/130
f 53/120 52/105 63/104
f 65/108 60/107 70/121
f 66/109 64/106 65/108
f 72/135 57/134 56/136
f 70/132 75/129 71/137
f 75/129 74/128 71/137
f 71/122 74/138 72/125
f 65/139 70/132 66/140
f 71/137 66/140 70/132
f 57/134 72/135 76/130
f 76/130 72/135 73/127
f 59/141 56/136 57/134
f 63/104 70/121 53/120
f 55/93 68/115 72/125
f 71/122 68/115 67/123
f 73/142 72/125 74/138
f 49/87 51/89 69/114
f 50/88 53/91 51/89
f 73/127 75/129 76/130
f 76/130 63/131 61/133
usemtl b
f 1/143 2/144 3/145
f 2/144 1/143 4/146
f 5/147 6/148 7/149
f 7/149 8/150 9/151
f 7/149 10/152 11/153
f 7/149 12/154 5/147
f 5/147 13/155 14/156
f 2/157 5/147 14/156
f 15/158 14/159 16/160
f 14/159 17/161 16/160
f 16/160 18/162 19/163
f 3/164 16/160 19/163
f 19/163 20/165 21/166
f 1/167 19/163 21/166
f 4/168 21/166 22/169
f 4/168 9/151 8/150
f 23/170 9/151 22/169
f 22/169 20/165 23/170
f 2/144 15/171 3/145
f 4/146 8/172 2/144
f 8/172 6/173 2/144
f 6/173 24/174 2/144
f 20/175 13/176 23/177
f 20/175 18/178 13/176
f 13/176 18/178 17/179
f 23/177 13/176 10/180
f 10/180 13/176 11/181
f 12/182 11/181 13/176
f 5/147 24/183 6/148
f 7/149 6/148 8/150
f 7/149 9/151 10/152
f 7/149 11/153 12/154
f 5/147 12/154 13/155
f 2/157 24/183 5/147
f 15/158 2/184 14/159
f 14/159 13/185 17/161
f 16/160 17/161 18/162
f 3/164 15/158 16/160
f 19/163 18/162 20/165
f 1/167 3/164 19/163
f 4/168 1/167 21/166
f 4/168 22/169 9/151
f 23/170 10/152 9/151
f 22/169 21/166 20/165
f 25/186 26/187 27/188
f 26/187 25/186 28/189
f 29/190 30/191 31/192
f 31/192 32/193 33/194
f 31/192 34/195 35/196
f 31/192 36/197 29/190
f 29/190 37/198 38/199
f 26/200 29/190 38/199
f 39/201 38/202 40/203
f 38/202 41/204 40/203
f 40/203 42/205 43/206
f 27/207 40/203 43/206
f 43/206 44/208 45/209
f 25/210 43/206 45/209
f 28/211 45/209 46/212
f 28/211 33/194 32/193
f 47/213 33/194 46/212
f 46/212 44/208 47/213
f 26/187 39/214 27/188
f 28/189 32/215 26/187
f 32/215 30/216 26/187
f 30/216 48/217 26/187
f 44/218 37/219 47/220
f 44/218 42/221 37/219
f 37/219 42/221 41/222
f 47/220 37/219 34/223
f 34/223 37/219 35/224
f 36/225 35/224 37/219
f 29/190 48/226 30/191
f 31/192 30/191 32/193
f 31/192 33/194 34/195
f 31/192 35/196 36/197
f 29/190 36/197 37/198
f 26/200 48/226 29/190
f 39/201 26/227 38/202
f 38/202 37/228 41/204
f 40/203 41/204 42/205
f 27/207 39/201 40/203
f 43/206 42/205 44/208
f 25/210 27/207 43/206
f 28/211 25/210 45/209
f 28/211 46/212 33/194
f 47/213 34/195 33/194
f 46/212 45/209 44/208

10
game.h
View file

@ -21,9 +21,7 @@
COORDINATE SYSTEM AND ROTATIONS: The game itself (racing module) is
independent of rendering and physics libraries, but out of convenient adopts
their coordinate system (X right, Y up, Z forward) and rotations (Euler
angles, by Z, then by X, then Y).
angles, by Z, then by X, then Y).
*/
#ifndef _LCR_GAME_H
@ -206,6 +204,7 @@ LCR_GameUnit physicsInterpolationParam = LCR_GAME_UNIT -
LCR_GameUnit carTransform[6];
LCR_racingGetCarTransform(carTransform,carTransform + 3,
physicsInterpolationParam);
LCR_rendererSetCarTransform(carTransform,carTransform + 3);
while (time >= LCR_game.nextRenderFrameTime)
@ -248,6 +247,11 @@ LCR_GameUnit physicsInterpolationParam = LCR_GAME_UNIT -
else
LCR_rendererCameraFollow();
#if LCR_ANIMATE_CAR
LCR_rendererSetWheelState(LCR_racingGetWheelRotation(),
LCR_racingGetWheelSteer());
#endif
LCR_rendererDraw();
if (LCR_game.debugDraw)

115
racing.h
View file

@ -22,10 +22,11 @@ typedef int32_t LCR_GameUnit; ///< abstract game unit
#define LCR_CAR_JOINTS 5
#define LCR_CAR_CONNECTIONS 10
#define LCR_GRAVITY 5
#define LCR_GRAVITY (LCR_PHYSICS_UNIT / 100)
#define LCR_CAR_FORWARD_FRICTION TPE_F / 14
#define LCR_CAR_TURN_FRICTION (3 * TPE_F / 4)
#define LCR_CAR_ELASTICITY (TPE_F / 100)
#define LCR_CAR_ACCELERATION (LCR_PHYSICS_UNIT / 8)
struct
{
@ -41,6 +42,8 @@ struct
TPE_Vec3 carPositions[2]; ///* Current and previous position.
LCR_GameUnit wheelRotation;
LCR_GameUnit wheelSteer;
} LCR_racing;
TPE_Vec3 _LCR_TPE_vec3DividePlain(TPE_Vec3 v, TPE_Unit d)
@ -53,12 +56,22 @@ TPE_Vec3 _LCR_TPE_vec3DividePlain(TPE_Vec3 v, TPE_Unit d)
TPE_Vec3 _LCR_racingEnvironmentFunction(TPE_Vec3 point, TPE_Unit maxDist)
{
return TPE_envAABoxInside(point,TPE_vec3(0,0,0),TPE_vec3(
LCR_PHYSICS_UNIT * LCR_MAP_SIZE_BLOCKS,
(LCR_PHYSICS_UNIT * LCR_MAP_SIZE_BLOCKS) / 2,
LCR_PHYSICS_UNIT * LCR_MAP_SIZE_BLOCKS));
}
LCR_GameUnit LCR_racingGetCarSpeed(void)
{
return (TPE_vec3Len(TPE_vec3(
LCR_racing.carBody.joints[4].velocity[0],
LCR_racing.carBody.joints[4].velocity[1],
LCR_racing.carBody.joints[4].velocity[2])) * LCR_GAME_UNIT)
/ LCR_PHYSICS_UNIT;
}
uint8_t _LCR_racingCollisionHandler(uint16_t b1, uint16_t j1, uint16_t b2,
uint16_t j2, TPE_Vec3 p)
{
@ -75,8 +88,11 @@ uint8_t _LCR_racingCollisionHandler(uint16_t b1, uint16_t j1, uint16_t b2,
*/
void LCR_racingRestart(void)
{
TPE_bodyActivate(&(LCR_racing.carBody));
LCR_racing.wheelCollisions = 0;
TPE_bodyDeactivate(&(LCR_racing.carBody));
LCR_racing.wheelRotation = 0;
LCR_racing.wheelSteer = 0;
// TODO
}
@ -111,6 +127,7 @@ void LCR_racingInit(void)
LCR_racing.carBody.friction = LCR_CAR_FORWARD_FRICTION;
LCR_racing.carBody.elasticity = LCR_CAR_ELASTICITY;
LCR_racing.carBody.flags |= TPE_BODY_FLAG_ALWAYS_ACTIVE;
LCR_racingRestart();
}
@ -144,7 +161,6 @@ void LCR_racingGetCarTransform(LCR_GameUnit position[3],
rotation[0] = (v.x * LCR_GAME_UNIT) / TPE_F;
rotation[1] = (v.y * LCR_GAME_UNIT) / TPE_F;
rotation[2] = (v.z * LCR_GAME_UNIT) / TPE_F;
// TODO: also smooth out rotation?
}
@ -166,48 +182,93 @@ int LCR_racingCarWheelTouchesGround(int wheel)
return ((LCR_racing.wheelCollisions & (LCR_racing.wheelCollisions >> 4))
>> wheel) & 0x01;
}
LCR_GameUnit LCR_racingGetWheelRotation(void)
{
return LCR_racing.wheelRotation;
}
LCR_GameUnit LCR_racingGetWheelSteer(void)
{
return LCR_racing.wheelSteer;
}
void _LCR_racingWheelAccelerate(unsigned int wheel, TPE_Vec3 dir)
{
LCR_racing.carBody.joints[wheel].velocity[0] +=
(dir.x * LCR_CAR_ACCELERATION) / TPE_F;
LCR_racing.carBody.joints[wheel].velocity[1] +=
(dir.y * LCR_CAR_ACCELERATION) / TPE_F;
LCR_racing.carBody.joints[wheel].velocity[2] +=
(dir.z * LCR_CAR_ACCELERATION) / TPE_F;
}
void LCR_racingStep(unsigned int input)
{
TPE_Vec3 carForw, carRight, carUp;
TPE_Vec3 vel = TPE_vec3(0,0,0);
// TPE_Vec3 vel = TPE_vec3(0,0,0);
carForw = TPE_vec3Normalized(TPE_vec3Plus(
TPE_vec3Minus(LCR_racing.carBody.joints[0].position,
LCR_racing.carBody.joints[2].position),
TPE_vec3Minus(LCR_racing.carBody.joints[1].position,
LCR_racing.carBody.joints[3].position)));
carRight = TPE_vec3Normalized(TPE_vec3Plus(
TPE_vec3Minus(LCR_racing.carBody.joints[0].position,
LCR_racing.carBody.joints[1].position),
TPE_vec3Minus(LCR_racing.carBody.joints[2].position,
LCR_racing.carBody.joints[3].position)));
carUp = TPE_vec3Cross(carForw,carRight);
if (input)
{
// TODO: magic constants
if (input & LCR_RACING_INPUT_FORW)
vel.y = LCR_PHYSICS_UNIT / 8;
LCR_racing.wheelRotation =
(LCR_racing.wheelRotation + 5) % LCR_GAME_UNIT;
if (input & LCR_RACING_INPUT_BACK)
vel.z = LCR_PHYSICS_UNIT / 32;
LCR_racing.wheelRotation -= 4;
while (LCR_racing.wheelRotation < 0)
LCR_racing.wheelRotation += LCR_GAME_UNIT;
if (input & LCR_RACING_INPUT_RIGHT)
vel.x = LCR_PHYSICS_UNIT / 32;
if (input & LCR_RACING_INPUT_LEFT)
vel.x = -1 * LCR_PHYSICS_UNIT / 32;
LCR_racing.wheelSteer = TPE_min(
LCR_racing.wheelSteer + 64,LCR_GAME_UNIT / 2);
TPE_bodyAccelerate(&(LCR_racing.carBody),vel);
if (input & LCR_RACING_INPUT_LEFT)
LCR_racing.wheelSteer = TPE_max(
LCR_racing.wheelSteer - 64,-1 * LCR_GAME_UNIT / 2);
if ((LCR_racing.wheelCollisions & 0x03) == 0x03) // back wheels on gr.?
{
if (input & LCR_RACING_INPUT_FORW)
{
_LCR_racingWheelAccelerate(0,carForw);
_LCR_racingWheelAccelerate(1,carForw);
}
else if (input & LCR_RACING_INPUT_BACK)
{
_LCR_racingWheelAccelerate(0,TPE_vec3TimesPlain(carForw,-1));
_LCR_racingWheelAccelerate(1,TPE_vec3TimesPlain(carForw,-1));
}
}
}
TPE_bodyApplyGravity(&(LCR_racing.carBody),LCR_GRAVITY);
if ((!(input & LCR_RACING_INPUT_LEFT)) &&
(!(input & LCR_RACING_INPUT_RIGHT)))
LCR_racing.wheelSteer /= 2;
if ((LCR_racing.wheelCollisions & 0x0f) != 0x0f) // EXPERIMENTAL: don't apply gravity with all wheels on ground
TPE_bodyApplyGravity(&(LCR_racing.carBody),LCR_GRAVITY);
LCR_racing.wheelCollisions <<= 4;
TPE_worldStep(&(LCR_racing.physicsWorld));
carForw = TPE_vec3Normalized(TPE_vec3Plus(
TPE_vec3Minus(LCR_racing.carBody.joints[2].position,
LCR_racing.carBody.joints[0].position),
TPE_vec3Minus(LCR_racing.carBody.joints[3].position,
LCR_racing.carBody.joints[1].position)));
carRight = TPE_vec3Normalized(TPE_vec3Plus(
TPE_vec3Minus(LCR_racing.carBody.joints[1].position,
LCR_racing.carBody.joints[0].position),
TPE_vec3Minus(LCR_racing.carBody.joints[3].position,
LCR_racing.carBody.joints[2].position)));
carUp = TPE_vec3Cross(carForw,carRight);
if (TPE_vec3Dot(carUp,TPE_vec3Minus(LCR_racing.carBody.joints[4].position,
LCR_racing.carBody.joints[0].position)) < 0)
{

View file

@ -74,7 +74,7 @@ struct
#if LCR_ANIMATE_CAR
S3L_Unit wheelRotation;
S3L_Unit wheelTurn;
S3L_Unit wheelSteer;
S3L_Unit wheelRotationCenters[4];
S3L_Unit animatedCarVerts[LCR_CAR_VERTEX_COUNT * 3];
#endif
@ -828,7 +828,7 @@ LCR_renderer.ghostModel->transform.translation.x -= LCR_GAME_UNIT / 4;
LCR_renderer.wheelRotationCenters[3] /= count[1];
LCR_renderer.wheelRotation = 0;
LCR_renderer.wheelTurn = 0;
LCR_renderer.wheelSteer = 0;
#endif
S3L_sceneInit(
@ -1280,8 +1280,8 @@ void _LCR_rendererAnimateCar(void)
{
if (LCR_carVertexTypes[i] > 0)
{
S3L_Unit s = S3L_sin(-1 * LCR_renderer.wheelRotation),
c = S3L_cos(-1 * LCR_renderer.wheelRotation);
S3L_Unit s = S3L_sin(LCR_renderer.wheelRotation),
c = S3L_cos(LCR_renderer.wheelRotation);
S3L_Unit v[2], tmp;
@ -1302,19 +1302,19 @@ void _LCR_rendererAnimateCar(void)
LCR_renderer.animatedCarVerts[index + 1] =
v[1] + LCR_renderer.wheelRotationCenters[offset + 1];
if (LCR_carVertexTypes[i] > 1)
if (LCR_carVertexTypes[i] == 1)
{
/* Turn front wheels; this is not real turning but just a fake by
skewing in Z and X directions. */
LCR_renderer.animatedCarVerts[index] = LCR_carVertices[index];
LCR_renderer.animatedCarVerts[index + 2] -=
(LCR_renderer.animatedCarVerts[index] * LCR_renderer.wheelTurn)
(LCR_renderer.animatedCarVerts[index] * LCR_renderer.wheelSteer)
/ (8 * S3L_F);
LCR_renderer.animatedCarVerts[index] +=
((LCR_renderer.animatedCarVerts[index + 2] -
LCR_renderer.wheelRotationCenters[0]) * LCR_renderer.wheelTurn)
LCR_renderer.wheelRotationCenters[2]) * LCR_renderer.wheelSteer)
/ (2 * S3L_F);
}
}
@ -1353,8 +1353,19 @@ void LCR_rendererCameraFollow(void)
LCR_renderer.carModel->transform.translation.z +
LCR_SETTING_CAMERA_MAX_DISTANCE * LCR_RENDERER_UNIT / 4);
S3L_lookAt(LCR_renderer.carModel->transform.translation,
&(LCR_renderer.scene.camera.transform));
/* Hotfix for a Gimbal lock kinda issue, don't do lookAt when completely
above the car, rather shift the camera a bit (needs some tuning). */
if (S3L_abs(LCR_renderer.scene.camera.transform.translation.x -
LCR_renderer.carModel->transform.translation.x) > 8 &&
S3L_abs(LCR_renderer.scene.camera.transform.translation.z -
LCR_renderer.carModel->transform.translation.z) > 8)
S3L_lookAt(LCR_renderer.carModel->transform.translation,
&(LCR_renderer.scene.camera.transform));
else
{
LCR_renderer.scene.camera.transform.translation.x += 4;
LCR_renderer.scene.camera.transform.translation.z -= 8;
}
#if LCR_SETTING_SMOOTH_ANIMATIONS
// now average with previous transform to smooth the animation out:
@ -1368,10 +1379,18 @@ void LCR_rendererCameraFollow(void)
transPrev.rotation.x -= LCR_renderer.scene.camera.transform.rotation.x;
transPrev.rotation.y -= LCR_renderer.scene.camera.transform.rotation.y;
if (S3L_abs(transPrev.rotation.x) < S3L_F / 4)
LCR_renderer.scene.camera.transform.rotation.x += transPrev.rotation.x / 2;
if (S3L_abs(transPrev.rotation.y) < S3L_F / 5)
LCR_renderer.scene.camera.transform.rotation.y += transPrev.rotation.y / 2;
LCR_renderer.scene.camera.transform.rotation.y += transPrev.rotation.y / 2;
LCR_renderer.scene.camera.transform.rotation.x += transPrev.rotation.x / 2;
#endif
}
void LCR_rendererSetWheelState(LCR_GameUnit rotation, LCR_GameUnit steer)
{
#if LCR_ANIMATE_CAR
LCR_renderer.wheelRotation = rotation;
LCR_renderer.wheelSteer = steer;
#endif
}
@ -1379,19 +1398,16 @@ void LCR_rendererDraw(void)
{
LCR_renderer.previousTriID = -1;
S3L_newFrame();
#if LCR_ANIMATE_CAR
_LCR_rendererAnimateCar();
#endif
_LCR_rendererLoadMapChunks(); // TODO: call only once in a while?
LCR_rendererDrawSky(1,
LCR_renderer.scene.camera.transform.rotation.y,
-4 * LCR_renderer.scene.camera.transform.rotation.x);
#if LCR_ANIMATE_CAR
LCR_renderer.wheelRotation += 5;
LCR_renderer.wheelTurn = S3L_sin(LCR_renderer.frame * 4);
_LCR_rendererAnimateCar();
#endif
LCR_drawLevelFloor();
LCR_rendererDrawLOD();