2013-08-19 2 views
0

Итак, я учусь использовать 3D с XNA, чтобы использовать его в следующем проекте. Мне нужно иметь метод масштабирования в/из. После поиска я обнаружил, что изменение поля зрения является вполне удовлетворительным методом.Использование поля зрения в качестве масштабирующего решения (в 3D с XNA) растягивает модели по вертикали

Однако проблема, с которой я столкнулся, заключается в том, что при высоких значениях FOV (довольно увеличенная) модель растягивается вертикально, что я могу терпеть. Если это помогает, моя камера находится выше модели (сверху вниз).

Итак, как исправить растяжение? Если это побочный эффект FOV, какие другие решения масштабирования существуют?

+1

Изменение положения камер в вместо fov – Sayse

+0

@Sayse Я пробовал, но затем (даже с большим расстоянием от плоскости отсечения) модель исчезает слишком рано. EDIT: И то, что я хочу, вполне разумно) –

+0

Можете ли вы добавить свою проекцию проекции и просмотра камеры? – pinckerman

ответ

1

поле зрения как масштабирование решения не свойственно ...

Вы должны изменить вид преобразования камеры с Matrix.CreateLookAt

если ваш projectinon перспективен:

 Target = What_you_want...=> Model.Position; 
     Camera.Position = Target - Camera.Forward * Zoom; 
     Camera.View = Matrix.CreateLookAt(Camera.Position, Target, Camera.Up); 

если проекция орфографическая:

 Target = What_you_want...=> Model.Position; 
     Camera.Position = Target - Camera.Forward; 
     Camera.View = Matrix.CreateScale(Zoom) 
        * Matrix.CreateLookAt(Camera.Position, Target, Camera.Up); 
+0

Да, я пробовал это. Я также объяснил это выше, но (независимо от того, где находится плоскость отсечения), модель будет вырезана примерно в 4 раза. –

+0

Увеличьте свою модель, чтобы она была меньше ... и убедитесь, что она не обрезана плоскостью «ближе» – Blau