Im wondering where im goign wrong with the following:
Code: 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;
Below is a pic of 2 models showing the errors.
Both originaly 3ds's with no errors.
Dateianhänge: |
badnormals.JPG [ 15.7 KiB | 3366-mal betrachtet ]
|
|