zoukankan      html  css  js  c++  java
  • (转)Ogre中计算Tangent, 感觉很不错!

    代码
    Vector3 Math::calculateTangentSpaceVector(
     
    const Vector3& position1, const Vector3& position2, const Vector3& position3,
     Real u1, Real v1, Real u2, Real v2, Real u3, Real v3)
     {
       
    //side0 is the vector along one side of the triangle of vertices passed in, 
       
    //and side1 is the vector along another side. Taking the cross product of these returns the normal.
       Vector3 side0 = position1 - position2;
       Vector3 side1 
    = position3 - position1;
       
    //Calculate face normal
       Vector3 normal = side1.crossProduct(side0);
       normal.normalise();
       
    //Now we use a formula to calculate the tangent. 
       Real deltaV0 = v1 - v2;
       Real deltaV1 
    = v3 - v1;
       Vector3 tangent 
    = deltaV1 * side0 - deltaV0 * side1;
       tangent.normalise();
       
    //Calculate binormal
       Real deltaU0 = u1 - u2;
       Real deltaU1 
    = u3 - u1;
       Vector3 binormal 
    = deltaU1 * side0 - deltaU0 * side1;
       binormal.normalise();
       
    //Now, we take the cross product of the tangents to get a vector which 
       
    //should point in the same direction as our normal calculated above. 
       
    //If it points in the opposite direction (the dot product between the normals is less than zero), 
       
    //then we need to reverse the s and t tangents. 
       
    //This is because the triangle has been mirrored when going from tangent space to object space.
       
    //reverse tangents if necessary
       Vector3 tangentCross = tangent.crossProduct(binormal);
       
    if (tangentCross.dotProduct(normal) < 0.0f)
       {
         tangent 
    = -tangent;
         binormal 
    = -binormal;
       }

     
    return tangent;

     }
  • 相关阅读:
    flex
    导航守卫 -vue
    H5 History
    JSX -react
    插槽slot -vue
    js 模拟鼠标绘制方块
    js 模拟滚动条
    js 实现简易留言板功能
    js 实现端口列表话
    js 为数组编写该方法;indexOf
  • 原文地址:https://www.cnblogs.com/lancidie/p/1846442.html
Copyright © 2011-2022 走看看