Перспективное / ортографическое преобразование проекции в XNA? - PullRequest
0 голосов
/ 17 декабря 2010

Я рисую некоторую геометрию в ортографической проекции в XNA для игры типа sidescroller. Я хочу сделать фоновую геометрию в перспективной проекции.

Однако мне, очевидно, нужно, чтобы геометрия фона «выравнивалась» с передним планом, т.е. если в перспективе я устанавливаю положение 3D-модели на 300, 30, то в ортографической проекции она выравнивается до 300, 30.

Есть ли способ, которым я могу это сделать? Я искал мир для проецирования на экран, но не уверен, что я на правильном пути.

Спасибо за любую помощь!

Ответы [ 2 ]

1 голос
/ 18 декабря 2010

Джоэл прав, было бы идеально, если бы вы могли объединить 2d и 3d.2d действует как орфографический вид, а 3d - как вид в перспективе.Используйте несколько 2D спрайтов для 2D рендеринга вместо орфографического представления.Что касается геометрии, то лучшим выбором будет использование вспомогательных функций структуры Matrix .. что-то вроде

Matrix view = Matrix.CreatePerspective(.......)

и других подобных статических вспомогательных функций ....

http://msdn.microsoft.com/en-us/library/microsoft.xna.framework.matrix_members.aspx

Кроме того, для преобразования моделей по масштабу, повороту, сдвигу может быть использована сама матричная структура.

Matrix oldWorld = Matrix.CreateWorld(...);

// something happens ; next update

Matrix scaleMat = Matrix.CreateScale(...);
Matrix rotXMat = Matrix.CreateRotationX(...);
Matrix rotYMat = Matrix.CreateRotationY(...);
Matrix rotZMat = Matrix.CreateRotationZ(...);
Matrix translationMat = Matrix.CreateTranslation(...);

Matrix newWorldMat = scaleMat*rotXMat*rotYMat*rotZMat*translationMat*oldWorldMat;
1 голос
/ 17 декабря 2010

Хех, здесь лежат монстры ... это легче сказать, чем сделать наверняка :-) Да, вы находитесь на правильном пути с проекцией мира / экрана.Что вам нужно сделать, это выбрать плоскость «Z», на которую вы будете рендерить все ваши 2-мерные проекции.Тогда то, что вы делаете, это преобразуете любую заданную точку, которая вас интересует на этой плоскости "Z", в экранные координаты и визуализируете вашу ортографическую проекцию в этом месте.

...