- Procedure BuildNormals(Var Surface : TSurface);
- var
- t,v,c : integer;
- begin
- for t := 0 to Surface.Header.NumOfTrianges-1 do
- Surface.Trianges[t].Normal := Normalize2(CrossProduct(SubtractVector(GetVertWithoutOrigin(Surface,Surface.Trianges[t].V2),GetVertWithoutOrigin(Surface,Surface.Trianges[t].V1)),SubtractVector(GetVertWithoutOrigin(Surface,Surface.Trianges[t].V3),GetVertWithoutOrigin(Surface,Surface.Trianges[t].V2))));
- for v := 0 to Surface.Header.NumOfVerts-1 do
- begin
- Surface.Vertexs[v].Normal := SetVector(0,0,0);
- for t := 0 to Surface.Header.NumOfTrianges-1 do
- If (Surface.Trianges[t].V1 = v) or (Surface.Trianges[t].V2 = v) or (Surface.Trianges[t].V3 = v) then
- Surface.Vertexs[v].Normal := AddVector(Surface.Vertexs[v].Normal,Surface.Trianges[t].Normal);
- Surface.Vertexs[v].Normal := Normalize2(Surface.Vertexs[v].Normal);
- end;
- end;