Direct3D Соотношение сторон камеры / проблема масштабирования

StackOverflow https://stackoverflow.com/questions/173269

  •  05-07-2019
  •  | 
  •  

Вопрос

Я использую 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, чтобы решить мою проблему. В любом случае, спасибо

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top