Hi,
My program loads a dxf file and save each FACE3D in an aray in the following order x,y,z,x,y,z,x… These render perfectly but I’m wonder how do I generate normals or texture objects drawn in this fashion.
Thanks
I don’t know about texture objects, but calculating a normal from a triangle can be done using the cross product. This is the code that I use:
// Calculate two vectors for the x-product,
// where tri_verts is an array holding your
// triangle vertices:
v1 = tri_verts[ 0 ] - tri_verts[ 1 ];
v2 = tri_verts[ 2 ] - tri_verts[ 1 ];
// Use the cross product of the two vectors
// to compute the face normal:
normal.x = v1.y * v2.z - v1.z * v2.y;
normal.y = v1.z * v2.x - v1.x * v2.z;
normal.z = v1.x * v2.y - v1.y * v2.x;
// OpenGL expects normals to be normalized:
normal.Normalize();
This is a normal for a single face and is only useful if you are using flat shading. If you want smooth objects you’ll have to average the normals at each vertex.
Hope this helps.