Problema di ridimensionamento / ridimensionamento della fotocamera Direct3D
Domanda
Sto usando SlimDX / C # per scrivere un'applicazione Direct3D. Ho configurato la fotocamera come da casella di testo:
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;
Il metodo di disegno e di rotazione sono tutti Matrix.RotationYawPitchRoll
e mesh.DrawSubset (0)
decenti. Tutto il resto appare normale.
Il mio problema è che la mia maglia 3d (scatola quadrata sottile), quando guarda di lato, e sta in verticale, appare più spessa di quando è orizzontale. Ho provato a cambiare AspectRatio
in 1, è peggio. Quindi, attraverso tentativi ed errori, ho scoperto che sembra molto normale quando AspectRatio
è circa 2.6. Perché è questo e cosa potrebbe esserci di sbagliato?
Soluzione
Ho capito il problema e rispondo già.
Apparentemente ho ridimensionato la mesh e ho adattato le proporzioni e ho applicato Matrix.Scaling dopo Matrix.RotationYawPitchRoll. Quando ruoto la mesh solo in avanti, mi rendo conto che sembra la stessa, non importa in verticale o in orizzontale, il ridimensionamento la sta allungando lateralmente, non in base a come ruoto. Scambia la matrice 2 risolve il mio problema. Grazie comunque