paul_g_griffiths

01-22-2017, 04:30 AM

Heres the code:

glm::f32 x = size.x / 2.0f;

glm::f32 y = size.y / 2.0f;

glm::f32 z = size.z / 2.0f;

glm::vec3 a0 = glm::vec3(+x, +y, +z);

glm::vec3 a1 = glm::vec3(-x, +y, +z);

glm::vec3 a2 = glm::vec3(-x, -y, +z);

glm::vec3 a3 = glm::vec3(+x, -y, +z);

glm::vec3 a4 = glm::vec3(+x, +y, -z);

glm::vec3 a5 = glm::vec3(-x, +y, -z);

glm::vec3 a6 = glm::vec3(-x, -y, -z);

glm::vec3 a7 = glm::vec3(+x, -y, -z);

glm::vec3 verts[] = {

a1, a2, a3, a3, a0, a1,

a2, a6, a7, a7, a3, a2,

a6, a5, a4, a4, a7, a6,

a5, a1, a0, a0, a4, a5,

a0, a3, a7, a7, a4, a0,

a5, a6, a2, a2, a1, a5

};

glm::vec3 norm[36];

for (int i = 0; i < 36; i += 3)

{

glm::vec3 normal = glm::normalize(

glm::cross(

glm::vec3(verts[i + 1]) - glm::vec3(verts[i]),

glm::vec3(verts[i + 2]) - glm::vec3(verts[i])));

norm[i] = normal;

norm[i + 1] = normal;

norm[i + 2] = normal;

}

glm::f32 x = size.x / 2.0f;

glm::f32 y = size.y / 2.0f;

glm::f32 z = size.z / 2.0f;

glm::vec3 a0 = glm::vec3(+x, +y, +z);

glm::vec3 a1 = glm::vec3(-x, +y, +z);

glm::vec3 a2 = glm::vec3(-x, -y, +z);

glm::vec3 a3 = glm::vec3(+x, -y, +z);

glm::vec3 a4 = glm::vec3(+x, +y, -z);

glm::vec3 a5 = glm::vec3(-x, +y, -z);

glm::vec3 a6 = glm::vec3(-x, -y, -z);

glm::vec3 a7 = glm::vec3(+x, -y, -z);

glm::vec3 verts[] = {

a1, a2, a3, a3, a0, a1,

a2, a6, a7, a7, a3, a2,

a6, a5, a4, a4, a7, a6,

a5, a1, a0, a0, a4, a5,

a0, a3, a7, a7, a4, a0,

a5, a6, a2, a2, a1, a5

};

glm::vec3 norm[36];

for (int i = 0; i < 36; i += 3)

{

glm::vec3 normal = glm::normalize(

glm::cross(

glm::vec3(verts[i + 1]) - glm::vec3(verts[i]),

glm::vec3(verts[i + 2]) - glm::vec3(verts[i])));

norm[i] = normal;

norm[i + 1] = normal;

norm[i + 2] = normal;

}