collisions

This commit is contained in:
nefrace 2025-05-16 01:00:31 +03:00
parent 120a70cf42
commit efd18c8049
12 changed files with 2203 additions and 3 deletions

View File

@ -5,3 +5,4 @@
[keys.normal." ".o] [keys.normal." ".o]
b = ":sh odin run buddies" b = ":sh odin run buddies"
h = ":sh odin run house" h = ":sh odin run house"
c = ":sh odin run collisions"

View File

@ -0,0 +1,4 @@
# Made in Blockbench 4.12.1
newmtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
map_Kd tex.png
newmtl none

View File

@ -0,0 +1,4 @@
# Made in Blockbench 4.12.1
newmtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
map_Kd tex.png
newmtl none

BIN
assets/models/model.glb Normal file

Binary file not shown.

674
assets/models/model.obj Normal file
View File

@ -0,0 +1,674 @@
# Made in Blockbench 4.12.1
mtllib model.mtl
o unknown
o entity0_brush0
v 0.7000000000000001 0.1 2.5
v -0.7000000000000001 -0.1 -1
v -0.7000000000000001 -0.1 2.5
v -0.7000000000000001 0.1 2.5
v -0.7000000000000001 0.1 -1
v 0.7000000000000001 -0.1 2.5
v 0.7000000000000001 -0.1 -1
v 0.7000000000000001 0.1 -1
vt 5 -0.5
vt -12.5 -0.5
vt -12.5 0.5
vt 5 0.5
vt 3.5 0.5
vt -3.5 0.5
vt -3.5 -0.5
vt 3.5 -0.5
vt 3.5 -12.5
vt -3.5 -12.5
vt -3.5 5
vt 3.5 5
vt 3.5 5
vt -3.5 5
vt -3.5 -12.5
vt 3.5 -12.5
vt 3.5 -0.5
vt -3.5 -0.5
vt -3.5 0.5
vt 3.5 0.5
vt 5 0.5
vt -12.5 0.5
vt -12.5 -0.5
vt 5 -0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 2/1/1 3/2/1 4/3/1 5/4/1
f 1/5/2 4/6/2 3/7/2 6/8/2
f 6/9/3 3/10/3 2/11/3 7/12/3
f 8/13/4 5/14/4 4/15/4 1/16/4
f 7/17/5 2/18/5 5/19/5 8/20/5
f 8/21/6 1/22/6 6/23/6 7/24/6
o entity0_brush1
v 0.6000000000000001 0.1 -1
v 0.6000000000000001 0.1 1
v 0.6000000000000001 1 1
v 0.6000000000000001 1 -1
v 0.7000000000000001 1 1
v 0.7000000000000001 0.1 1
v 0.7000000000000001 0.1 -1
v 0.7000000000000001 1 -1
vt 5 0.5
vt -5 0.5
vt -5 5
vt 5 5
vt 3.5 5
vt 3 5
vt 3 0.5
vt 3.5 0.5
vt 3.5 -5
vt 3 -5
vt 3 5
vt 3.5 5
vt 3.5 5
vt 3 5
vt 3 -5
vt 3.5 -5
vt 3.5 0.5
vt 3 0.5
vt 3 5
vt 3.5 5
vt 5 5
vt -5 5
vt -5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 9/25/7 10/26/7 11/27/7 12/28/7
f 13/29/8 11/30/8 10/31/8 14/32/8
f 14/33/9 10/34/9 9/35/9 15/36/9
f 16/37/10 12/38/10 11/39/10 13/40/10
f 15/41/11 9/42/11 12/43/11 16/44/11
f 16/45/12 13/46/12 14/47/12 15/48/12
o entity0_brush2
v -0.7000000000000001 0.1 -1
v -0.7000000000000001 0.1 1
v -0.7000000000000001 1 1
v -0.7000000000000001 1 -1
v -0.6000000000000001 1 1
v -0.6000000000000001 0.1 1
v -0.6000000000000001 0.1 -1
v -0.6000000000000001 1 -1
vt 5 0.5
vt -5 0.5
vt -5 5
vt 5 5
vt -2.5 5
vt -3 5
vt -3 0.5
vt -2.5 0.5
vt -2.5 -5
vt -3 -5
vt -3 5
vt -2.5 5
vt -2.5 5
vt -3 5
vt -3 -5
vt -2.5 -5
vt -2.5 0.5
vt -3 0.5
vt -3 5
vt -2.5 5
vt 5 5
vt -5 5
vt -5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 17/49/13 18/50/13 19/51/13 20/52/13
f 21/53/14 19/54/14 18/55/14 22/56/14
f 22/57/15 18/58/15 17/59/15 23/60/15
f 24/61/16 20/62/16 19/63/16 21/64/16
f 23/65/17 17/66/17 20/67/17 24/68/17
f 24/69/18 21/70/18 22/71/18 23/72/18
o entity0_brush3
v 0.2 0.1 0.9
v 0.2 0.1 1
v 0.2 1 1
v 0.2 1 0.9
v 0.6000000000000001 1 1
v 0.6000000000000001 0.1 1
v 0.6000000000000001 0.1 0.9
v 0.6000000000000001 1 0.9
vt -4.5 0.5
vt -5 0.5
vt -5 5
vt -4.5 5
vt 3 5
vt 1 5
vt 1 0.5
vt 3 0.5
vt 3 -5
vt 1 -5
vt 1 -4.5
vt 3 -4.5
vt 3 -4.5
vt 1 -4.5
vt 1 -5
vt 3 -5
vt 3 0.5
vt 1 0.5
vt 1 5
vt 3 5
vt -4.5 5
vt -5 5
vt -5 0.5
vt -4.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 25/73/19 26/74/19 27/75/19 28/76/19
f 29/77/20 27/78/20 26/79/20 30/80/20
f 30/81/21 26/82/21 25/83/21 31/84/21
f 32/85/22 28/86/22 27/87/22 29/88/22
f 31/89/23 25/90/23 28/91/23 32/92/23
f 32/93/24 29/94/24 30/95/24 31/96/24
o entity0_brush4
v -0.6000000000000001 0.1 0.9
v -0.6000000000000001 0.1 1
v -0.6000000000000001 1 1
v -0.6000000000000001 1 0.9
v -0.2 1 1
v -0.2 0.1 1
v -0.2 0.1 0.9
v -0.2 1 0.9
vt -4.5 0.5
vt -5 0.5
vt -5 5
vt -4.5 5
vt -1 5
vt -3 5
vt -3 0.5
vt -1 0.5
vt -1 -5
vt -3 -5
vt -3 -4.5
vt -1 -4.5
vt -1 -4.5
vt -3 -4.5
vt -3 -5
vt -1 -5
vt -1 0.5
vt -3 0.5
vt -3 5
vt -1 5
vt -4.5 5
vt -5 5
vt -5 0.5
vt -4.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 33/97/25 34/98/25 35/99/25 36/100/25
f 37/101/26 35/102/26 34/103/26 38/104/26
f 38/105/27 34/106/27 33/107/27 39/108/27
f 40/109/28 36/110/28 35/111/28 37/112/28
f 39/113/29 33/114/29 36/115/29 40/116/29
f 40/117/30 37/118/30 38/119/30 39/120/30
o entity0_brush5
v -0.2 0.6000000000000001 0.9
v -0.2 0.6000000000000001 1
v -0.2 1 1
v -0.2 1 0.9
v 0.2 1 1
v 0.2 0.6000000000000001 1
v 0.2 0.6000000000000001 0.9
v 0.2 1 0.9
vt -4.5 3
vt -5 3
vt -5 5
vt -4.5 5
vt 1 5
vt -1 5
vt -1 3
vt 1 3
vt 1 -5
vt -1 -5
vt -1 -4.5
vt 1 -4.5
vt 1 -4.5
vt -1 -4.5
vt -1 -5
vt 1 -5
vt 1 3
vt -1 3
vt -1 5
vt 1 5
vt -4.5 5
vt -5 5
vt -5 3
vt -4.5 3
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 41/121/31 42/122/31 43/123/31 44/124/31
f 45/125/32 43/126/32 42/127/32 46/128/32
f 46/129/33 42/130/33 41/131/33 47/132/33
f 48/133/34 44/134/34 43/135/34 45/136/34
f 47/137/35 41/138/35 44/139/35 48/140/35
f 48/141/36 45/142/36 46/143/36 47/144/36
o entity0_brush6
v -0.6000000000000001 0.1 -1
v -0.6000000000000001 0.1 -0.9
v -0.6000000000000001 1 -0.9
v -0.6000000000000001 1 -1
v 0.6000000000000001 1 -0.9
v 0.6000000000000001 0.1 -0.9
v 0.6000000000000001 0.1 -1
v 0.6000000000000001 1 -1
vt 5 0.5
vt 4.5 0.5
vt 4.5 5
vt 5 5
vt 3 5
vt -3 5
vt -3 0.5
vt 3 0.5
vt 3 4.5
vt -3 4.5
vt -3 5
vt 3 5
vt 3 5
vt -3 5
vt -3 4.5
vt 3 4.5
vt 3 0.5
vt -3 0.5
vt -3 5
vt 3 5
vt 5 5
vt 4.5 5
vt 4.5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 49/145/37 50/146/37 51/147/37 52/148/37
f 53/149/38 51/150/38 50/151/38 54/152/38
f 54/153/39 50/154/39 49/155/39 55/156/39
f 56/157/40 52/158/40 51/159/40 53/160/40
f 55/161/41 49/162/41 52/163/41 56/164/41
f 56/165/42 53/166/42 54/167/42 55/168/42
o entity0_brush7
v -0.7000000000000001 1 -1
v -0.7000000000000001 1 1
v -0.7000000000000001 1.1 1
v -0.7000000000000001 1.1 -1
v 0.7000000000000001 1.1 1
v 0.7000000000000001 1 1
v 0.7000000000000001 1 -1
v 0.7000000000000001 1.1 -1
vt 5 5
vt -5 5
vt -5 5.5
vt 5 5.5
vt 3.5 5.5
vt -3.5 5.5
vt -3.5 5
vt 3.5 5
vt 3.5 -5
vt -3.5 -5
vt -3.5 5
vt 3.5 5
vt 3.5 5
vt -3.5 5
vt -3.5 -5
vt 3.5 -5
vt 3.5 5
vt -3.5 5
vt -3.5 5.5
vt 3.5 5.5
vt 5 5.5
vt -5 5.5
vt -5 5
vt 5 5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 57/169/43 58/170/43 59/171/43 60/172/43
f 61/173/44 59/174/44 58/175/44 62/176/44
f 62/177/45 58/178/45 57/179/45 63/180/45
f 64/181/46 60/182/46 59/183/46 61/184/46
f 63/185/47 57/186/47 60/187/47 64/188/47
f 64/189/48 61/190/48 62/191/48 63/192/48
o entity0_brush8
v -0.5 0.1 1.4000000000000001
v -0.5 0.1 2.3000000000000003
v -0.5 0.7000000000000001 2.3000000000000003
v -0.30000000000000004 0.7000000000000001 2.3000000000000003
v -0.30000000000000004 0.1 2.3000000000000003
v -0.30000000000000004 0.1 1.4000000000000001
vt -7 0.5
vt -11.5 0.5
vt -11.5 3.5
vt -1.5 3.5
vt -2.5 3.5
vt -2.5 0.5
vt -1.5 0.5
vt -1.5 -11.5
vt -2.5 -11.5
vt -2.5 -7
vt -1.5 -7
vt -1.5 -7
vt -2.5 -7
vt -2.5 -11.5
vt -1.5 -11.5
vt -11.5 0.5
vt -7 0.5
vt -11.5 3.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 0.8320502943378437 -0.5547001962252291
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 65/193/49 66/194/49 67/195/49
f 68/196/50 67/197/50 66/198/50 69/199/50
f 69/200/51 66/201/51 65/202/51 70/203/51
f 70/204/52 65/205/52 67/206/52 68/207/52
f 69/208/53 70/209/53 68/210/53
o entity0_brush9
v -0.7000000000000001 0.1 2.3000000000000003
v -0.7000000000000001 0.1 2.5
v -0.7000000000000001 0.7000000000000001 2.5
v -0.7000000000000001 0.7000000000000001 2.3000000000000003
v -0.30000000000000004 0.7000000000000001 2.5
v -0.30000000000000004 0.1 2.5
v -0.30000000000000004 0.1 2.3000000000000003
v -0.30000000000000004 0.7000000000000001 2.3000000000000003
vt -11.5 0.5
vt -12.5 0.5
vt -12.5 3.5
vt -11.5 3.5
vt -1.5 3.5
vt -3.5 3.5
vt -3.5 0.5
vt -1.5 0.5
vt -1.5 -12.5
vt -3.5 -12.5
vt -3.5 -11.5
vt -1.5 -11.5
vt -1.5 -11.5
vt -3.5 -11.5
vt -3.5 -12.5
vt -1.5 -12.5
vt -1.5 0.5
vt -3.5 0.5
vt -3.5 3.5
vt -1.5 3.5
vt -11.5 3.5
vt -12.5 3.5
vt -12.5 0.5
vt -11.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 71/211/54 72/212/54 73/213/54 74/214/54
f 75/215/55 73/216/55 72/217/55 76/218/55
f 76/219/56 72/220/56 71/221/56 77/222/56
f 78/223/57 74/224/57 73/225/57 75/226/57
f 77/227/58 71/228/58 74/229/58 78/230/58
f 78/231/59 75/232/59 76/233/59 77/234/59
o entity0_brush10
v -0.7000000000000001 0.7000000000000001 1
v -0.7000000000000001 0.7000000000000001 2.3000000000000003
v -0.7000000000000001 1.1 1
v -0.5 1.1 1
v -0.5 0.7000000000000001 2.3000000000000003
v -0.5 0.7000000000000001 1
vt 4.5 3.5
vt 11 3.5
vt 4.5 5.5
vt 2.5 4.5
vt 3.5 4.5
vt 3.5 11
vt 2.5 11
vt 2.5 11
vt 3.5 11
vt 3.5 4.5
vt 2.5 4.5
vt 2.5 3.5
vt 3.5 3.5
vt 3.5 5.5
vt 2.5 5.5
vt 11 3.5
vt 4.5 3.5
vt 4.5 5.5
vn -1 0 0
vn 0 0.9557790087219501 0.2940858488375231
vn 0 -1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 79/235/60 80/236/60 81/237/60
f 82/238/61 81/239/61 80/240/61 83/241/61
f 83/242/62 80/243/62 79/244/62 84/245/62
f 84/246/63 79/247/63 81/248/63 82/249/63
f 83/250/64 84/251/64 82/252/64
o entity0_brush11
v -0.7000000000000001 0.1 1
v -0.7000000000000001 0.1 2.3000000000000003
v -0.7000000000000001 0.7000000000000001 2.3000000000000003
v -0.7000000000000001 0.7000000000000001 1
v -0.5 0.7000000000000001 2.3000000000000003
v -0.5 0.1 2.3000000000000003
v -0.5 0.1 1
v -0.5 0.7000000000000001 1
vt -5 0.5
vt -11.5 0.5
vt -11.5 3.5
vt -5 3.5
vt -2.5 3.5
vt -3.5 3.5
vt -3.5 0.5
vt -2.5 0.5
vt -2.5 -11.5
vt -3.5 -11.5
vt -3.5 -5
vt -2.5 -5
vt -2.5 -5
vt -3.5 -5
vt -3.5 -11.5
vt -2.5 -11.5
vt -2.5 0.5
vt -3.5 0.5
vt -3.5 3.5
vt -2.5 3.5
vt -5 3.5
vt -11.5 3.5
vt -11.5 0.5
vt -5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 85/253/65 86/254/65 87/255/65 88/256/65
f 89/257/66 87/258/66 86/259/66 90/260/66
f 90/261/67 86/262/67 85/263/67 91/264/67
f 92/265/68 88/266/68 87/267/68 89/268/68
f 91/269/69 85/270/69 88/271/69 92/272/69
f 92/273/70 89/274/70 90/275/70 91/276/70
o entity0_brush12
v 0.2 0.1 1.1
v 0.2 0.1 1.2000000000000002
v 0.2 0.2 1.2000000000000002
v 0.2 0.2 1.1
v 0.30000000000000004 0.2 1.2000000000000002
v 0.30000000000000004 0.1 1.2000000000000002
v 0.30000000000000004 0.1 1.1
v 0.30000000000000004 0.2 1.1
vt -5.5 0.5
vt -6 0.5
vt -6 1
vt -5.5 1
vt 1.5 1
vt 1 1
vt 1 0.5
vt 1.5 0.5
vt 1.5 -6
vt 1 -6
vt 1 -5.5
vt 1.5 -5.5
vt 1.5 -5.5
vt 1 -5.5
vt 1 -6
vt 1.5 -6
vt 1.5 0.5
vt 1 0.5
vt 1 1
vt 1.5 1
vt -5.5 1
vt -6 1
vt -6 0.5
vt -5.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 93/277/71 94/278/71 95/279/71 96/280/71
f 97/281/72 95/282/72 94/283/72 98/284/72
f 98/285/73 94/286/73 93/287/73 99/288/73
f 100/289/74 96/290/74 95/291/74 97/292/74
f 99/293/75 93/294/75 96/295/75 100/296/75
f 100/297/76 97/298/76 98/299/76 99/300/76
o entity0_brush13
v 0.2 0.1 1.3
v 0.2 0.1 1.4000000000000001
v 0.2 0.30000000000000004 1.4000000000000001
v 0.2 0.30000000000000004 1.3
v 0.30000000000000004 0.30000000000000004 1.4000000000000001
v 0.30000000000000004 0.1 1.4000000000000001
v 0.30000000000000004 0.1 1.3
v 0.30000000000000004 0.30000000000000004 1.3
vt -6.5 0.5
vt -7 0.5
vt -7 1.5
vt -6.5 1.5
vt 1.5 1.5
vt 1 1.5
vt 1 0.5
vt 1.5 0.5
vt 1.5 -7
vt 1 -7
vt 1 -6.5
vt 1.5 -6.5
vt 1.5 -6.5
vt 1 -6.5
vt 1 -7
vt 1.5 -7
vt 1.5 0.5
vt 1 0.5
vt 1 1.5
vt 1.5 1.5
vt -6.5 1.5
vt -7 1.5
vt -7 0.5
vt -6.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 101/301/77 102/302/77 103/303/77 104/304/77
f 105/305/78 103/306/78 102/307/78 106/308/78
f 106/309/79 102/310/79 101/311/79 107/312/79
f 108/313/80 104/314/80 103/315/80 105/316/80
f 107/317/81 101/318/81 104/319/81 108/320/81
f 108/321/82 105/322/82 106/323/82 107/324/82
o entity0_brush14
v 0.2 0.1 1.5
v 0.2 0.1 1.6
v 0.2 0.5 1.6
v 0.2 0.5 1.5
v 0.30000000000000004 0.5 1.6
v 0.30000000000000004 0.1 1.6
v 0.30000000000000004 0.1 1.5
v 0.30000000000000004 0.5 1.5
vt -7.5 0.5
vt -8 0.5
vt -8 2.5
vt -7.5 2.5
vt 1.5 2.5
vt 1 2.5
vt 1 0.5
vt 1.5 0.5
vt 1.5 -8
vt 1 -8
vt 1 -7.5
vt 1.5 -7.5
vt 1.5 -7.5
vt 1 -7.5
vt 1 -8
vt 1.5 -8
vt 1.5 0.5
vt 1 0.5
vt 1 2.5
vt 1.5 2.5
vt -7.5 2.5
vt -8 2.5
vt -8 0.5
vt -7.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_c635d5d5-1aa0-7e8f-f427-c4c1aa38de09
f 109/325/83 110/326/83 111/327/83 112/328/83
f 113/329/84 111/330/84 110/331/84 114/332/84
f 114/333/85 110/334/85 109/335/85 115/336/85
f 116/337/86 112/338/86 111/339/86 113/340/86
f 115/341/87 109/342/87 112/343/87 116/344/87
f 116/345/88 113/346/88 114/347/88 115/348/88

BIN
assets/models/tex.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -0,0 +1,3 @@
newmtl __TB_empty
map_Kd tex.png

442
assets/models/unnamed.obj Normal file
View File

@ -0,0 +1,442 @@
mtllib unnamed.mtl
# vertices
v -112 -16 -160
v -112 -16 400
v -112 16 400
v -112 16 -160
v 112 16 400
v 112 -16 400
v 112 -16 -160
v 112 16 -160
v 96 16 -160
v 96 16 160
v 96 160 160
v 96 160 -160
v 112 160 160
v 112 16 160
v 112 16 -160
v 112 160 -160
v -112 16 -160
v -112 16 160
v -112 160 160
v -112 160 -160
v -96 160 160
v -96 16 160
v -96 16 -160
v -96 160 -160
v 32 16 144
v 32 16 160
v 32 160 160
v 32 160 144
v 96 160 160
v 96 16 160
v 96 16 144
v 96 160 144
v -96 16 144
v -96 16 160
v -96 160 160
v -96 160 144
v -32 160 160
v -32 16 160
v -32 16 144
v -32 160 144
v -32 96 144
v -32 96 160
v -32 160 160
v -32 160 144
v 32 160 160
v 32 96 160
v 32 96 144
v 32 160 144
v -96 16 -160
v -96 16 -144
v -96 160 -144
v -96 160 -160
v 96 160 -144
v 96 16 -144
v 96 16 -160
v 96 160 -160
v -112 160 -160
v -112 160 160
v -112 176 160
v -112 176 -160
v 112 176 160
v 112 160 160
v 112 160 -160
v 112 176 -160
v -80 16 224
v -80 16 368
v -80 112 368
v -48 112 368
v -48 16 368
v -48 16 224
v -112 16 368
v -112 16 400
v -112 112 400
v -112 112 368
v -48 112 400
v -48 16 400
v -48 16 368
v -48 112 368
v -112 112 160
v -112 112 368
v -112 176 160
v -80 176 160
v -80 112 368
v -80 112 160
v -112 16 160
v -112 16 368
v -112 112 368
v -112 112 160
v -80 112 368
v -80 16 368
v -80 16 160
v -80 112 160
v 32 16 176
v 32 16 192
v 32 32 192
v 32 32 176
v 48 32 192
v 48 16 192
v 48 16 176
v 48 32 176
v 32 16 208
v 32 16 224
v 32 48 224
v 32 48 208
v 48 48 224
v 48 16 224
v 48 16 208
v 48 48 208
v 32 16 240
v 32 16 256
v 32 80 256
v 32 80 240
v 48 80 256
v 48 16 256
v 48 16 240
v 48 80 240
# texture coordinates
vt 5 -0.5
vt -12.5 -0.5
vt -12.5 0.5
vt 5 0.5
vt 3.5 0.5
vt -3.5 0.5
vt -3.5 -0.5
vt 3.5 -0.5
vt 3.5 -12.5
vt -3.5 -12.5
vt -3.5 5
vt 3.5 5
vt -5 0.5
vt -5 5
vt 5 5
vt 3 5
vt 3 0.5
vt 3.5 -5
vt 3 -5
vt -2.5 5
vt -3 5
vt -3 0.5
vt -2.5 0.5
vt -2.5 -5
vt -3 -5
vt -4.5 0.5
vt -4.5 5
vt 1 5
vt 1 0.5
vt 1 -5
vt 1 -4.5
vt 3 -4.5
vt -1 5
vt -1 0.5
vt -1 -5
vt -3 -4.5
vt -1 -4.5
vt -4.5 3
vt -5 3
vt -1 3
vt 1 3
vt 4.5 0.5
vt 4.5 5
vt 3 4.5
vt -3 4.5
vt -5 5.5
vt 5 5.5
vt 3.5 5.5
vt -3.5 5.5
vt -3.5 -5
vt -7 0.5
vt -11.5 0.5
vt -11.5 3.5
vt -1.5 3.5
vt -2.5 3.5
vt -1.5 0.5
vt -1.5 -11.5
vt -2.5 -11.5
vt -2.5 -7
vt -1.5 -7
vt -12.5 3.5
vt -3.5 3.5
vt -1.5 -12.5
vt -3.5 -11.5
vt 4.5 3.5
vt 11 3.5
vt 4.5 5.5
vt 2.5 4.5
vt 3.5 4.5
vt 3.5 11
vt 2.5 11
vt 2.5 3.5
vt 3.5 3.5
vt 2.5 5.5
vt -5 3.5
vt -5.5 0.5
vt -6 0.5
vt -6 1
vt -5.5 1
vt 1.5 1
vt 1 1
vt 1.5 0.5
vt 1.5 -6
vt 1 -6
vt 1 -5.5
vt 1.5 -5.5
vt -6.5 0.5
vt -7 1.5
vt -6.5 1.5
vt 1.5 1.5
vt 1 1.5
vt 1.5 -7
vt 1 -7
vt 1 -6.5
vt 1.5 -6.5
vt -7.5 0.5
vt -8 0.5
vt -8 2.5
vt -7.5 2.5
vt 1.5 2.5
vt 1 2.5
vt 1.5 -8
vt 1 -8
vt 1 -7.5
vt 1.5 -7.5
# normals
vn -1 0 0
vn 0 0 1
vn 0 -1 -0
vn -0 1 -0
vn 0 -0 -1
vn 1 0 0
vn -0 0.8320502943378436 -0.554700196225229
vn 0 0.95577900872195 0.2940858488375231
o entity0_brush0
usemtl __TB_empty
f 1/1/1 2/2/1 3/3/1 4/4/1
usemtl __TB_empty
f 5/5/2 3/6/2 2/7/2 6/8/2
usemtl __TB_empty
f 6/9/3 2/10/3 1/11/3 7/12/3
usemtl __TB_empty
f 8/12/4 4/11/4 3/10/4 5/9/4
usemtl __TB_empty
f 7/8/5 1/7/5 4/6/5 8/5/5
usemtl __TB_empty
f 8/4/6 5/3/6 6/2/6 7/1/6
o entity0_brush1
usemtl __TB_empty
f 9/4/1 10/13/1 11/14/1 12/15/1
usemtl __TB_empty
f 13/12/2 11/16/2 10/17/2 14/5/2
usemtl __TB_empty
f 14/18/3 10/19/3 9/16/3 15/12/3
usemtl __TB_empty
f 16/12/4 12/16/4 11/19/4 13/18/4
usemtl __TB_empty
f 15/5/5 9/17/5 12/16/5 16/12/5
usemtl __TB_empty
f 16/15/6 13/14/6 14/13/6 15/4/6
o entity0_brush2
usemtl __TB_empty
f 17/4/1 18/13/1 19/14/1 20/15/1
usemtl __TB_empty
f 21/20/2 19/21/2 18/22/2 22/23/2
usemtl __TB_empty
f 22/24/3 18/25/3 17/21/3 23/20/3
usemtl __TB_empty
f 24/20/4 20/21/4 19/25/4 21/24/4
usemtl __TB_empty
f 23/23/5 17/22/5 20/21/5 24/20/5
usemtl __TB_empty
f 24/15/6 21/14/6 22/13/6 23/4/6
o entity0_brush3
usemtl __TB_empty
f 25/26/1 26/13/1 27/14/1 28/27/1
usemtl __TB_empty
f 29/16/2 27/28/2 26/29/2 30/17/2
usemtl __TB_empty
f 30/19/3 26/30/3 25/31/3 31/32/3
usemtl __TB_empty
f 32/32/4 28/31/4 27/30/4 29/19/4
usemtl __TB_empty
f 31/17/5 25/29/5 28/28/5 32/16/5
usemtl __TB_empty
f 32/27/6 29/14/6 30/13/6 31/26/6
o entity0_brush4
usemtl __TB_empty
f 33/26/1 34/13/1 35/14/1 36/27/1
usemtl __TB_empty
f 37/33/2 35/21/2 34/22/2 38/34/2
usemtl __TB_empty
f 38/35/3 34/25/3 33/36/3 39/37/3
usemtl __TB_empty
f 40/37/4 36/36/4 35/25/4 37/35/4
usemtl __TB_empty
f 39/34/5 33/22/5 36/21/5 40/33/5
usemtl __TB_empty
f 40/27/6 37/14/6 38/13/6 39/26/6
o entity0_brush5
usemtl __TB_empty
f 41/38/1 42/39/1 43/14/1 44/27/1
usemtl __TB_empty
f 45/28/2 43/33/2 42/40/2 46/41/2
usemtl __TB_empty
f 46/30/3 42/35/3 41/37/3 47/31/3
usemtl __TB_empty
f 48/31/4 44/37/4 43/35/4 45/30/4
usemtl __TB_empty
f 47/41/5 41/40/5 44/33/5 48/28/5
usemtl __TB_empty
f 48/27/6 45/14/6 46/39/6 47/38/6
o entity0_brush6
usemtl __TB_empty
f 49/4/1 50/42/1 51/43/1 52/15/1
usemtl __TB_empty
f 53/16/2 51/21/2 50/22/2 54/17/2
usemtl __TB_empty
f 54/44/3 50/45/3 49/21/3 55/16/3
usemtl __TB_empty
f 56/16/4 52/21/4 51/45/4 53/44/4
usemtl __TB_empty
f 55/17/5 49/22/5 52/21/5 56/16/5
usemtl __TB_empty
f 56/15/6 53/43/6 54/42/6 55/4/6
o entity0_brush7
usemtl __TB_empty
f 57/15/1 58/14/1 59/46/1 60/47/1
usemtl __TB_empty
f 61/48/2 59/49/2 58/11/2 62/12/2
usemtl __TB_empty
f 62/18/3 58/50/3 57/11/3 63/12/3
usemtl __TB_empty
f 64/12/4 60/11/4 59/50/4 61/18/4
usemtl __TB_empty
f 63/12/5 57/11/5 60/49/5 64/48/5
usemtl __TB_empty
f 64/47/6 61/46/6 62/14/6 63/15/6
o entity0_brush8
usemtl __TB_empty
f 65/51/1 66/52/1 67/53/1
usemtl __TB_empty
f 68/54/2 67/55/2 66/23/2 69/56/2
usemtl __TB_empty
f 69/57/3 66/58/3 65/59/3 70/60/3
usemtl __TB_empty
f 70/60/7 65/59/7 67/58/7 68/57/7
usemtl __TB_empty
f 69/52/6 70/51/6 68/53/6
o entity0_brush9
usemtl __TB_empty
f 71/52/1 72/3/1 73/61/1 74/53/1
usemtl __TB_empty
f 75/54/2 73/62/2 72/6/2 76/56/2
usemtl __TB_empty
f 76/63/3 72/10/3 71/64/3 77/57/3
usemtl __TB_empty
f 78/57/4 74/64/4 73/10/4 75/63/4
usemtl __TB_empty
f 77/56/5 71/6/5 74/62/5 78/54/5
usemtl __TB_empty
f 78/53/6 75/61/6 76/3/6 77/52/6
o entity0_brush10
usemtl __TB_empty
f 79/65/1 80/66/1 81/67/1
usemtl __TB_empty
f 82/68/8 81/69/8 80/70/8 83/71/8
usemtl __TB_empty
f 83/71/3 80/70/3 79/69/3 84/68/3
usemtl __TB_empty
f 84/72/5 79/73/5 81/48/5 82/74/5
usemtl __TB_empty
f 83/66/6 84/65/6 82/67/6
o entity0_brush11
usemtl __TB_empty
f 85/13/1 86/52/1 87/53/1 88/75/1
usemtl __TB_empty
f 89/55/2 87/62/2 86/6/2 90/23/2
usemtl __TB_empty
f 90/58/3 86/64/3 85/50/3 91/24/3
usemtl __TB_empty
f 92/24/4 88/50/4 87/64/4 89/58/4
usemtl __TB_empty
f 91/23/5 85/6/5 88/62/5 92/55/5
usemtl __TB_empty
f 92/75/6 89/53/6 90/52/6 91/13/6
o entity0_brush12
usemtl __TB_empty
f 93/76/1 94/77/1 95/78/1 96/79/1
usemtl __TB_empty
f 97/80/2 95/81/2 94/29/2 98/82/2
usemtl __TB_empty
f 98/83/3 94/84/3 93/85/3 99/86/3
usemtl __TB_empty
f 100/86/4 96/85/4 95/84/4 97/83/4
usemtl __TB_empty
f 99/82/5 93/29/5 96/81/5 100/80/5
usemtl __TB_empty
f 100/79/6 97/78/6 98/77/6 99/76/6
o entity0_brush13
usemtl __TB_empty
f 101/87/1 102/51/1 103/88/1 104/89/1
usemtl __TB_empty
f 105/90/2 103/91/2 102/29/2 106/82/2
usemtl __TB_empty
f 106/92/3 102/93/3 101/94/3 107/95/3
usemtl __TB_empty
f 108/95/4 104/94/4 103/93/4 105/92/4
usemtl __TB_empty
f 107/82/5 101/29/5 104/91/5 108/90/5
usemtl __TB_empty
f 108/89/6 105/88/6 106/51/6 107/87/6
o entity0_brush14
usemtl __TB_empty
f 109/96/1 110/97/1 111/98/1 112/99/1
usemtl __TB_empty
f 113/100/2 111/101/2 110/29/2 114/82/2
usemtl __TB_empty
f 114/102/3 110/103/3 109/104/3 115/105/3
usemtl __TB_empty
f 116/105/4 112/104/4 111/103/4 113/102/4
usemtl __TB_empty
f 115/82/5 109/29/5 112/101/5 116/100/5
usemtl __TB_empty
f 116/99/6 113/98/6 114/97/6 115/96/6

674
assets/models/unnamed2.obj Normal file
View File

@ -0,0 +1,674 @@
# Made in Blockbench 4.12.1
mtllib unnamed2.mtl
o unknown
o entity0_brush0
v -7 -1 -10
v -7 -1 25
v -7 1 25
v -7 1 -10
v 7 1 25
v 7 -1 25
v 7 -1 -10
v 7 1 -10
vt 5 -0.5
vt -12.5 -0.5
vt -12.5 0.5
vt 5 0.5
vt 3.5 0.5
vt -3.5 0.5
vt -3.5 -0.5
vt 3.5 -0.5
vt 3.5 -12.5
vt -3.5 -12.5
vt -3.5 5
vt 3.5 5
vt 3.5 5
vt -3.5 5
vt -3.5 -12.5
vt 3.5 -12.5
vt 3.5 -0.5
vt -3.5 -0.5
vt -3.5 0.5
vt 3.5 0.5
vt 5 0.5
vt -12.5 0.5
vt -12.5 -0.5
vt 5 -0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 1/1/1 2/2/1 3/3/1 4/4/1
f 5/5/2 3/6/2 2/7/2 6/8/2
f 6/9/3 2/10/3 1/11/3 7/12/3
f 8/13/4 4/14/4 3/15/4 5/16/4
f 7/17/5 1/18/5 4/19/5 8/20/5
f 8/21/6 5/22/6 6/23/6 7/24/6
o entity0_brush1
v 6 1 -10
v 6 1 10
v 6 10 10
v 6 10 -10
v 7 10 10
v 7 1 10
v 7 1 -10
v 7 10 -10
vt 5 0.5
vt -5 0.5
vt -5 5
vt 5 5
vt 3.5 5
vt 3 5
vt 3 0.5
vt 3.5 0.5
vt 3.5 -5
vt 3 -5
vt 3 5
vt 3.5 5
vt 3.5 5
vt 3 5
vt 3 -5
vt 3.5 -5
vt 3.5 0.5
vt 3 0.5
vt 3 5
vt 3.5 5
vt 5 5
vt -5 5
vt -5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 9/25/7 10/26/7 11/27/7 12/28/7
f 13/29/8 11/30/8 10/31/8 14/32/8
f 14/33/9 10/34/9 9/35/9 15/36/9
f 16/37/10 12/38/10 11/39/10 13/40/10
f 15/41/11 9/42/11 12/43/11 16/44/11
f 16/45/12 13/46/12 14/47/12 15/48/12
o entity0_brush2
v -7 1 -10
v -7 1 10
v -7 10 10
v -7 10 -10
v -6 10 10
v -6 1 10
v -6 1 -10
v -6 10 -10
vt 5 0.5
vt -5 0.5
vt -5 5
vt 5 5
vt -2.5 5
vt -3 5
vt -3 0.5
vt -2.5 0.5
vt -2.5 -5
vt -3 -5
vt -3 5
vt -2.5 5
vt -2.5 5
vt -3 5
vt -3 -5
vt -2.5 -5
vt -2.5 0.5
vt -3 0.5
vt -3 5
vt -2.5 5
vt 5 5
vt -5 5
vt -5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 17/49/13 18/50/13 19/51/13 20/52/13
f 21/53/14 19/54/14 18/55/14 22/56/14
f 22/57/15 18/58/15 17/59/15 23/60/15
f 24/61/16 20/62/16 19/63/16 21/64/16
f 23/65/17 17/66/17 20/67/17 24/68/17
f 24/69/18 21/70/18 22/71/18 23/72/18
o entity0_brush3
v 2 1 9
v 2 1 10
v 2 10 10
v 2 10 9
v 6 10 10
v 6 1 10
v 6 1 9
v 6 10 9
vt -4.5 0.5
vt -5 0.5
vt -5 5
vt -4.5 5
vt 3 5
vt 1 5
vt 1 0.5
vt 3 0.5
vt 3 -5
vt 1 -5
vt 1 -4.5
vt 3 -4.5
vt 3 -4.5
vt 1 -4.5
vt 1 -5
vt 3 -5
vt 3 0.5
vt 1 0.5
vt 1 5
vt 3 5
vt -4.5 5
vt -5 5
vt -5 0.5
vt -4.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 25/73/19 26/74/19 27/75/19 28/76/19
f 29/77/20 27/78/20 26/79/20 30/80/20
f 30/81/21 26/82/21 25/83/21 31/84/21
f 32/85/22 28/86/22 27/87/22 29/88/22
f 31/89/23 25/90/23 28/91/23 32/92/23
f 32/93/24 29/94/24 30/95/24 31/96/24
o entity0_brush4
v -6 1 9
v -6 1 10
v -6 10 10
v -6 10 9
v -2 10 10
v -2 1 10
v -2 1 9
v -2 10 9
vt -4.5 0.5
vt -5 0.5
vt -5 5
vt -4.5 5
vt -1 5
vt -3 5
vt -3 0.5
vt -1 0.5
vt -1 -5
vt -3 -5
vt -3 -4.5
vt -1 -4.5
vt -1 -4.5
vt -3 -4.5
vt -3 -5
vt -1 -5
vt -1 0.5
vt -3 0.5
vt -3 5
vt -1 5
vt -4.5 5
vt -5 5
vt -5 0.5
vt -4.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 33/97/25 34/98/25 35/99/25 36/100/25
f 37/101/26 35/102/26 34/103/26 38/104/26
f 38/105/27 34/106/27 33/107/27 39/108/27
f 40/109/28 36/110/28 35/111/28 37/112/28
f 39/113/29 33/114/29 36/115/29 40/116/29
f 40/117/30 37/118/30 38/119/30 39/120/30
o entity0_brush5
v -2 6 9
v -2 6 10
v -2 10 10
v -2 10 9
v 2 10 10
v 2 6 10
v 2 6 9
v 2 10 9
vt -4.5 3
vt -5 3
vt -5 5
vt -4.5 5
vt 1 5
vt -1 5
vt -1 3
vt 1 3
vt 1 -5
vt -1 -5
vt -1 -4.5
vt 1 -4.5
vt 1 -4.5
vt -1 -4.5
vt -1 -5
vt 1 -5
vt 1 3
vt -1 3
vt -1 5
vt 1 5
vt -4.5 5
vt -5 5
vt -5 3
vt -4.5 3
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 41/121/31 42/122/31 43/123/31 44/124/31
f 45/125/32 43/126/32 42/127/32 46/128/32
f 46/129/33 42/130/33 41/131/33 47/132/33
f 48/133/34 44/134/34 43/135/34 45/136/34
f 47/137/35 41/138/35 44/139/35 48/140/35
f 48/141/36 45/142/36 46/143/36 47/144/36
o entity0_brush6
v -6 1 -10
v -6 1 -9
v -6 10 -9
v -6 10 -10
v 6 10 -9
v 6 1 -9
v 6 1 -10
v 6 10 -10
vt 5 0.5
vt 4.5 0.5
vt 4.5 5
vt 5 5
vt 3 5
vt -3 5
vt -3 0.5
vt 3 0.5
vt 3 4.5
vt -3 4.5
vt -3 5
vt 3 5
vt 3 5
vt -3 5
vt -3 4.5
vt 3 4.5
vt 3 0.5
vt -3 0.5
vt -3 5
vt 3 5
vt 5 5
vt 4.5 5
vt 4.5 0.5
vt 5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 49/145/37 50/146/37 51/147/37 52/148/37
f 53/149/38 51/150/38 50/151/38 54/152/38
f 54/153/39 50/154/39 49/155/39 55/156/39
f 56/157/40 52/158/40 51/159/40 53/160/40
f 55/161/41 49/162/41 52/163/41 56/164/41
f 56/165/42 53/166/42 54/167/42 55/168/42
o entity0_brush7
v -7 10 -10
v -7 10 10
v -7 11 10
v -7 11 -10
v 7 11 10
v 7 10 10
v 7 10 -10
v 7 11 -10
vt 5 5
vt -5 5
vt -5 5.5
vt 5 5.5
vt 3.5 5.5
vt -3.5 5.5
vt -3.5 5
vt 3.5 5
vt 3.5 -5
vt -3.5 -5
vt -3.5 5
vt 3.5 5
vt 3.5 5
vt -3.5 5
vt -3.5 -5
vt 3.5 -5
vt 3.5 5
vt -3.5 5
vt -3.5 5.5
vt 3.5 5.5
vt 5 5.5
vt -5 5.5
vt -5 5
vt 5 5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 57/169/43 58/170/43 59/171/43 60/172/43
f 61/173/44 59/174/44 58/175/44 62/176/44
f 62/177/45 58/178/45 57/179/45 63/180/45
f 64/181/46 60/182/46 59/183/46 61/184/46
f 63/185/47 57/186/47 60/187/47 64/188/47
f 64/189/48 61/190/48 62/191/48 63/192/48
o entity0_brush8
v -5 1 14
v -5 1 23
v -5 7 23
v -3 7 23
v -3 1 23
v -3 1 14
vt -7 0.5
vt -11.5 0.5
vt -11.5 3.5
vt -1.5 3.5
vt -2.5 3.5
vt -2.5 0.5
vt -1.5 0.5
vt -1.5 -11.5
vt -2.5 -11.5
vt -2.5 -7
vt -1.5 -7
vt -1.5 -7
vt -2.5 -7
vt -2.5 -11.5
vt -1.5 -11.5
vt -11.5 0.5
vt -7 0.5
vt -11.5 3.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 0.8320502943378438 -0.5547001962252291
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 65/193/49 66/194/49 67/195/49
f 68/196/50 67/197/50 66/198/50 69/199/50
f 69/200/51 66/201/51 65/202/51 70/203/51
f 70/204/52 65/205/52 67/206/52 68/207/52
f 69/208/53 70/209/53 68/210/53
o entity0_brush9
v -7 1 23
v -7 1 25
v -7 7 25
v -7 7 23
v -3 7 25
v -3 1 25
v -3 1 23
v -3 7 23
vt -11.5 0.5
vt -12.5 0.5
vt -12.5 3.5
vt -11.5 3.5
vt -1.5 3.5
vt -3.5 3.5
vt -3.5 0.5
vt -1.5 0.5
vt -1.5 -12.5
vt -3.5 -12.5
vt -3.5 -11.5
vt -1.5 -11.5
vt -1.5 -11.5
vt -3.5 -11.5
vt -3.5 -12.5
vt -1.5 -12.5
vt -1.5 0.5
vt -3.5 0.5
vt -3.5 3.5
vt -1.5 3.5
vt -11.5 3.5
vt -12.5 3.5
vt -12.5 0.5
vt -11.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 71/211/54 72/212/54 73/213/54 74/214/54
f 75/215/55 73/216/55 72/217/55 76/218/55
f 76/219/56 72/220/56 71/221/56 77/222/56
f 78/223/57 74/224/57 73/225/57 75/226/57
f 77/227/58 71/228/58 74/229/58 78/230/58
f 78/231/59 75/232/59 76/233/59 77/234/59
o entity0_brush10
v -7 7 10
v -7 7 23
v -7 11 10
v -5 11 10
v -5 7 23
v -5 7 10
vt 4.5 3.5
vt 11 3.5
vt 4.5 5.5
vt 2.5 4.5
vt 3.5 4.5
vt 3.5 11
vt 2.5 11
vt 2.5 11
vt 3.5 11
vt 3.5 4.5
vt 2.5 4.5
vt 2.5 3.5
vt 3.5 3.5
vt 3.5 5.5
vt 2.5 5.5
vt 11 3.5
vt 4.5 3.5
vt 4.5 5.5
vn -1 0 0
vn 0 0.9557790087219502 0.29408584883752314
vn 0 -1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 79/235/60 80/236/60 81/237/60
f 82/238/61 81/239/61 80/240/61 83/241/61
f 83/242/62 80/243/62 79/244/62 84/245/62
f 84/246/63 79/247/63 81/248/63 82/249/63
f 83/250/64 84/251/64 82/252/64
o entity0_brush11
v -7 1 10
v -7 1 23
v -7 7 23
v -7 7 10
v -5 7 23
v -5 1 23
v -5 1 10
v -5 7 10
vt -5 0.5
vt -11.5 0.5
vt -11.5 3.5
vt -5 3.5
vt -2.5 3.5
vt -3.5 3.5
vt -3.5 0.5
vt -2.5 0.5
vt -2.5 -11.5
vt -3.5 -11.5
vt -3.5 -5
vt -2.5 -5
vt -2.5 -5
vt -3.5 -5
vt -3.5 -11.5
vt -2.5 -11.5
vt -2.5 0.5
vt -3.5 0.5
vt -3.5 3.5
vt -2.5 3.5
vt -5 3.5
vt -11.5 3.5
vt -11.5 0.5
vt -5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 85/253/65 86/254/65 87/255/65 88/256/65
f 89/257/66 87/258/66 86/259/66 90/260/66
f 90/261/67 86/262/67 85/263/67 91/264/67
f 92/265/68 88/266/68 87/267/68 89/268/68
f 91/269/69 85/270/69 88/271/69 92/272/69
f 92/273/70 89/274/70 90/275/70 91/276/70
o entity0_brush12
v 2 1 11
v 2 1 12
v 2 2 12
v 2 2 11
v 3 2 12
v 3 1 12
v 3 1 11
v 3 2 11
vt -5.5 0.5
vt -6 0.5
vt -6 1
vt -5.5 1
vt 1.5 1
vt 1 1
vt 1 0.5
vt 1.5 0.5
vt 1.5 -6
vt 1 -6
vt 1 -5.5
vt 1.5 -5.5
vt 1.5 -5.5
vt 1 -5.5
vt 1 -6
vt 1.5 -6
vt 1.5 0.5
vt 1 0.5
vt 1 1
vt 1.5 1
vt -5.5 1
vt -6 1
vt -6 0.5
vt -5.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 93/277/71 94/278/71 95/279/71 96/280/71
f 97/281/72 95/282/72 94/283/72 98/284/72
f 98/285/73 94/286/73 93/287/73 99/288/73
f 100/289/74 96/290/74 95/291/74 97/292/74
f 99/293/75 93/294/75 96/295/75 100/296/75
f 100/297/76 97/298/76 98/299/76 99/300/76
o entity0_brush13
v 2 1 13
v 2 1 14
v 2 3 14
v 2 3 13
v 3 3 14
v 3 1 14
v 3 1 13
v 3 3 13
vt -6.5 0.5
vt -7 0.5
vt -7 1.5
vt -6.5 1.5
vt 1.5 1.5
vt 1 1.5
vt 1 0.5
vt 1.5 0.5
vt 1.5 -7
vt 1 -7
vt 1 -6.5
vt 1.5 -6.5
vt 1.5 -6.5
vt 1 -6.5
vt 1 -7
vt 1.5 -7
vt 1.5 0.5
vt 1 0.5
vt 1 1.5
vt 1.5 1.5
vt -6.5 1.5
vt -7 1.5
vt -7 0.5
vt -6.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 101/301/77 102/302/77 103/303/77 104/304/77
f 105/305/78 103/306/78 102/307/78 106/308/78
f 106/309/79 102/310/79 101/311/79 107/312/79
f 108/313/80 104/314/80 103/315/80 105/316/80
f 107/317/81 101/318/81 104/319/81 108/320/81
f 108/321/82 105/322/82 106/323/82 107/324/82
o entity0_brush14
v 2 1 15
v 2 1 16
v 2 5 16
v 2 5 15
v 3 5 16
v 3 1 16
v 3 1 15
v 3 5 15
vt -7.5 0.5
vt -8 0.5
vt -8 2.5
vt -7.5 2.5
vt 1.5 2.5
vt 1 2.5
vt 1 0.5
vt 1.5 0.5
vt 1.5 -8
vt 1 -8
vt 1 -7.5
vt 1.5 -7.5
vt 1.5 -7.5
vt 1 -7.5
vt 1 -8
vt 1.5 -8
vt 1.5 0.5
vt 1 0.5
vt 1 2.5
vt 1.5 2.5
vt -7.5 2.5
vt -8 2.5
vt -8 0.5
vt -7.5 0.5
vn -1 0 0
vn 0 0 1
vn 0 -1 0
vn 0 1 0
vn 0 0 -1
vn 1 0 0
usemtl m_d3225dde-a8e4-9d3a-05cb-656a25ac9643
f 109/325/83 110/326/83 111/327/83 112/328/83
f 113/329/84 111/330/84 110/331/84 114/332/84
f 114/333/85 110/334/85 109/335/85 115/336/85
f 116/337/86 112/338/86 111/339/86 113/340/86
f 115/341/87 109/342/87 112/343/87 116/344/87
f 116/345/88 113/346/88 114/347/88 115/348/88

View File

@ -13,7 +13,7 @@ uniform vec4 colDiffuse;
// Output fragment color // Output fragment color
out vec4 finalColor; out vec4 finalColor;
#define MAX_LIGHTS 12 #define MAX_LIGHTS 32
struct Light { struct Light {
int enabled; int enabled;

View File

@ -11,7 +11,7 @@ uniform sampler2D texture0;
uniform sampler2D texture1; uniform sampler2D texture1;
uniform vec4 colDiffuse; uniform vec4 colDiffuse;
#define POSTERIZE 5.0 #define POSTERIZE 6.0
out vec4 finalColor; out vec4 finalColor;
@ -27,7 +27,7 @@ void main() {
int col = int(mod(gl_FragCoord.x, 4)); int col = int(mod(gl_FragCoord.x, 4));
int row = int(mod(gl_FragCoord.y, 4)); int row = int(mod(gl_FragCoord.y, 4));
float threshold = float(bayer16[col + 4 * row]) / 16.0 - 0.5; float threshold = float(bayer16[col + 4 * row]) / 16.0 - 0.5;
grey = clamp(grey + threshold * 0.04 + 0.15 , 0.01, 0.99); grey = clamp(grey + threshold * 0.2 , 0.01, 0.99);
vec2 paluv = vec2(grey, 0.5); vec2 paluv = vec2(grey, 0.5);
vec4 paletteValue = texture(texture1, paluv); vec4 paletteValue = texture(texture1, paluv);

398
collisions/main.odin Normal file
View File

@ -0,0 +1,398 @@
package main
import "core:fmt"
import "core:log"
import "core:math"
import "core:math/linalg"
import "core:math/rand"
import rl "vendor:raylib"
Buddy :: struct {
pos: [3]f32,
gothit: bool,
hit_timer: f32,
}
Light :: struct {
enabled: i32,
used: bool,
distanceNear: f32,
distanceFar: f32,
power: f32,
position: [3]f32,
color: [4]f32,
enabledLoc: i32,
distanceNearLoc: i32,
distanceFarLoc: i32,
powerLoc: i32,
positionLoc: i32,
colorLoc: i32,
shader: ^rl.Shader,
}
light_find_unused :: proc() -> (^Light, int) {
for &light, i in lights {
if light.enabled == 0 do return &light, i
}
return nil, -1
}
light_new :: proc(
shader: ^rl.Shader,
pos: [3]f32,
distanceNear: f32 = 0,
distanceFar: f32 = 10,
power: f32 = 1,
color: [4]f32 = {1, 1, 1, 1},
) -> ^Light {
light, id := light_find_unused()
if light == nil do return nil
light.enabled = 1
light.position = pos
light.distanceNear = distanceNear
light.distanceFar = distanceFar
light.power = power
light.color = color
light.shader = shader
light_set_uniforms(light, auto_cast id)
light_update_uniforms(light)
return light
}
light_destroy :: proc(light: ^Light) {
light.enabled = 0
light.used = false
light_update_uniforms(light)
}
light_set_uniforms :: proc(light: ^Light, i: i32) {
light.enabledLoc = rl.GetShaderLocation(light.shader^, rl.TextFormat("lights[%i].enabled", i))
light.distanceNearLoc = rl.GetShaderLocation(
light.shader^,
rl.TextFormat("lights[%i].distanceNear", i),
)
light.distanceFarLoc = rl.GetShaderLocation(
light.shader^,
rl.TextFormat("lights[%i].distanceFar", i),
)
light.powerLoc = rl.GetShaderLocation(light.shader^, rl.TextFormat("lights[%i].power", i))
light.positionLoc = rl.GetShaderLocation(
light.shader^,
rl.TextFormat("lights[%i].position", i),
)
light.colorLoc = rl.GetShaderLocation(light.shader^, rl.TextFormat("lights[%i].color", i))
}
light_update_uniforms :: proc(light: ^Light) {
rl.SetShaderValue(light.shader^, light.enabledLoc, &(light.enabled), .INT)
rl.SetShaderValue(light.shader^, light.distanceNearLoc, &(light.distanceNear), .FLOAT)
rl.SetShaderValue(light.shader^, light.distanceFarLoc, &(light.distanceFar), .FLOAT)
rl.SetShaderValue(light.shader^, light.powerLoc, &(light.power), .FLOAT)
rl.SetShaderValue(light.shader^, light.enabledLoc, &(light.enabled), .INT)
rl.SetShaderValue(light.shader^, light.enabledLoc, &(light.enabled), .INT)
rl.SetShaderValue(light.shader^, light.positionLoc, &(light.position), .VEC3)
rl.SetShaderValue(light.shader^, light.colorLoc, &(light.color), .VEC4)
}
move_light :: proc(light: ^Light, pos: [3]f32) {
light.position = pos
rl.SetShaderValue(light.shader^, light.positionLoc, &(light.position), .VEC3)
}
MAX_LIGHTS :: 32
lights := [MAX_LIGHTS]Light{}
main :: proc() {
rl.SetConfigFlags({.WINDOW_RESIZABLE, .MSAA_4X_HINT})
rl.InitWindow(900, 600, "flash")
// rl.ToggleBorderlessWindowed()
checker := rl.GenImageChecked(128, 128, 32, 32, {128, 128, 128, 255}, {150, 150, 150, 255})
defer rl.UnloadImage(checker)
checktex := rl.LoadTextureFromImage(checker)
defer rl.UnloadTexture(checktex)
checkmtl := rl.LoadMaterialDefault()
rl.SetMaterialTexture(&checkmtl, .ALBEDO, checktex)
checkplane := rl.GenMeshPlane(30, 30, 1, 1)
rl.GenMeshTangents(&checkplane)
w, h := rl.GetScreenWidth(), rl.GetScreenHeight()
pixelize: i32 = 2
target := rl.LoadRenderTexture(w / pixelize, h / pixelize)
posttarget := rl.LoadRenderTexture(w / pixelize, h / pixelize)
palette := rl.LoadTexture("assets/gfx/bluem0ld-1x.png")
rl.SetTextureFilter(palette, .POINT)
shader := rl.LoadShaderFromMemory(vshader, fshader)
posterizer := rl.LoadShaderFromMemory(nil, postprocess)
poster_palette := rl.GetShaderLocation(posterizer, "texture1")
checkmtl.shader = shader
for i := 0; i < 4; i += 1 {
light_new(&shader, {}, 0, 10, 0.8)
}
lights[0].power = 0.9
lights[0].distanceNear = 0
lights[0].distanceFar = 15
light_update_uniforms(&lights[0])
rl.SetShaderValue(shader, lights[0].distanceNearLoc, &(lights[0].distanceNear), .FLOAT)
rl.SetShaderValue(shader, lights[0].powerLoc, &(lights[0].power), .FLOAT)
// sponza := rl.LoadModel("assets/models/sponza.glb")
// for &material in sponza.materials[:sponza.materialCount] {
// material.shader = shader
// }
mdl := rl.LoadModel("assets/models/unnamed.obj")
for &material in mdl.materials[:mdl.materialCount] {
material.shader = shader
}
Tri :: [3][3]f32
tris := [dynamic]Tri{}
// vtx := [dynamic]f32{}
scale: f32 = 0.04
for &mesh in mdl.meshes[:mdl.meshCount] {
// mesh := mdl.meshes[mdl.meshCount-1]
fmt.printf("Mesh: %d %d\n", mesh.vertexCount, mesh.triangleCount)
for i: i32 = 0; i < mesh.vertexCount * 3; i += 9 {
append(
&tris,
Tri {
{
mesh.vertices[i] * scale,
mesh.vertices[i + 1] * scale,
mesh.vertices[i + 2] * scale,
},
{
mesh.vertices[i + 3] * scale,
mesh.vertices[i + 4] * scale,
mesh.vertices[i + 5] * scale,
},
{
mesh.vertices[i + 6] * scale,
mesh.vertices[i + 7] * scale,
mesh.vertices[i + 8] * scale,
},
},
)
// append(&vtx, mesh.vertices[i] * scale)
}
}
fmt.println("====\nMESH COUNT: ", mdl.meshCount, "\n===")
// for tri in tris {
// fmt.println(tri[0], tri[1], tri[2], sep = "\n")
// }
look_angles: rl.Vector2 = 0
cam := rl.Camera3D {
position = {0, 5, 0},
target = {1, 2, 0},
up = {0, 1, 0},
fovy = 90,
projection = .PERSPECTIVE,
}
vel: rl.Vector3
rotation: f32 = 0.0
rl.DisableCursor()
for !rl.WindowShouldClose() {
if rl.IsWindowResized() {
w, h = rl.GetScreenWidth(), rl.GetScreenHeight()
rl.UnloadRenderTexture(target)
target = rl.LoadRenderTexture(w / pixelize, h / pixelize)
rl.UnloadRenderTexture(posttarget)
posttarget = rl.LoadRenderTexture(w / pixelize, h / pixelize)
}
// rl.UpdateCamera(&cam, .FIRST_PERSON)
delta := rl.GetFrameTime()
rot :=
linalg.quaternion_from_euler_angle_y_f32(look_angles.y) *
linalg.quaternion_from_euler_angle_x_f32(look_angles.x)
forward := linalg.quaternion128_mul_vector3(rot, linalg.Vector3f32{0, 0, 1})
right := linalg.quaternion128_mul_vector3(rot, linalg.Vector3f32{1, 0, 0})
look_angles.y -= rl.GetMouseDelta().x * 0.0015
look_angles.x += rl.GetMouseDelta().y * 0.0015
SPEED :: 70
RAD :: 1
moving := false
if rl.IsKeyDown(.W) {
vel.xz += forward.xz * delta * SPEED
moving = true
}
if rl.IsKeyDown(.S) {
vel.xz -= forward.xz * delta * SPEED
moving = true
}
if rl.IsKeyDown(.D) {
vel.xz -= right.xz * delta * SPEED
moving = true
}
if rl.IsKeyDown(.A) {
vel.xz += right.xz * delta * SPEED
moving = true
}
vel.xz = rl.Vector2ClampValue(vel.xz, 0, 3)
if rl.IsKeyDown(.E) do vel.y += delta * SPEED
if rl.IsKeyDown(.Q) do vel.y -= delta * SPEED
// gravity
vel.y -= delta * 10 * (vel.y < 0.0 ? 2 : 1)
if rl.IsKeyPressed(.SPACE) do vel.y = 8
// damping
vel *= 1.0 / (1.0 + delta * 2)
// Collide
for t in tris {
closest := closest_point_on_triangle(cam.position, t[0], t[1], t[2])
diff := cam.position - closest
diff.xz *= 2
dist := linalg.length(diff)
normal := diff / dist
rl.DrawCubeV(closest, 0.05, dist > RAD ? rl.ORANGE : rl.WHITE)
if dist < RAD {
cam.position += normal * (RAD - dist)
// project velocity to the normal plane, if moving towards it
vel_normal_dot := linalg.dot(vel, normal)
if vel_normal_dot < 0 {
vel -= normal * vel_normal_dot
if normal.y > 0.5 && !moving {
vel.xz *= 0.5
vel.y = 0
}
}
}
}
cam.position += vel * delta
cam.target = cam.position + forward
rotation += delta
rl.BeginTextureMode(target)
rl.ClearBackground(rl.BLACK)
rl.BeginMode3D(cam)
for &light, i in lights[1:] {
if light.enabled == 0 do continue
color: [4]u8 = {
u8(light.color.r * 255),
u8(light.color.g * 255),
u8(light.color.b * 255),
u8(light.color.a * 255),
}
move_light(
&light,
{
math.cos_f32(rotation + (f32(i) / f32(3)) * math.PI * 2) * 5,
3,
math.sin_f32(rotation + (f32(i) / f32(3)) * math.PI * 2) * 5,
},
)
rl.DrawSphere(light.position, 0.1, transmute(rl.Color)color)
}
move_light(&lights[0], cam.position)
// for &tri in tris {
// rl.DrawSphere(tri[0], 0.5, rl.WHITE)
// rl.DrawSphere(tri[1], 0.5, rl.WHITE)
// rl.DrawSphere(tri[2], 0.5, rl.WHITE)
// rl.DrawTriangle3D(tri[0], tri[1], tri[2], rl.RED)
// }
rl.BeginShaderMode(shader)
rl.DrawModelEx(mdl, {}, {}, 0, 0.04, rl.WHITE)
rl.EndShaderMode()
rl.EndMode3D()
rl.EndTextureMode()
// rl.BeginDrawing()
rl.BeginTextureMode(posttarget)
// rl.BeginShaderMode(posterizer)
rl.SetShaderValueTexture(posterizer, poster_palette, palette)
rl.DrawTexture(target.texture, 0, 0, rl.WHITE)
// rl.EndShaderMode()
rl.EndTextureMode()
rl.BeginDrawing()
rl.DrawTexturePro(
posttarget.texture,
rl.Rectangle{0, 0, f32(w / pixelize), f32(h / pixelize)},
{0, 0, f32(w), f32(h)},
{},
0,
rl.WHITE,
)
rl.EndDrawing()
}
}
vshader: cstring = #load("../assets/shaders/vshader.glsl", cstring)
fshader: cstring = #load("../assets/shaders/fshader.glsl", cstring)
postprocess: cstring = #load("../assets/shaders/postprocess.glsl", cstring)
// Real Time collision detection 5.1.5
closest_point_on_triangle :: proc(p, a, b, c: rl.Vector3) -> rl.Vector3 {
// Check if P in vertex region outside A
ab := b - a
ac := c - a
ap := p - a
d1 := linalg.dot(ab, ap)
d2 := linalg.dot(ac, ap)
if d1 <= 0.0 && d2 <= 0.0 do return a // barycentric coordinates (1,0,0)
// Check if P in vertex region outside B
bp := p - b
d3 := linalg.dot(ab, bp)
d4 := linalg.dot(ac, bp)
if d3 >= 0.0 && d4 <= d3 do return b // barycentric coordinates (0,1,0)
// Check if P in edge region of AB, if so return projection of P onto AB
vc := d1 * d4 - d3 * d2
if vc <= 0.0 && d1 >= 0.0 && d3 <= 0.0 {
v := d1 / (d1 - d3)
return a + v * ab // barycentric coordinates (1-v,v,0)
}
// Check if P in vertex region outside C
cp := p - c
d5 := linalg.dot(ab, cp)
d6 := linalg.dot(ac, cp)
if d6 >= 0.0 && d5 <= d6 do return c // barycentric coordinates (0,0,1)
// Check if P in edge region of AC, if so return projection of P onto AC
vb := d5 * d2 - d1 * d6
if vb <= 0.0 && d2 >= 0.0 && d6 <= 0.0 {
w := d2 / (d2 - d6)
return a + w * ac // barycentric coordinates (1-w,0,w)
}
// Check if P in edge region of BC, if so return projection of P onto BC
va := d3 * d6 - d5 * d4
if va <= 0.0 && (d4 - d3) >= 0.0 && (d5 - d6) >= 0.0 {
w := (d4 - d3) / ((d4 - d3) + (d5 - d6))
return b + w * (c - b) // barycentric coordinates (0,1-w,w)
}
// P inside face region. Compute Q through its barycentric coordinates (u,v,w)
denom := 1.0 / (va + vb + vc)
v := vb * denom
w := vc * denom
return a + ab * v + ac * w // = u*a + v*b + w*c, u = va * denom = 1.0-v-w
}