2013-06-10 1 views
0

У меня есть, что я думаю, это будет очень очевидный вопрос для некоторых, поэтому я надеюсь, что кто-то может быстро очистить его для меня. У меня есть приложение XNA, где я рисую сетку вершин, а камера расположена на 20.0f выше. Если я поставлю камеру на 0, -20, 0 и цель на 0, 0, 0, то вершины не появятся. Если я отрегулирую X или ось Z немного до 0,1, то вершины покажут. Почему это?XNA Вершины не появляются, когда камера находится на 0,0,0

Благодаря

+1

Не могли бы вы предоставить пример кода? – mcmonkey4eva

ответ

0

не видя кода, скорее всего, причина в том, что на вектор вашего матричный является параллельно с направлением камера смотрит. Если ваша камера находится в 0, -20,0, а ваша цель равна 0,0,0, а ваш вектор вверх - 0,1,0, то это произойдет параллельно. Смещение позиции или цели слегка устраняет эту параллельную ситуацию.

Когда вы запустите CreateLookAt(), код рамки за кулисами пересекает вектор вверх с направлением, которое камера ищет (цель - позиция). Если два вектора, которые пересекаются, параллельны, он возвращает векторный результат с нулевой длиной, который разбивает матрицу вида.

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

+0

Спасибо, ты гений. – user1157885

+0

Извините, но у меня есть другой вопрос. Я понимаю, что вектор Up - это «Up», основанный на вашем просмотре камеры. Я пытаюсь сделать вид птиц, где ось Z - вверх и вниз, а X - влево и вправо. По моему мнению, вектор «Вверх» должен быть -1 на оси Z, но когда я делаю это + X на оси X, остальное и -X на оси справа. Если я изменил вектор вверх на 1 по оси Z, это исправит его, но это меня смущает, потому что не должно быть наоборот? – user1157885

+0

Представьте себе, что вы плаваете в нескольких сотнях футов над землей, глядя прямо вниз, указав голову на голову. Справа земные долготы уменьшаются. Теперь изобразите себя на пару сотен футов ниже уровня земли, глядя вверх, а верхняя часть головы снова укажет на север. теперь справа от вас, долготы увеличиваются. В вашем месте вы разместили камеру под землей (-20), чтобы она была ниже уровня земли. –