From: <jww...@us...> - 2014-05-22 18:39:58
|
Revision: 3325 http://sourceforge.net/p/quesa/code/3325 Author: jwwalker Date: 2014-05-22 18:39:56 +0000 (Thu, 22 May 2014) Log Message: ----------- Utility sources: When transforming a TriMesh, re-normalize the normals. Modified Paths: -------------- trunk/quesa/SDK/Extras/Utility Sources/Mutating Algorithms/TransformGeometry.cpp Modified: trunk/quesa/SDK/Extras/Utility Sources/Mutating Algorithms/TransformGeometry.cpp =================================================================== --- trunk/quesa/SDK/Extras/Utility Sources/Mutating Algorithms/TransformGeometry.cpp 2014-05-22 18:33:56 UTC (rev 3324) +++ trunk/quesa/SDK/Extras/Utility Sources/Mutating Algorithms/TransformGeometry.cpp 2014-05-22 18:39:56 UTC (rev 3325) @@ -8,7 +8,7 @@ Initial version written by James W. Walker. COPYRIGHT: - Copyright (c) 2008, Quesa Developers. All rights reserved. + Copyright (c) 2008-2014, Quesa Developers. All rights reserved. For the current release of Quesa, please see: @@ -182,6 +182,7 @@ &theNormal )) { Q3Vector3D_Transform( &theNormal, &inMatrix, &theNormal ); + Q3FastVector3D_Normalize( &theNormal, &theNormal ); Q3AttributeSet_Add( ioAtts, kQ3AttributeTypeNormal, &theNormal ); } } @@ -286,6 +287,14 @@ return theNormals; } +static void NormalizeNormals( TQ3Vector3D* ioNormals, TQ3Uns32 inCount ) +{ + for (TQ3Uns32 i = 0; i < inCount; ++i) + { + Q3FastVector3D_Normalize( &ioNormals[i], &ioNormals[i] ); + } +} + static void TransformTriMesh( const TQ3Matrix4x4* inMatrix, TQ3GeometryObject ioGeom ) { @@ -309,6 +318,7 @@ { Q3Vector3D_To3DTransformArray( normals, &normalTrans, normals, tmData->numPoints, sizeof(TQ3Vector3D), sizeof(TQ3Vector3D) ); + NormalizeNormals( normals, tmData->numPoints ); } // face normal vectors @@ -318,6 +328,7 @@ { Q3Vector3D_To3DTransformArray( normals, &normalTrans, normals, tmData->numTriangles, sizeof(TQ3Vector3D), sizeof(TQ3Vector3D) ); + NormalizeNormals( normals, tmData->numTriangles ); } // Recompute the bounding box This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |