[DEV] tutorial 21 'terrain heightmap' implementation add person and corect FOW

This commit is contained in:
Edouard DUPIN 2020-04-23 23:44:53 +02:00
parent 555031e910
commit 3f7ece604e
10 changed files with 1660 additions and 15 deletions

506
res/box.obj Normal file
View File

@ -0,0 +1,506 @@
# Blender v2.67 (sub 0) OBJ File: ''
# www.blender.org
o Cube
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 -1.000000
v 1.000000 -1.000000 1.000000
v 1.000000 -1.000000 1.000000
v -1.000000 -1.000000 -1.000000
v -1.000000 -1.000000 -1.000000
v 1.000000 1.000000 -0.999999
v 1.000000 1.000000 -0.999999
v -1.000000 -1.000000 1.000000
v -1.000000 -1.000000 1.000000
v 0.999999 1.000000 1.000001
v 0.999999 1.000000 1.000001
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 1.000000
v -1.000000 1.000000 -1.000000
v -1.000000 1.000000 -1.000000
v 0.817221 0.889117 1.099401
v 0.817221 0.889117 -1.099401
v 1.048229 0.889117 -1.099401
v 1.048229 0.889117 1.099401
v 0.817221 1.095724 1.099401
v 0.817221 1.095724 -1.099401
v 1.048229 1.095724 -1.099401
v 1.048229 1.095724 1.099401
v 0.817221 1.095724 1.099401
v 0.817221 1.095724 1.099401
v 0.817221 1.095724 -1.099401
v 0.817221 1.095724 -1.099401
v 0.817221 0.889117 -1.099401
v 0.817221 0.889117 -1.099401
v 0.817221 0.889117 1.099401
v 0.817221 0.889117 1.099401
v 1.048229 1.095724 -1.099401
v 1.048229 1.095724 -1.099401
v 1.048229 0.889117 -1.099401
v 1.048229 0.889117 -1.099401
v 1.048229 1.095724 1.099401
v 1.048229 1.095724 1.099401
v 1.048229 0.889117 1.099401
v 1.048229 0.889117 1.099401
v -1.099549 0.889117 1.099401
v -1.099549 0.889117 -1.099401
v -0.868540 0.889117 -1.099401
v -0.868540 0.889117 1.099401
v -1.099549 1.095724 1.099401
v -1.099549 1.095724 -1.099401
v -0.868540 1.095724 -1.099401
v -0.868540 1.095724 1.099401
v -1.099549 1.095724 1.099401
v -1.099549 1.095724 1.099401
v -1.099549 1.095724 -1.099401
v -1.099549 1.095724 -1.099401
v -1.099549 0.889117 -1.099401
v -1.099549 0.889117 -1.099401
v -1.099549 0.889117 1.099401
v -1.099549 0.889117 1.099401
v -0.868540 1.095724 -1.099401
v -0.868540 1.095724 -1.099401
v -0.868540 0.889117 -1.099401
v -0.868540 0.889117 -1.099401
v -0.868540 1.095724 1.099401
v -0.868540 1.095724 1.099401
v -0.868540 0.889117 1.099401
v -0.868540 0.889117 1.099401
v -1.099549 -1.064576 1.099401
v -1.099549 -1.064576 -1.099401
v -0.868540 -1.064576 -1.099401
v -0.868540 -1.064576 1.099401
v -1.099549 -0.857969 1.099401
v -1.099549 -0.857969 -1.099401
v -0.868540 -0.857969 -1.099401
v -0.868540 -0.857969 1.099401
v -1.099549 -0.857969 1.099401
v -1.099549 -0.857969 1.099401
v -1.099549 -0.857969 -1.099401
v -1.099549 -0.857969 -1.099401
v -1.099549 -1.064576 -1.099401
v -1.099549 -1.064576 -1.099401
v -1.099549 -1.064576 1.099401
v -1.099549 -1.064576 1.099401
v -0.868540 -0.857969 -1.099401
v -0.868540 -0.857969 -1.099401
v -0.868540 -1.064576 -1.099401
v -0.868540 -1.064576 -1.099401
v -0.868540 -0.857969 1.099401
v -0.868540 -0.857969 1.099401
v -0.868540 -1.064576 1.099401
v -0.868540 -1.064576 1.099401
v 0.843538 -1.064576 1.099401
v 0.843538 -1.064576 -1.099401
v 1.074547 -1.064576 -1.099401
v 1.074547 -1.064576 1.099401
v 0.843538 -0.857969 1.099401
v 0.843538 -0.857969 -1.099401
v 1.074547 -0.857969 -1.099401
v 1.074547 -0.857969 1.099401
v 0.843538 -0.857969 1.099401
v 0.843538 -0.857969 1.099401
v 0.843538 -0.857969 -1.099401
v 0.843538 -0.857969 -1.099401
v 0.843538 -1.064576 -1.099401
v 0.843538 -1.064576 -1.099401
v 0.843538 -1.064576 1.099401
v 0.843538 -1.064576 1.099401
v 1.074547 -0.857969 -1.099401
v 1.074547 -0.857969 -1.099401
v 1.074547 -1.064576 -1.099401
v 1.074547 -1.064576 -1.099401
v 1.074547 -0.857969 1.099401
v 1.074547 -0.857969 1.099401
v 1.074547 -1.064576 1.099401
v 1.074547 -1.064576 1.099401
v 0.821949 1.004986 -0.868209
v 0.821949 -0.993528 -0.868209
v 1.052958 -0.993528 -0.868209
v 1.052958 1.004986 -0.868209
v 0.821949 1.004986 -1.074816
v 0.821949 -0.993528 -1.074816
v 1.052958 -0.993528 -1.074816
v 1.052958 1.004986 -1.074816
v 0.821949 1.004986 -1.074816
v 0.821949 1.004986 -1.074816
v 0.821949 -0.993528 -1.074816
v 0.821949 -0.993528 -1.074816
v 0.821949 -0.993528 -0.868209
v 0.821949 -0.993528 -0.868209
v 0.821949 1.004986 -0.868209
v 0.821949 1.004986 -0.868209
v 1.052958 -0.993528 -1.074816
v 1.052958 -0.993528 -1.074816
v 1.052958 -0.993528 -0.868209
v 1.052958 -0.993528 -0.868209
v 1.052958 1.004986 -1.074816
v 1.052958 1.004986 -1.074816
v 1.052958 1.004986 -0.868209
v 1.052958 1.004986 -0.868209
v -1.103805 1.004986 -0.868209
v -1.103805 -0.993528 -0.868209
v -0.872797 -0.993528 -0.868209
v -0.872797 1.004986 -0.868209
v -1.103805 1.004986 -1.074816
v -1.103805 -0.993528 -1.074816
v -0.872797 -0.993528 -1.074816
v -0.872797 1.004986 -1.074816
v -1.103805 1.004986 -1.074816
v -1.103805 1.004986 -1.074816
v -1.103805 -0.993528 -1.074816
v -1.103805 -0.993528 -1.074816
v -1.103805 -0.993528 -0.868209
v -1.103805 -0.993528 -0.868209
v -1.103805 1.004986 -0.868209
v -1.103805 1.004986 -0.868209
v -0.872797 -0.993528 -1.074816
v -0.872797 -0.993528 -1.074816
v -0.872797 -0.993528 -0.868209
v -0.872797 -0.993528 -0.868209
v -0.872797 1.004986 -1.074816
v -0.872797 1.004986 -1.074816
v -0.872797 1.004986 -0.868209
v -0.872797 1.004986 -0.868209
v -1.103805 1.004986 1.059242
v -1.103805 -0.993528 1.059241
v -0.872797 -0.993528 1.059241
v -0.872797 1.004986 1.059242
v -1.103805 1.004986 0.852634
v -1.103805 -0.993528 0.852634
v -0.872797 -0.993528 0.852634
v -0.872797 1.004986 0.852634
v -1.103805 1.004986 0.852634
v -1.103805 1.004986 0.852634
v -1.103805 -0.993528 0.852634
v -1.103805 -0.993528 0.852634
v -1.103805 -0.993528 1.059241
v -1.103805 -0.993528 1.059241
v -1.103805 1.004986 1.059242
v -1.103805 1.004986 1.059242
v -0.872797 -0.993528 0.852634
v -0.872797 -0.993528 0.852634
v -0.872797 -0.993528 1.059241
v -0.872797 -0.993528 1.059241
v -0.872797 1.004986 0.852634
v -0.872797 1.004986 0.852634
v -0.872797 1.004986 1.059242
v -0.872797 1.004986 1.059242
v 0.856109 1.004986 1.059242
v 0.856109 -0.993528 1.059241
v 1.087117 -0.993528 1.059241
v 1.087117 1.004986 1.059242
v 0.856109 1.004986 0.852634
v 0.856109 -0.993528 0.852634
v 1.087117 -0.993528 0.852634
v 1.087117 1.004986 0.852634
v 0.856109 1.004986 0.852634
v 0.856109 1.004986 0.852634
v 0.856109 -0.993528 0.852634
v 0.856109 -0.993528 0.852634
v 0.856109 -0.993528 1.059241
v 0.856109 -0.993528 1.059241
v 0.856109 1.004986 1.059242
v 0.856109 1.004986 1.059242
v 1.087117 -0.993528 0.852634
v 1.087117 -0.993528 0.852634
v 1.087117 -0.993528 1.059241
v 1.087117 -0.993528 1.059241
v 1.087117 1.004986 0.852634
v 1.087117 1.004986 0.852634
v 1.087117 1.004986 1.059242
v 1.087117 1.004986 1.059242
v 0.956630 1.105496 1.059242
v -1.041884 1.105496 1.059242
v -1.041884 0.874487 1.059242
v 0.956630 0.874487 1.059242
v 0.956630 1.105496 0.852634
v -1.041884 1.105496 0.852634
v -1.041884 0.874487 0.852634
v 0.956630 0.874487 0.852634
v 0.956630 1.105496 0.852634
v 0.956630 1.105496 0.852634
v -1.041884 1.105496 0.852634
v -1.041884 1.105496 0.852634
v -1.041884 1.105496 1.059242
v -1.041884 1.105496 1.059242
v 0.956630 1.105496 1.059242
v 0.956630 1.105496 1.059242
v -1.041884 0.874487 0.852634
v -1.041884 0.874487 0.852634
v -1.041884 0.874487 1.059242
v -1.041884 0.874487 1.059242
v 0.956630 0.874487 0.852634
v 0.956630 0.874487 0.852634
v 0.956630 0.874487 1.059242
v 0.956630 0.874487 1.059242
v 0.956630 -0.813067 1.059242
v -1.041884 -0.813067 1.059242
v -1.041884 -1.044075 1.059242
v 0.956630 -1.044075 1.059242
v 0.956630 -0.813067 0.852634
v -1.041884 -0.813067 0.852634
v -1.041884 -1.044075 0.852634
v 0.956630 -1.044075 0.852634
v 0.956630 -0.813067 0.852634
v 0.956630 -0.813067 0.852634
v -1.041884 -0.813067 0.852634
v -1.041884 -0.813067 0.852634
v -1.041884 -0.813067 1.059242
v -1.041884 -0.813067 1.059242
v 0.956630 -0.813067 1.059242
v 0.956630 -0.813067 1.059242
v -1.041884 -1.044075 0.852634
v -1.041884 -1.044075 0.852634
v -1.041884 -1.044075 1.059242
v -1.041884 -1.044075 1.059242
v 0.956630 -1.044075 0.852634
v 0.956630 -1.044075 0.852634
v 0.956630 -1.044075 1.059242
v 0.956630 -1.044075 1.059242
v 0.956630 -0.813067 -0.838523
v -1.041884 -0.813067 -0.838523
v -1.041884 -1.044075 -0.838523
v 0.956630 -1.044075 -0.838523
v 0.956630 -0.813067 -1.045130
v -1.041884 -0.813067 -1.045130
v -1.041884 -1.044075 -1.045130
v 0.956630 -1.044075 -1.045130
v 0.956630 -0.813067 -1.045130
v 0.956630 -0.813067 -1.045130
v -1.041884 -0.813067 -1.045130
v -1.041884 -0.813067 -1.045130
v -1.041884 -0.813067 -0.838523
v -1.041884 -0.813067 -0.838523
v 0.956630 -0.813067 -0.838523
v 0.956630 -0.813067 -0.838523
v -1.041884 -1.044075 -1.045130
v -1.041884 -1.044075 -1.045130
v -1.041884 -1.044075 -0.838523
v -1.041884 -1.044075 -0.838523
v 0.956630 -1.044075 -1.045130
v 0.956630 -1.044075 -1.045130
v 0.956630 -1.044075 -0.838523
v 0.956630 -1.044075 -0.838523
v 0.956630 1.075166 -0.838523
v -1.041884 1.075166 -0.838523
v -1.041884 0.844157 -0.838523
v 0.956630 0.844157 -0.838523
v 0.956630 1.075166 -1.045130
v -1.041884 1.075166 -1.045130
v -1.041884 0.844157 -1.045130
v 0.956630 0.844157 -1.045130
v 0.956630 1.075166 -1.045130
v 0.956630 1.075166 -1.045130
v -1.041884 1.075166 -1.045130
v -1.041884 1.075166 -1.045130
v -1.041884 1.075166 -0.838523
v -1.041884 1.075166 -0.838523
v 0.956630 1.075166 -0.838523
v 0.956630 1.075166 -0.838523
v -1.041884 0.844157 -1.045130
v -1.041884 0.844157 -1.045130
v -1.041884 0.844157 -0.838523
v -1.041884 0.844157 -0.838523
v 0.956630 0.844157 -1.045130
v 0.956630 0.844157 -1.045130
v 0.956630 0.844157 -0.838523
v 0.956630 0.844157 -0.838523
vt 0.999900 0.999900
vt 0.000100 0.999900
vt 0.000100 0.000100
vt 0.999900 0.999899
vt 0.999900 0.000100
vt 0.000031 0.000031
vt 0.999969 0.000031
vt 0.000031 0.093989
vt 0.443098 0.396304
vt 0.556902 0.396304
vt 0.556902 0.498086
vt 0.999969 0.093989
vt 0.546766 0.489021
vt 0.453234 0.489021
vt 0.453234 0.405369
vt 0.000069 0.000032
vt 0.999967 0.000378
vt 0.999931 0.105428
vt 0.000032 0.000032
vt 0.999968 0.000033
vt 0.999968 0.105087
vt 0.443098 0.498086
vt 0.000032 0.105087
vt 0.999899 0.000100
vt 0.546766 0.405369
vt 0.000032 0.105083
vn 0.000000 -1.000000 0.000000
vn -0.000000 1.000000 0.000000
vn 1.000000 -0.000000 0.000001
vn -0.000000 -0.000000 1.000000
vn -1.000000 -0.000000 -0.000000
vn 0.000000 0.000000 -1.000000
vn 1.000000 -0.000000 0.000000
vn -1.000000 0.000001 0.000000
s off
f 1/1/1 2/2/1 3/3/1
f 15/4/2 23/2/2 21/3/2
f 9/5/3 5/4/3 6/2/3
f 12/5/4 20/1/4 17/3/4
f 18/2/5 22/3/5 13/1/5
f 16/5/6 10/1/6 14/2/6
f 29/6/5 30/7/5 25/8/5
f 35/9/6 31/10/6 27/11/6
f 41/12/7 32/8/7 28/6/7
f 45/13/4 33/14/4 39/15/4
f 40/16/1 38/17/1 44/18/1
f 46/19/2 42/20/2 36/21/2
f 53/6/5 54/7/5 49/8/5
f 59/9/6 55/10/6 51/11/6
f 65/12/7 56/8/7 52/6/7
f 69/13/4 57/14/4 63/15/4
f 64/16/1 62/17/1 68/18/1
f 70/19/2 66/20/2 60/21/2
f 77/6/5 78/7/5 73/8/5
f 83/9/6 79/10/6 75/11/6
f 89/12/7 80/8/7 76/6/7
f 93/13/4 81/14/4 87/15/4
f 88/16/1 86/17/1 92/18/1
f 94/19/2 90/20/2 84/21/2
f 101/6/5 102/7/5 97/8/5
f 107/9/6 103/10/6 99/11/6
f 113/12/7 104/8/7 100/6/7
f 117/13/4 105/14/4 111/15/4
f 112/16/1 110/17/1 116/18/1
f 118/19/2 114/20/2 108/21/2
f 125/6/5 126/7/5 121/8/5
f 131/9/1 127/10/1 123/11/1
f 137/12/7 128/8/7 124/6/7
f 141/13/2 129/14/2 135/15/2
f 136/16/4 134/17/4 140/18/4
f 142/19/6 138/20/6 132/21/6
f 149/6/5 150/7/5 145/8/5
f 155/9/1 151/10/1 147/11/1
f 161/12/7 152/8/7 148/6/7
f 165/13/2 153/14/2 159/15/2
f 160/16/4 158/17/4 164/18/4
f 166/19/6 162/20/6 156/21/6
f 173/6/5 174/7/5 169/8/5
f 179/9/1 175/10/1 171/11/1
f 185/12/7 176/8/7 172/6/7
f 189/13/2 177/14/2 183/15/2
f 184/16/4 182/17/4 188/18/4
f 190/19/6 186/20/6 180/21/6
f 197/6/5 198/7/5 193/8/5
f 203/9/1 199/10/1 195/11/1
f 209/12/7 200/8/7 196/6/7
f 213/13/2 201/14/2 207/15/2
f 208/16/4 206/17/4 212/18/4
f 214/19/6 210/20/6 204/21/6
f 221/6/2 222/7/2 217/8/2
f 227/9/8 223/10/8 229/22/8
f 233/12/1 224/8/1 220/6/1
f 237/13/7 225/14/7 231/15/7
f 232/16/4 230/17/4 236/18/4
f 238/19/6 234/20/6 226/23/6
f 245/6/2 246/7/2 241/8/2
f 251/9/8 247/10/8 253/22/8
f 257/12/1 248/8/1 244/6/1
f 261/13/7 249/14/7 255/15/7
f 256/16/4 254/17/4 260/18/4
f 262/19/6 258/20/6 250/23/6
f 269/6/2 270/7/2 265/8/2
f 275/9/8 271/10/8 277/22/8
f 281/12/1 272/8/1 268/6/1
f 285/13/7 273/14/7 279/15/7
f 280/16/4 278/17/4 284/18/4
f 286/19/6 282/20/6 276/21/6
f 293/6/2 294/7/2 289/8/2
f 299/9/8 295/10/8 301/22/8
f 305/12/1 296/8/1 292/6/1
f 309/13/7 297/14/7 303/15/7
f 304/16/4 302/17/4 308/18/4
f 310/19/6 306/20/6 300/21/6
f 4/5/1 1/1/1 3/3/1
f 19/24/2 15/4/2 21/3/2
f 11/3/7 9/5/7 6/2/7
f 20/1/4 7/2/4 17/3/4
f 22/3/5 8/5/5 13/1/5
f 24/3/6 16/5/6 14/2/6
f 30/7/5 26/12/5 25/8/5
f 37/22/6 35/9/6 27/11/6
f 43/7/7 41/12/7 28/6/7
f 47/25/4 45/13/4 39/15/4
f 48/26/1 40/16/1 44/18/1
f 34/23/2 46/19/2 36/21/2
f 54/7/5 50/12/5 49/8/5
f 61/22/6 59/9/6 51/11/6
f 67/7/7 65/12/7 52/6/7
f 71/25/4 69/13/4 63/15/4
f 72/26/1 64/16/1 68/18/1
f 58/23/2 70/19/2 60/21/2
f 78/7/5 74/12/5 73/8/5
f 85/22/6 83/9/6 75/11/6
f 91/7/7 89/12/7 76/6/7
f 95/25/4 93/13/4 87/15/4
f 96/26/1 88/16/1 92/18/1
f 82/23/2 94/19/2 84/21/2
f 102/7/5 98/12/5 97/8/5
f 109/22/6 107/9/6 99/11/6
f 115/7/7 113/12/7 100/6/7
f 119/25/4 117/13/4 111/15/4
f 120/26/1 112/16/1 116/18/1
f 106/23/2 118/19/2 108/21/2
f 126/7/5 122/12/5 121/8/5
f 133/22/1 131/9/1 123/11/1
f 139/7/7 137/12/7 124/6/7
f 143/25/2 141/13/2 135/15/2
f 144/26/4 136/16/4 140/18/4
f 130/23/6 142/19/6 132/21/6
f 150/7/5 146/12/5 145/8/5
f 157/22/1 155/9/1 147/11/1
f 163/7/7 161/12/7 148/6/7
f 167/25/2 165/13/2 159/15/2
f 168/26/4 160/16/4 164/18/4
f 154/23/6 166/19/6 156/21/6
f 174/7/5 170/12/5 169/8/5
f 181/22/1 179/9/1 171/11/1
f 187/7/7 185/12/7 172/6/7
f 191/25/2 189/13/2 183/15/2
f 192/26/4 184/16/4 188/18/4
f 178/23/6 190/19/6 180/21/6
f 198/7/5 194/12/5 193/8/5
f 205/22/1 203/9/1 195/11/1
f 211/7/7 209/12/7 196/6/7
f 215/25/2 213/13/2 207/15/2
f 216/26/4 208/16/4 212/18/4
f 202/23/6 214/19/6 204/21/6
f 222/7/2 218/12/2 217/8/2
f 223/10/8 219/11/8 229/22/8
f 235/7/1 233/12/1 220/6/1
f 239/25/7 237/13/7 231/15/7
f 240/26/4 232/16/4 236/18/4
f 234/20/6 228/21/6 226/23/6
f 246/7/2 242/12/2 241/8/2
f 247/10/8 243/11/8 253/22/8
f 259/7/1 257/12/1 244/6/1
f 263/25/7 261/13/7 255/15/7
f 264/26/4 256/16/4 260/18/4
f 258/20/6 252/21/6 250/23/6
f 270/7/2 266/12/2 265/8/2
f 271/10/8 267/11/8 277/22/8
f 283/7/1 281/12/1 268/6/1
f 287/25/7 285/13/7 279/15/7
f 288/26/4 280/16/4 284/18/4
f 274/23/6 286/19/6 276/21/6
f 294/7/2 290/12/2 289/8/2
f 295/10/8 291/11/8 301/22/8
f 307/7/1 305/12/1 292/6/1
f 311/25/7 309/13/7 303/15/7
f 312/26/4 304/16/4 308/18/4
f 298/23/6 310/19/6 300/21/6

BIN
res/box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

BIN
res/heightmap.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
res/person.blend Normal file

Binary file not shown.

1097
res/person.obj Normal file

File diff suppressed because it is too large Load Diff

BIN
res/playerTexture.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

View File

@ -79,8 +79,8 @@ public class MainGameLoop {
TerrainTexture blendMap = new TerrainTexture(loader.loadTexture("blendMap"));
Terrain terrain = new Terrain(0,-1,loader, texturePack, blendMap);
Terrain terrain2 = new Terrain(-1,-1,loader, texturePack, blendMap);
Terrain terrain = new Terrain(0,-1,loader, texturePack, blendMap, "heightmap");
Terrain terrain2 = new Terrain(-1,-1,loader, texturePack, blendMap, "heightmap");
List<Entity> entities = new ArrayList<Entity>();
@ -101,10 +101,10 @@ public class MainGameLoop {
new Vector3f(0,0,0),1.5f));
}
TexturedModel stanfordBunnyModel = new TexturedModel(OBJLoader.loadObjModel("bunny", loader),
new ModelTexture(loader.loadTexture("white")));
TexturedModel playerModel = new TexturedModel(OBJLoader.loadObjModel("person", loader),
new ModelTexture(loader.loadTexture("playerTexture")));
Player player = new Player(stanfordBunnyModel, new Vector3f(0,0,-50), new Vector3f(0,0,0), 1);
Player player = new Player(playerModel, new Vector3f(0,0,-50), new Vector3f(0,3.14f,0), 0.4f);
Camera camera = new Camera(player);

View File

@ -6,7 +6,7 @@ import renderEngine.DisplayManager;
public class Camera {
private float distanceFromPlayer = 50;
private float distanceFromPlayer = 20;
private float angleAroundPlayer = 0;
private Vector3f position = new Vector3f(0,5,0);

View File

@ -17,7 +17,7 @@ uniform mat4 viewMatrix;
uniform vec3 lightPosition;
const float density = 0.007;
const float gradient = 1.5;
const float gradient = 2.5;
void main(void) {
vec4 worldPosition = transformationMatrix * vec4(position, 1.0);

View File

@ -1,12 +1,21 @@
package terrains;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import org.atriaSoft.etk.math.Vector3f;
import models.RawModel;
import renderEngine.Loader;
import textures.ModelTexture;
public class Terrain {
private static final float SIZE = 800;
private static final int VERTEX_COUNT = 128;
private static final int MAX_HEIGHT = 40;
private static final int MAX_PIXEL_COLOUR = 256*256*256;
private float x;
private float z;
@ -14,15 +23,26 @@ public class Terrain {
private TerrainTexturePack texturePack;
private TerrainTexture blendMap;
public Terrain(int girdX, int girdZ, Loader loader, TerrainTexturePack texturePack, TerrainTexture blendMap) {
public Terrain(int girdX, int girdZ, Loader loader,
TerrainTexturePack texturePack, TerrainTexture blendMap,
String heightMap) {
this.texturePack = texturePack;
this.blendMap = blendMap;
this.x = girdX * SIZE;
this.z = girdZ * SIZE;
this.model = generateTerrain(loader);
this.model = generateTerrain(loader, heightMap);
}
private RawModel generateTerrain(Loader loader){
private RawModel generateTerrain(Loader loader, String heightMap) {
BufferedImage image = null;
try {
image = ImageIO.read(new File("res/" + heightMap + ".png"));
} catch (IOException e) {
e.printStackTrace();
}
int VERTEX_COUNT = image.getHeight();
int count = VERTEX_COUNT * VERTEX_COUNT;
float[] vertices = new float[count * 3];
float[] normals = new float[count * 3];
@ -32,11 +52,12 @@ public class Terrain {
for(int i=0;i<VERTEX_COUNT;i++){
for(int j=0;j<VERTEX_COUNT;j++){
vertices[vertexPointer*3] = (float)j/((float)VERTEX_COUNT - 1) * SIZE;
vertices[vertexPointer*3+1] = 0;
vertices[vertexPointer*3+1] = getHeight(j,i, image);
vertices[vertexPointer*3+2] = (float)i/((float)VERTEX_COUNT - 1) * SIZE;
normals[vertexPointer*3] = 0;
normals[vertexPointer*3+1] = 1;
normals[vertexPointer*3+2] = 0;
Vector3f normal = calculateNormal(j,i, image);
normals[vertexPointer*3] = normal.x;
normals[vertexPointer*3+1] = normal.y;
normals[vertexPointer*3+2] = normal.z;
textureCoords[vertexPointer*2] = (float)j/((float)VERTEX_COUNT - 1);
textureCoords[vertexPointer*2+1] = (float)i/((float)VERTEX_COUNT - 1);
vertexPointer++;
@ -59,6 +80,27 @@ public class Terrain {
}
return loader.loadToVAO(vertices, textureCoords, normals, indices);
}
private Vector3f calculateNormal(int x, int z, BufferedImage image) {
float heightL = getHeight(x-1, z, image);
float heightR = getHeight(x+1, z, image);
float heightD = getHeight(x, z-1, image);
float heightU = getHeight(x, z+1, image);
Vector3f normal = new Vector3f(heightL-heightR, 2f, heightD-heightU);
normal.normalize();
return normal;
}
private float getHeight(int x, int z, BufferedImage image) {
if (x<0 || x>=image.getWidth() || z<0 || z>=image.getHeight() ) {
return 0;
}
float height = image.getRGB(x, z);
height += MAX_PIXEL_COLOUR/2.0f;
height /= MAX_PIXEL_COLOUR/2.0f;
height *= MAX_HEIGHT;
return height;
}
public float getX() {
return x;