Para a curva de movimento, sugiro o uso de curvas Hermite. Você simplesmente fornece um ponto inicial / velocidade e um ponto final / velocidade, e isso cria uma curva agradável e suave entre os dois. Use o ponto final / velocidade do primeiro par de pontos como o ponto inicial / velocidade do próximo par de pontos e você terá uma boa curva longa e sinuosa que é perfeita.
Isso lida perfeitamente com o requisito de gerenciar a velocidade: você fornece uma lista de pontos no tempo com as velocidades escolhidas e fornece os valores de posição e velocidade perfeitamente interpolados. Se você quiser continuar com isso, tudo o que você precisa extrair do aplicativo de criação 3D é pontos e velocidades no caminho que você deseja. Você também pode gerá-los em tempo de execução, talvez com base na entrada do usuário.
Para ajustar a orientação, você tem várias opções. Se o avião sempre apontar para onde está indo (o que faz sentido), você pode usar o vetor de velocidade interpolado da curva Hermite para descobrir para onde seu navio deve apontar. Se você conhece o vetor para cima (ele está se movendo em um plano ou você sabe qual direção deve estar para cima), pode calcular o terceiro eixo por cruz (frente, para cima) e aí está sua orientação.
Se você deseja uma orientação "vacilante" de alguma forma, para que o avião às vezes se desvie da direção frontal no caminho, você pode usar a direção frontal como a direção desejada e executar sucessivamente um passo entre a orientação atual e a orientação desejada.
Se você deseja orientações personalizadas que não têm nada a ver com o caminho, é claro que você pode fornecer uma lista de quaterniões de orientação para isso. Então seus pontos se tornam (ponto, velocidade, quaternion). Então você pode usar slerp entre dois quaternions sucessivos para definir suas orientações ao longo do caminho. Não esqueça que slerp é um método de interpolação linear . No entanto, geralmente deve estar bem. Se você achar que as rotações não são suaves o suficiente nas costuras, tente interpolar a lista de quaternions com uma curva de Bezier, conforme explicado aqui na seção 7.
Aqui está um código-fonte que pode ajudá-lo a começar. Possui várias técnicas de interpolação suaves para uma lista de quaternions (esquadrão, bezier, etc.).
Deixe-me saber se você tiver alguma dúvida!