19.5 C
Brasília
segunda-feira, dezembro 23, 2024

c# – Problema de rotação de objeto em torno do ponto de pivô


Estou tentando girar o modelo com base na posição do meu clique do mouse. Cada vez que clico no mouse, o ponto de rotação é recalculado, mas depois que giro o modelo e escolho outro ponto de rotação, o modelo muda. Não sei o que há de errado com meu implemento. Se eu precisar fornecer mais informações para receber ajuda, é só me dizer.

Esta é a função render:

non-public void Render()
 ClearBufferMask.DepthBufferBit);
    GL.MatrixMode(MatrixMode.Modelview);
    GL.PushMatrix();
    GL.LoadIdentity();

    GL.Translate(transX, transY, 0);
    GL.Translate(rotatePoint.level);
    GL.Rotate(angleX, 0, 1, 0);
    GL.Rotate(-angleY, 1, 0, 0);
    GL.Translate(-rotatePoint.level);

    SetupViewport();
    pco.Render();
    GL.PopMatrix();


ConfiguraçãoViewport função:

non-public void SetupViewport()
{
    int w = glControl1.ClientSize.Width;
    int h = glControl1.ClientSize.Top;

    GL.MatrixMode(MatrixMode.Projection);
    GL.LoadIdentity();
    float facet = w / (float)h;
    float n = scaling;
    float left = -n * 0.5f, proper = n * 0.5f, down = -n * 0.5f / facet, up = n * 0.5f / facet;

    if (w <= h)
    {
        GL.Ortho(-1, 1, -aspect, facet, -1, 1);
    }
    else
    {
        GL.Ortho(left, proper, down, up, -10.0f, 10.0f);
    }
    GL.Viewport(0, 0, w, h);
}

É quando eu giro em torno do estado authentic:

A rotação funciona bem

O modelo mudou após a rotação, mas quando eu giro o modelo de volta ao estado authentic, ele para de mudar:

O problema

Related Articles

LEAVE A REPLY

Please enter your comment!
Please enter your name here

Stay Connected

0FansLike
0FollowersFollow
0SubscribersSubscribe
- Advertisement -spot_img

Latest Articles