O sistema de coordenadas do Blender é diferente do que estou acostumado, em que Z aponta para cima em vez de Y. Qual seria a maneira mais simples de converter todos os dados do mundo (para que todas as animações, coordenadas de textura, etc. ainda funcionem), para que Y aponta para cima?
Esclarecimento:
As posições dos objetos são definidas como matrizes, portanto, apenas trocar informações de conversão / rotação / escala nas matrizes não é uma tarefa trivial. (pelo menos não me parece uma tarefa trivial)
mathematics
blender
coordinates
Jari Komppa
fonte
fonte
Respostas:
Por que você não pode simplesmente criar a matriz de rotação para orientá-la corretamente na primeira parte da sua matriz mundial?
Se você deseja corrigi-lo ao carregar, crie a matriz de rotação para orientá-la corretamente (ou seja, 90 graus ao redor do eixo X). Aplique isso a todos os vértices e altere todas as matrizes existentes para (rotação * existente).
fonte
Voto negativo se estiver errado, mas não vejo por que as pessoas recomendam a troca de y e z. Isso faria com que seu sistema de coordenadas fosse destro para canhoto. Tente você mesmo, troque y e z e reoriente o eixo para que x aponte para a direita e y aponte para cima. Você verá que z aponta na direção oposta ao original (longe da tela). A maneira correta é girar em torno do eixo x, que é trocar y e z, e depois inverter o sinal do z final.
Eu acho que a solução mais fácil é criar seus modelos com o valor y subindo.
fonte
Como o camarada Duck sugere, você pode simplesmente trocar Y e Z. Se precisar de uma matriz para fazer isso, use este:
ou em coordenadas homogêneas
fonte
Se sua matriz é:
Então porque não:
Ou qualquer método de troca que você desejar.
fonte
Quando você carrega suas malhas com o código do carregador de malha que está usando, basta alterar os valores Z e Y. A malha será carregada no seu jogo no espaço de coordenadas apropriado e você poderá fazer o que quiser (aplicar rotações, traduções, etc.). É uma situação semelhante que tive com o 3DS Max.
fonte