Hi,
I am creating a program to draw 3D terrain. I draw individual contours at different heights and use a list of GL_TRIANGLES to join the contours and make the 3D terrain. I am having difficulty calculating the normals for the triangle list however and am getting some very weird effects.
Currently the was I calculate the normals is to take two lines of the triangle
^ /
| /
| /
|______>
and calc the normal as follows
Vector3 crossProduct(Vector3 v1, Vector3 v2, Vector3 v3)
{
Vector3 e1, e2;
e1 = Vector3(v2.x - v1.x,
v2.y - v1.y,
v2.z - v1.z);
e2 = Vector3(v3.x - v1.x,
v3.y - v1.y,
v3.z - v1.z);
return Vector3(e1.y * e2.z
- e1.z * e2.y,
-e1.x * e2.z
- e1.z * e2.x,
e1.x * e2.y
- e1.y * e2.x);
}
I’m calculating one normal per triangle. Does this calculation look correct ?
Any help that you can give will be much appreciated !