 Timestamp:
 03/21/12 18:36:20 (2 years ago)
 Files:

 1 modified
Legend:
 Unmodified
 Added
 Removed

OpenSceneGraph/trunk/src/osgUtil/TangentSpaceGenerator.cpp
r12509 r13041 96 96 for (i=0; i<N2; ++i) { 97 97 if ((i%2) == 0) { 98 compute(pset, vx, nx, tx, i, i+1, i+2); 98 compute(pset, vx, nx, tx, i, i+1, i+2); 99 99 } else { 100 100 compute(pset, vx, nx, tx, i+1, i, i+2); … … 145 145 osg::Vec4 &vB = (*B_)[i]; 146 146 osg::Vec4 &vN = (*N_)[i]; 147 147 148 148 osg::Vec3 txN = osg::Vec3(vT.x(), vT.y(), vT.z()) ^ osg::Vec3(vB.x(), vB.y(), vB.z()); 149 149 150 150 if (txN * osg::Vec3(vN.x(), vN.y(), vN.z()) >= 0) { 151 151 vN = osg::Vec4(txN, 0); … … 276 276 osg::Vec3 V, T1, T2, T3, B1, B2, B3; 277 277 278 V = osg::Vec3(P2.x()  P1.x(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 278 V = osg::Vec3(P2.x()  P1.x(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 279 279 osg::Vec3(P3.x()  P1.x(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 280 280 if (V.x() != 0) { … … 285 285 B2.x() += V.z() / V.x(); 286 286 T3.x() += V.y() / V.x(); 287 B3.x() += V.z() / V.x(); 288 } 289 290 V = osg::Vec3(P2.y()  P1.y(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 287 B3.x() += V.z() / V.x(); 288 } 289 290 V = osg::Vec3(P2.y()  P1.y(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 291 291 osg::Vec3(P3.y()  P1.y(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 292 292 if (V.x() != 0) { … … 297 297 B2.y() += V.z() / V.x(); 298 298 T3.y() += V.y() / V.x(); 299 B3.y() += V.z() / V.x(); 300 } 301 302 V = osg::Vec3(P2.z()  P1.z(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 299 B3.y() += V.z() / V.x(); 300 } 301 302 V = osg::Vec3(P2.z()  P1.z(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 303 303 osg::Vec3(P3.z()  P1.z(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 304 304 if (V.x() != 0) { … … 309 309 B2.z() += V.z() / V.x(); 310 310 T3.z() += V.y() / V.x(); 311 B3.z() += V.z() / V.x(); 311 B3.z() += V.z() / V.x(); 312 312 } 313 313 … … 335 335 osg::Vec3 V; 336 336 337 V = osg::Vec3(P2.x()  P1.x(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 337 V = osg::Vec3(P2.x()  P1.x(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 338 338 osg::Vec3(P3.x()  P1.x(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 339 339 if (V.x() != 0) { … … 344 344 (*B_)[iB].x() += V.z() / V.x(); 345 345 (*T_)[iC].x() += V.y() / V.x(); 346 (*B_)[iC].x() += V.z() / V.x(); 347 } 348 349 V = osg::Vec3(P2.y()  P1.y(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 346 (*B_)[iC].x() += V.z() / V.x(); 347 } 348 349 V = osg::Vec3(P2.y()  P1.y(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 350 350 osg::Vec3(P3.y()  P1.y(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 351 351 if (V.x() != 0) { … … 356 356 (*B_)[iB].y() += V.z() / V.x(); 357 357 (*T_)[iC].y() += V.y() / V.x(); 358 (*B_)[iC].y() += V.z() / V.x(); 359 } 360 361 V = osg::Vec3(P2.z()  P1.z(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 358 (*B_)[iC].y() += V.z() / V.x(); 359 } 360 361 V = osg::Vec3(P2.z()  P1.z(), uv2.x()  uv1.x(), uv2.y()  uv1.y()) ^ 362 362 osg::Vec3(P3.z()  P1.z(), uv3.x()  uv1.x(), uv3.y()  uv1.y()); 363 363 if (V.x() != 0) { … … 368 368 (*B_)[iB].z() += V.z() / V.x(); 369 369 (*T_)[iC].z() += V.y() / V.x(); 370 (*B_)[iC].z() += V.z() / V.x(); 370 (*B_)[iC].z() += V.z() / V.x(); 371 371 } 372 372