2008-10-06 10 views
2

J'utilise SlimDX/C# pour écrire une application Direct3D. Je configuré la caméra comme par trajet de zone de texte:Problème de caméra Direct3D

 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; 

Le dessin et un procédé de rotation sont tous Matrix.RotationYawPitchRoll convenable et mesh.DrawSubset (0). Tout le reste semble normal

Mon problème est que ma maille 3d (boîte carrée mince), quand regarde de côté, et se tient verticalement, elle semble plus épaisse que quand elle est horizontale. J'ai essayé de changer l'AspectRatio à 1, c'est pire. Donc, par essais et erreurs, j'ai découvert que ça a l'air bien normal quand l'AspectRatio est autour de 2.6. Pourquoi est-ce et qu'est-ce qui pourrait être mauvais?

Répondre

1

J'ai déjà compris le problème et je réponds déjà.

Apparemment, j'ai fait l'échelle du maillage, et de faire correspondre le rapport d'aspect, et j'applique le Matrix.Scaling après Matrix.RotationYawPitchRoll. Quand je fais tourner le maillage vers l'avant seulement je me rends compte qu'il semble le même, peu importe la verticale ou l'horizontale, la mise à l'échelle l'étire latéralement, peu importe comment je tourne. Swap the 2 matrix résout mon problème. Merci quand même

Questions connexes