C # XNA - Рендеринг (?) 3D объекта при выключенном / наполовину выключенном экране. (Выбраковки?) - PullRequest
1 голос
/ 26 марта 2011

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

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

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

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

Если заметить, что у кого-то есть опыт создания примитивов в Ox Engine для XNA, я был бы рад услышать от вас.: Адский огонь ... Я почти уверен, что эта проблема только из-за Окса. Черт быка . ВСЕ от моей ненависти .

Ответы [ 2 ]

1 голос
/ 26 марта 2011

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

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

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

0 голосов
/ 26 марта 2011

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

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

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

...