Problème de rapport de format / redimensionnement de la caméra Direct3D
Question
J'utilise SlimDX / C # pour écrire une application Direct3D. J'ai configuré la caméra comme indiqué dans la zone de texte:
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;
Les méthodes de dessin et de rotation sont toutes correctes Matrix.RotationYawPitchRoll
et mesh.DrawSubset (0)
. Tout le reste semble normal.
Mon problème est que mon maillage 3D (maigre boîte carrée), lorsque vous regardez de côté, et de rester verticalement, il semble plus épais que lorsqu'il est horizontal. J'ai essayé de changer le AspectRatio
en 1, c'est pire. Ainsi, par essais et erreurs, j’ai découvert que c’était très normal lorsque AspectRatio
est d’environ 2,6. Pourquoi est-ce cela et qu'est-ce qui pourrait mal se passer?
La solution
J'ai compris le problème et j'ai déjà répondu.
Apparemment, j’ai mis à l’échelle le maillage et pour faire correspondre le rapport d’aspect, et j’applique Matrix.Scaling après Matrix.RotationYawPitchRoll. Lorsque je fais pivoter le maillage uniquement vers l'avant, je réalise qu'il a la même apparence, que ce soit verticalement ou horizontalement, la mise à l'échelle l'étire latéralement, peu importe la façon dont je tourne. Échanger la matrice 2 résout mon problème. Merci quand même