Direct3D proporção Camera / problema de escala
Pergunta
Eu estou usando SlimDX / C # para escrever um aplicativo Direct3D. Eu configurei a câmera como por meio de caixa de texto:
private float cameraZ = 5.0f;
camera = new Camera();
camera.FieldOfView =(float)(Math.PI/2);
camera.NearPlane = 0.5f;
camera.FarPlane = 1000.0f;
camera.Location = new Vector3(0.0f, 0.0f, cameraZ);
camera.Target = Vector3.Zero;
camera.AspectRatio = (float)InitialWidth / InitialHeight;
O desenho e método de rotação são todos decente Matrix.RotationYawPitchRoll
e mesh.DrawSubset(0)
. Tudo o resto parece normal.
O meu problema é que a minha 3d mesh (caixa quadrada fina), quando olhada de lado, e ficar na vertical, que aparecem mais espessa do que quando é horizontal. Eu tentei mudar o AspectRatio
a 1, é pior. Então, por tentativa e erro, descobri que é parece muito normal quando o AspectRatio
é de cerca de 2.6. Por que é que e que pode estar errado?
Solução
Eu descobri o problema e resposta já.
Aparentemente eu fiz dimensionar a malha, e para coincidir com a relação de aspecto, e eu aplicar o Matrix.Scaling após Matrix.RotationYawPitchRoll. Quando eu girar a malha voltada para a frente somente eu perceber que ele tem a mesma aparência, não importa vertical ou na horizontal, a escala é alongamento Sideway não Mather como eu girar. Trocar a matriz 2 não resolver o meu problema. Obrigado de qualquer maneira