CCPageTurn3D 翻页动画

CCPageTurn3D 这个类可以实现场景翻书动画,但是默认动画过程是从右下角到左上角翻页,加入我想实现从右上角向左下角的动画过程,我应该怎么修改CCPageTurn3D 的update方法呢。以下是我修改过的方法虽然动画过程改正确了但是显示有些错误,不知有没有大神知道怎么改不,不甚感激。

void CCPageTurn3D::update(float time)
{
float tt = MAX(0, time - 0.25f);
float deltaAy = (tt * tt * 500);
float ay = -100 - deltaAy;

float deltaTheta = - (float) M_PI_2 * sqrtf( time) ;
float theta = /*0.01f */ + (float) M_PI_2 +deltaTheta;

float sinTheta = sinf(theta);
float cosTheta = cosf(theta);

for (int i = 0; i <= m_sGridSize.width; ++i)
{
    for (int j = 0; j <= m_sGridSize.height; ++j)
    {
        // Get original vertex
        ccVertex3F p = originalVertex(ccp(i ,j));

        float R = sqrtf((p.x * p.x) + ((p.y - ay) * (p.y - ay)));
        float r = R * sinTheta;
        float alpha = asinf( p.x / R );
        float beta = alpha / sinTheta;
        float cosBeta = cosf( beta );

        // If beta > PI then we've wrapped around the cone
        // Reduce the radius to stop these points interfering with others
        if (beta <= M_PI)
        {
            p.x = ( r * sinf(beta));
        }
        else
        {
            // Force X = 0 to stop wrapped
            // points
            p.x = 0;
        }


        p.y =  CCDirector::sharedDirector()->getWinSize().height - ( R + ay - ( r * (1 - cosBeta) * sinTheta));//楼主修改的代码在这里可以实现从右上角到左下角翻页但是显示有些异常,翻页的场景的内容倒置了


        // We scale z here to avoid the animation being
        // too much bigger than the screen due to perspective transform
        p.z = (r * ( 1 - cosBeta ) * cosTheta) / 7;// "100" didn't work for


        //    Stop z coord from dropping beneath underlying page in a transition
        // issue #751
        if( p.z < 0.5f )
        {
            p.z = 0.5f;
        }

        // Set new coords
        setVertex(ccp(i, j), p);


    }
}

}

好久之前研究过这动画,然后弄了这个出来
https://github.com/chenquanjun/Cocos2dx-CCPaperTurn/

能指定区域从左往右翻,或者从右往左翻(不是从角开始翻- -)

有几个问题的,翻页动画到了垂直屏幕的时候贴图会撕裂,而且会偏移

引擎源代码有个原理链接的 http://www.parc.com/publication/1638/turning-pages-of-3d-electronic-books.html

谢谢:14: