Direct3D Соотношение сторон камеры / проблема масштабирования
Вопрос
Я использую SlimDX / C # для написания приложения 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;
Метод рисования и ротации - все приличные Matrix.RotationYawPitchRoll
и mesh.DrawSubset (0)
. Все остальное выглядит нормально.
Моя проблема в том, что моя 3d сетка (тонкая квадратная рамка), если смотреть сбоку и стоять вертикально, выглядит толще, чем когда она горизонтальная. Я пытался изменить AspectRatio
на 1, это хуже. Таким образом, методом проб и ошибок я обнаружил, что это выглядит нормально, когда AspectRatio
составляет около 2,6. Почему это так и что может быть не так?
Решение
Я выяснил проблему и уже ответил.
Видимо, я масштабировал сетку и соответствовал соотношению сторон, и я применяю Matrix.Scaling после Matrix.RotationYawPitchRoll. Когда я поворачиваю сетку только вперед, я понимаю, что она выглядит одинаково, независимо от того, вертикально или горизонтально, масштабирование растягивает ее вбок, независимо от того, как я вращаюсь. Поменяйте местами матрицу 2, чтобы решить мою проблему. В любом случае, спасибо