C # XNA - рендерить (?) 3D-объект, когда экран выключен / наполовину выключен. (Выбраковка?)

Объекты, которые действительно большие, например, игровая карта, не будут отображаться в XNA, если их исходная точка не находится на экране.

Я не могу найти кровавую вещь на этом. Я изучил отбраковку и попытался добавить ее в несколько форм в проект, чтобы противодействовать этому, но безрезультатно.

Я хочу рисовать объекты, происходящие за пределами экрана, чтобы, если они частично находятся на экране, они все еще отображались. Как бы я этого добился?

Из документации, которую я прочитал, cull должен это делать, не так ли? Мой бедный мозг материя (._.)

Кстати, если у кого-то есть опыт создания примитивов в Ox Engine для XNA, я буду рад услышать от вас.

Редактировать: Адский огонь... Я почти уверен, что эта проблема просто из-за Быка. Чертов бык. ВСЕ МОЯ НЕНАВИСТЬ.


person Remm    schedule 26.03.2011    source источник
comment
Вы можете прочитать gamedev.stackexchange.com/questions/9277/   -  person Andrew Russell    schedule 26.03.2011


Ответы (2)


Выбраковка - это концепция, да.

С чем у вас могут возникнуть проблемы, так это с вычислениями, используемыми для отбраковки геометрии. Система не знает автоматически, насколько велик объект, поэтому во многих случаях (неясно, как XNA обрабатывает его) она будет использовать исходную точку в качестве точки отбраковки и считать, что объект бесконечно мал (если исходная точка находится в пределах области просмотра). объект виден, если нет, то нет).

Если вы можете указать движку создать или обновить ограничивающую рамку (возможно, AABB) для этого объекта, это может решить проблему. Также проверьте, влияют ли какие-либо другие факторы, такие как расстояние (хотя правильные границы обычно также устраняют проблемы с расстоянием).

person ssube    schedule 26.03.2011
comment
Я рассмотрю эти моменты в настоящее время. Приятно осознавать, что я был на правильном пути с выбраковкой, отсутствие работы сбивало меня с пути. - person Remm; 26.03.2011

Платформа XNA предоставляет вам класс BoundingFrustum. Это ограничивающая структура, содержащая объем, видимый камерой. В этом классе есть методы для определения того, какие другие объекты полностью находятся внутри, снаружи или частично внутри и снаружи.

Это не имеет ничего общего с тем, где находится происхождение другого объекта. Он проверяет ограничивающую структуру другого объекта.

Эти тесты возвращают перечисление «Содержит, не пересекается, пересекается». вы просто отбрасываете те, которые не пересекаются (полностью вне усеченного конуса), а те, что «наполовину внутри / наполовину снаружи», все равно будут нарисованы.

person Steve H    schedule 26.03.2011