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?

È stato utile?

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top