/ O que mOffsetMatrix faz no Assimp? - c ++, opengl, assimp

O que o mOffsetMatrix realmente faz no Assimp? - c ++, opengl, assimp

Tenho certeza de que mOffsetMatrix transforma o vértice do espaço de malha para o espaço do osso, o que é confirmado por este http://assimp.sourceforge.net/lib_html/structai_bone.html

Mas então eu vi isso, que diz que ele realmente transforma vértices do espaço ósseo em espaço de malha. https://github.com/assimp/assimp/pull/1803

Agora estou muito confuso. Então, o que exatamente o mOffsetMatrix faz?

Respostas:

0 para resposta № 1

A documentação está errada. Então, preciso atualizar nosso documento. Vejo edição 1950


0 para resposta № 2

Aqui está a resposta para sua pergunta (vinda de uma solução do bug):

Depende de como você pensa na transformação. Se a matriz multiplicações vêm depois do ponto (ou seja, ponto * transformar com ponto sendo um vetor "row"), então faz sentido dizer que converte de "espaço de malha para o espaço ósseo", como leva um ponto no espaço de malha e produz um ponto no espaço ósseo. Mas ao usar a pré-multiplicação da matriz como o assimp faz (tranform * aponta com o ponto sendo um vetor de "coluna") faz mais sentido pensar nisso como transformar o próprio espaço, do "espaço do osso ao espaço da malha", com que o ponto no espaço da malha pode ser usado.

É por isso que o pôster original está confusoporque eles estão pensando sobre isso de trás para frente, comparado a como o assimet trata a transformação do ponto. Isso provavelmente está levando diretamente à confusão deles com o trabalho a matriz de transformação do osso e pensando que este deve ser o mesmo que mOffsetMatrix, quando na verdade é o inverso.

Isso tudo é especialmente confuso, pois o DirectX usa pós-multiplicação, e o OpenGL usa pré-multiplicação.

Isso tudo dito, espero que alguém possa atualizar odocumentação assim que isso deixa claro para todos. É muito difícil especificar claramente sem uma maneira "oficial" de pensar sobre esse tipo de coisa. Eu nem consigo achar documentado em nenhum lugar como o assimil trata multiplicação de matriz de transformação ... embora a notação de matriz usado na página "Estruturas de Dados" do documento assimp implica pré-multiplicação com vetores de coluna.

Espero que isso ajude você.