Xna moving average


Tenho alguns problemas com um mármore rotativo. Eu tentei com o Matrix. CreateFromYawPitchRoll e Matrix. CreateRotation, mas houve alguns problemas, acho que é devido ao efeito de bloqueio do Gimbal. Então, tentei usar quaternions, mas nada mudou. Quando se move apenas um eixo, ele funciona bem, mas quando a rotação ocorre em dois eixos diferentes, o mármore ainda gira em eixos errados. No método Update: E no método Draw: O que é errado É errado usar Quaternion. CreateFromAxisAngle em eixos múltiplos Eu tentei calcular diretamente o eixo de rotação do meu mármore, em vez de usar a combinação de múltiplos eixos: o ângulo é um flutuador que mantém Rastreamento do movimento atual. Esta solução não parece criar bloqueio de Gimbal. Mas as rotações de mármore não são corretas, parece que a velocidade rotativa não é constante, mas se tornou mais rápida e lenta ao longo do tempo, não entendi por que. Se eu concatenar os quaternões, eu recebo cada quadro usando o efeito de bloqueio de Gimbal ainda está visível. Heres como eu abordei isso: suponho que a velocidade é um vetor representando a direção em que a bola está rolando e cuja magnitude representa a velocidade que está viajando nessa direção. Então você pode concatenar isso com sua qRotation. Além disso, talvez seja necessário normalizar o seu quaternion após a concatenação. Atualização: a resposta correta para este questionário foi reverter a ordem em que os quaternões concatenam. Com relação ao XNA, as matrizes combinam da esquerda para a direita, os quaternões combinam da direita para a esquerda. QRoot parece representar a orientação atual do marble39s. Para essa orientação, você está combinando apenas a rotação que ocorreu desde o último quadro com o seu Quaternion. CreateFrom. (). Então, o ângulo usado nesse CreateFrom. Deve representar apenas o movimento angular desde o último quadro. Mas parece que seu ângulo (com o) está tentando representar o ângulo geral, o que não parece certo. O ângulo deve ser apenas a quantidade de rotação desde o último quadro. Ndash Steve H 8 de outubro 13 às 0:28 Desculpe, se eu for um pouco fora da pista. Acabei de perceber lembrou enquanto jogava com isso que Quaternions concatena em ordem inversa que as Matrizes fazem em Xna. Então, onde você faria uma Matrix como rotação de orientação de orientaçãoToAdd (ou), você faria um quaternion como: orientação rotationToAdd orientação ndash Steve H 8 de outubro 13 às 12: 42 Estou apenas começando com XNA e estou certo de que estou faltando algo muito simples . Eu tenho um avião quad que eu puxei no chão. Neste plano, envolvi uma textura 2D. A textura parece estar bem perto, mas quando movo a câmera ao redor, vejo um monte de artefatos brancos em todo o lugar. Eles desaparecem quando me aproximo deles. Imagino que este é um problema de amostragem ou algo semelhante, mas estou preso. Primeiro, criei uma classe QuadDrawer para desenhar o avião para mim. É derivado do DrawableGameComponent. A partir do meu método principal de classes do jogo Inicializar (), eu simplesmente instanciamos esse objeto e passamos o GameObject, Tamanho e o nome de Textura que eu quero usar: Uma vez que o objeto é adicionado à coleção dos meus Componentes, o método de Draw do meu QuadDrawer é chamado e Tudo deve ser bom. Aqui está uma imagem do que estou vendo. Observe que este deve ser cinza sólido com linhas de cor clara que funcionam em um padrão de grade. Os artefatos brancos parecem mover-se quando você move a câmera ao redor da superfície, mas desaparece quando você chegar perto. Aqui está uma foto mostrando os artefatos brancos: Aqui está outra imagem que mostra o quão ruim pode obter a distância: E aqui está o que deve parecer a distância: a imagem não é a melhor, mas você pode ver o que estou falando . Quando a câmera se move, fica muito ruim. Eu vi essa textura usada em outros lugares e funciona bem. Qualquer idéia do que poderia ser, seja feliz em fornecer mais informações se você precisar. Eu adicionei outra imagem que mostra muito melhor. Todas as linhas brancas são o que não deveria estar lá. Na nova imagem, você pode ver como as linhas de grade brancas começam a girar quando se aproximam da câmera. Vou carregar outra imagem com o que eu espero que pareça. Por sinal, isso está acontecendo com qualquer textura que apliquem, e não apenas essa. Obrigado ndash Scott 23 de junho 11 às 4:21 Parece um problema de filtragem anistrópico. Eu percebo que você tem GraphicsDevice. SamplerStates0 SamplerState. AnisotropicWrap sendo usado. Eu sugeriria ter uma olhada no artigo de Shawn Hargreaves sobre o tema e, especificamente, as seguintes linhas. Certifique-se de que o código está sendo configurado no momento certo como Effect. Begin irá redefinir essas configurações de filtro. Outro trecho de código para ajudar. Snippet de código graças ao Jeromy Wash over nos fóruns da AppHub. Outro ótimo lugar para obter ajuda dos mestres da XNA :) Eu acredito que 4.0 acabou com BasicEffect. Begin () e BasicEffectmitChanges (). No entanto, apliquei os filtros que você sugeriu acima (usando a sintaxe 4.0) e ainda tenho o mesmo problema. Eu vou retirar todo o meu código da classe QuadDrawer e adicionar diretamente à minha classe Game para ver se isso pode ser um problema com essa classe. Obrigado pela ajuda. Se você tiver mais sugestões. Eu gostei de ouvi-los. Ndash Scott 23 de junho 11 às 5:46

Comments