1
0
Fork 0
mirror of https://git.coom.tech/drummyfish/small3dlib.git synced 2024-11-23 20:59:58 +01:00
This commit is contained in:
Miloslav Číž 2019-06-17 21:51:23 +02:00
parent 49f963e47c
commit 42b558f486
10 changed files with 2435 additions and 59 deletions

View file

@ -394,13 +394,16 @@ const S3L_Index cat1UVIndices[CAT1_UV_INDEX_COUNT * 3] = {
84, 89, 49 // 339
}; // cat1UVIndices
S3L_Model3D cat1Model =
S3L_Model3D cat1Model;
void cat1ModelInit()
{
.vertices = cat1Vertices,
.vertexCount = CAT1_VERTEX_COUNT,
.triangles = cat1TriangleIndices,
.triangleCount = CAT1_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
cat1Vertices,
CAT1_VERTEX_COUNT,
cat1TriangleIndices,
CAT1_TRIANGLE_COUNT,
&cat1Model);
}
#endif // guard

View file

@ -394,13 +394,16 @@ const S3L_Index cat2UVIndices[CAT2_UV_INDEX_COUNT * 3] = {
83, 89, 48 // 339
}; // cat2UVIndices
S3L_Model3D cat2Model =
S3L_Model3D cat2Model;
void cat2ModelInit()
{
.vertices = cat2Vertices,
.vertexCount = CAT2_VERTEX_COUNT,
.triangles = cat2TriangleIndices,
.triangleCount = CAT2_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
cat2Vertices,
CAT2_VERTEX_COUNT,
cat2TriangleIndices,
CAT2_TRIANGLE_COUNT,
&cat2Model);
}
#endif // guard

View file

@ -753,13 +753,16 @@ const S3L_Index chestUVIndices[CHEST_UV_INDEX_COUNT * 3] = {
47, 7, 32 // 693
}; // chestUVIndices
S3L_Model3D chestModel =
S3L_Model3D chestModel;
void chestModelInit()
{
.vertices = chestVertices,
.vertexCount = CHEST_VERTEX_COUNT,
.triangles = chestTriangleIndices,
.triangleCount = CHEST_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
chestVertices,
CHEST_VERTEX_COUNT,
chestTriangleIndices,
CHEST_TRIANGLE_COUNT,
&chestModel);
}
#endif // guard

View file

@ -945,13 +945,16 @@ const S3L_Index cityUVIndices[CITY_UV_INDEX_COUNT * 3] = {
372, 376, 373 // 588
}; // cityUVIndices
S3L_Model3D cityModel =
S3L_Model3D cityModel;
void cityModelInit()
{
.vertices = cityVertices,
.vertexCount = CITY_VERTEX_COUNT,
.triangles = cityTriangleIndices,
.triangleCount = CITY_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
cityVertices,
CITY_VERTEX_COUNT,
cityTriangleIndices,
CITY_TRIANGLE_COUNT,
&cityModel);
}
#endif // guard

View file

@ -717,13 +717,16 @@ const S3L_Index houseUVIndices[HOUSE_UV_INDEX_COUNT * 3] = {
159, 162, 160 // 597
}; // houseUVIndices
S3L_Model3D houseModel =
S3L_Model3D houseModel;
void houseModelInit()
{
.vertices = houseVertices,
.vertexCount = HOUSE_VERTEX_COUNT,
.triangles = houseTriangleIndices,
.triangleCount = HOUSE_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
houseVertices,
HOUSE_VERTEX_COUNT,
houseTriangleIndices,
HOUSE_TRIANGLE_COUNT,
&houseModel);
}
#endif // guard

View file

@ -18,6 +18,8 @@
#include "grassNormalTexture.h"
#include "sandTexture.h"
#include "sandNormalTexture.h"
#include "treeModel.h"
#include "treeTexture.h"
uint8_t frameBuffer[S3L_RESOLUTION_X * S3L_RESOLUTION_Y * 3];
@ -53,8 +55,9 @@ float interpolate(float a, float b, float t)
return a * (1.0 - t) + b * t;
}
#define ISLAND_MODEL_INDEX 0
#define WATER_MODEL_INDEX 1 // must be last, for transparency
// 0, 1, 2 left for trees
#define ISLAND_MODEL_INDEX 3
#define WATER_MODEL_INDEX 4 // must be last, for transparency
#define MODELS_TOTAL (WATER_MODEL_INDEX + 1)
#define GRID_TRIANGLES ((GRID_W - 1) * (GRID_H - 1) * 2)
@ -67,6 +70,8 @@ S3L_Unit waterNormals[GRID_W * GRID_H * 3];
S3L_Index gridTriangles[GRID_TRIANGLES * 3];
S3L_Unit treeNormals[TREE_VERTEX_COUNT * 3];
S3L_Model3D models[MODELS_TOTAL];
S3L_Scene scene;
@ -380,6 +385,16 @@ int main()
S3L_normalizeVec3(&toLightDirection);
treeModelInit();
models[0] = treeModel;
models[1] = treeModel;
models[2] = treeModel;
S3L_setTransform3D(0,S3L_FRACTIONS_PER_UNIT * 2,0,0,0,0,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,&(models[0].transform));
S3L_setTransform3D(S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT * 2,0,0,0,0,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,&(models[1].transform));
S3L_setTransform3D(-S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT * 2,0,0,0,0,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,S3L_FRACTIONS_PER_UNIT,&(models[2].transform));
S3L_initModel3D(
terrainVertices,
GRID_W * GRID_H,
@ -388,6 +403,7 @@ int main()
&(models[ISLAND_MODEL_INDEX]));
S3L_computeModelNormals(models[0],terrainNormals,0);
S3L_computeModelNormals(treeModel,treeNormals,0);
S3L_initModel3D(
waterVertices,
@ -400,7 +416,7 @@ int main()
char fileName[] = "test00.ppm";
for (int i = 0; i < 50; ++i)
for (int i = 0; i < 5; ++i) // render the frames
{
animateWater();

View file

@ -41,13 +41,16 @@ const S3L_Index plantUVIndices[PLANT_UV_INDEX_COUNT * 3] = {
3, 7, 4 // 9
}; // plantUVIndices
S3L_Model3D plantModel =
S3L_Model3D plantModel;
void plantModelInit()
{
.vertices = plantVertices,
.vertexCount = PLANT_VERTEX_COUNT,
.triangles = plantTriangleIndices,
.triangleCount = PLANT_TRIANGLE_COUNT,
.customTransformMatrix = 0
};
S3L_initModel3D(
plantVertices,
PLANT_VERTEX_COUNT,
plantTriangleIndices,
PLANT_TRIANGLE_COUNT,
&plantModel);
}
#endif // guard

200
programs/treeModel.h Normal file
View file

@ -0,0 +1,200 @@
#ifndef TREE_MODEL_H
#define TREE_MODEL_H
#define TREE_VERTEX_COUNT 29
const S3L_Unit treeVertices[TREE_VERTEX_COUNT * 3] = {
-405, 333, 436, // 0
-279, 391, -162, // 3
-210, 1196, -77, // 6
-182, 1351, 276, // 9
300, -235, 884, // 12
175, 458, 466, // 15
323, 456, -89, // 18
799, -149, -292, // 21
-377, -35, -757, // 24
-796, -197, 418, // 27
112, 1210, -203, // 30
329, 1710, -420, // 33
-444, 1833, -237, // 36
224, 1289, 169, // 39
-129, 2307, -1354, // 42
388, 1640, 328, // 45
-176, 1684, 369, // 48
1428, 1950, -138, // 51
-1254, 2185, 279, // 54
237, 1961, 1274, // 57
843, 2065, -1083, // 60
366, 3590, 1466, // 63
1533, 3256, -257, // 66
1256, 2031, 799, // 69
-745, 2083, 1179, // 72
-1320, 3489, 438, // 75
-1176, 2393, -744, // 78
-119, 3625, -1383, // 81
242, 4350, 183 // 84
}; // treeVertices
#define TREE_TRIANGLE_COUNT 52
const S3L_Index treeTriangleIndices[TREE_TRIANGLE_COUNT * 3] = {
0, 2, 3, // 0
5, 7, 4, // 3
6, 8, 7, // 6
1, 9, 8, // 9
4, 0, 5, // 12
10, 12, 2, // 15
5, 3, 13, // 18
1, 10, 2, // 21
6, 13, 10, // 24
12, 11, 14, // 27
13, 11, 10, // 30
3, 12, 16, // 33
13, 16, 15, // 36
11, 15, 17, // 39
16, 12, 18, // 42
16, 19, 15, // 45
17, 20, 11, // 48
21, 22, 23, // 51
19, 23, 15, // 54
21, 24, 25, // 57
16, 18, 24, // 60
25, 26, 27, // 63
12, 14, 26, // 66
22, 27, 20, // 69
27, 22, 28, // 72
22, 21, 28, // 75
25, 28, 21, // 78
27, 28, 25, // 81
20, 14, 11, // 84
27, 14, 20, // 87
26, 14, 27, // 90
23, 17, 15, // 93
22, 17, 23, // 96
20, 17, 22, // 99
16, 24, 19, // 102
21, 19, 24, // 105
23, 19, 21, // 108
12, 26, 18, // 111
25, 18, 26, // 114
24, 18, 25, // 117
0, 1, 2, // 120
5, 6, 7, // 123
6, 1, 8, // 126
1, 0, 9, // 129
4, 9, 0, // 132
10, 11, 12, // 135
5, 0, 3, // 138
1, 6, 10, // 141
6, 5, 13, // 144
13, 15, 11, // 147
3, 2, 12, // 150
13, 3, 16 // 153
}; // treeTriangleIndices
#define TREE_UV_COUNT 35
const S3L_Unit treeUVs[TREE_UV_COUNT * 2] = {
133, 397, // 0
228, 338, // 2
125, 335, // 4
489, 390, // 6
355, 489, // 8
493, 487, // 10
353, 401, // 12
234, 487, // 14
230, 399, // 16
132, 486, // 18
26, 491, // 20
26, 389, // 22
352, 333, // 24
221, 283, // 26
23, 327, // 28
488, 321, // 30
346, 287, // 32
260, 212, // 34
109, 271, // 36
22, 261, // 38
490, 270, // 40
385, 211, // 42
151, 206, // 44
17, 170, // 46
312, 209, // 48
491, 23, // 50
359, 85, // 52
430, 158, // 54
493, 193, // 56
23, 25, // 58
93, 172, // 60
141, 91, // 62
201, 199, // 64
256, 88, // 66
256, 17 // 68
}; // treeUVs
#define TREE_UV_INDEX_COUNT 52
const S3L_Index treeUVIndices[TREE_UV_INDEX_COUNT * 3] = {
0, 1, 2, // 0
3, 4, 5, // 3
6, 7, 4, // 6
8, 9, 7, // 9
10, 0, 11, // 12
12, 13, 1, // 15
11, 2, 14, // 18
8, 12, 1, // 21
6, 15, 12, // 24
13, 16, 17, // 27
15, 16, 12, // 30
2, 13, 18, // 33
14, 18, 19, // 36
16, 20, 21, // 39
18, 13, 22, // 42
18, 23, 19, // 45
21, 24, 16, // 48
25, 26, 27, // 51
28, 27, 20, // 54
29, 30, 31, // 57
18, 22, 30, // 60
31, 32, 33, // 63
13, 17, 32, // 66
26, 33, 24, // 69
33, 26, 34, // 72
26, 25, 34, // 75
31, 34, 29, // 78
33, 34, 31, // 81
24, 17, 16, // 84
33, 17, 24, // 87
32, 17, 33, // 90
27, 21, 20, // 93
26, 21, 27, // 96
24, 21, 26, // 99
18, 30, 23, // 102
29, 23, 30, // 105
27, 28, 25, // 108
13, 32, 22, // 111
31, 22, 32, // 114
30, 22, 31, // 117
0, 8, 1, // 120
3, 6, 4, // 123
6, 8, 7, // 126
8, 0, 9, // 129
10, 9, 0, // 132
12, 16, 13, // 135
11, 0, 2, // 138
8, 6, 12, // 141
6, 3, 15, // 144
15, 20, 16, // 147
2, 1, 13, // 150
14, 2, 18 // 153
}; // treeUVIndices
S3L_Model3D treeModel;
void treeModelInit()
{
S3L_initModel3D(
treeVertices,
TREE_VERTEX_COUNT,
treeTriangleIndices,
TREE_TRIANGLE_COUNT,
&treeModel);
}
#endif // guard

2146
programs/treeTexture.h Normal file

File diff suppressed because it is too large Load diff

View file

@ -179,21 +179,17 @@ else:
print("#define " + NAME.upper() + "_DIRECT_UV_COUNT " + str(len(uvs2)))
print(arrayString(NAME + "DirectUVs",uvs2,6,[U_SCALE,V_SCALE],5,False,"S3L_Unit",NAME.upper() + "_DIRECT_UV_COUNT * 6"))
print("S3L_Model3D " + NAME + "Model = ")
print("S3L_Model3D " + NAME + "Model;\n")
if COMPACT:
print("{.vertices=" +
NAME + "Vertices,.vertexCount=" + str(len(vertices)) +
",.triangles=" + NAME.upper() + "TriangleIndices,\n.triangleCount=" +
str(len(triangles)) + ",.customTransformMatrix=0};");
else:
print("{")
print(" .vertices = " + NAME + "Vertices,")
print(" .vertexCount = " + NAME.upper() + "_VERTEX_COUNT,")
print(" .triangles = " + NAME + "TriangleIndices,")
print(" .triangleCount = " + NAME.upper() + "_TRIANGLE_COUNT,")
print(" .customTransformMatrix = 0")
print("};")
print("void " + NAME + "ModelInit()")
print("{")
print(" S3L_initModel3D(")
print(" " + NAME + "Vertices,")
print(" " + NAME.upper() + "_VERTEX_COUNT,")
print(" " + NAME + "TriangleIndices,")
print(" " + NAME.upper() + "_TRIANGLE_COUNT,")
print(" &" + NAME + "Model);")
print("}")
if GUARDS:
print("\n#endif // guard")