Должна ли стена быть создана как плоскость или как коробка?


22

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

Ответы:


15

Там будет пара разных вещей, которые вы должны будете рассмотреть.

Обратите внимание: что преимущества от описанных ниже оптимизаций действительно имеют значение только для тонны стен. В этот момент, возможно, было бы целесообразно рассмотреть другое решение, например, разделение двоичного пространства (BSP), для создания стен в игре. Это сделало бы ваши уровни высоко оптимизированными для рендеринга (если он спроектирован правильно) и для физики (поскольку у вас есть очень хорошее определение того, что сталкивается, а что нет.

оказание

Ящик будет рендерить больше, чем самолет. В нем больше вершин и треугольников, что означает, что ваш вершинный шейдер и растеризатор должны быть обработаны большим количеством данных. Поэтому используйте поле только тогда, когда вам это нужно с точки зрения видимости. Удалите лица по мере необходимости для того, что игрок должен будет увидеть.

физика

Вы всегда должны использовать, BoxColliderа не MeshColliderкогда можете. MeshColliderНужно применять столкновения на грани (или в виде выпуклого корпуса) сетки и замедлять радиационное вещание и физику (но это незначительная величина только для одного бокса). Другое дело, BoxCollidersчто игроку гораздо сложнее проходить через них, когда они идут очень быстро. Даже при постоянных столкновениях, если вы все еще испытываете фазу сквозь стены, вы всегда можете просто расширитьBoxColliders

производительность

Если вы намного быстрее работаете с плоскостями MeshColliders(поскольку вам не нужно настраивать все в BoxCollidersсоответствии с их размерами), может быть целесообразно просто использовать их, если вы получите желаемую производительность.


10

Немного расширив баллы "Кобурна" :

Рендеринг : Если вы визуализируете стену как плоскость, стена будет видна только с одной стороны, так как плоскость (или точнее ее грани) имеет только одну визуализированную сторону. Поэтому, если игрок может перемещаться по стене, вам понадобится несколько плоскостей, чтобы покрыть все стороны, что означает, что вы все равно получите ящик.

Физика . Простые геометрические коллайдеры (сферы, прямоугольники и т. Д.) Всегда быстрее вычисляются по сравнению с коллайдерами с полной сеткой, поскольку не все грани сетки необходимо проверять по отдельности. Вместо этого можно использовать «простые» радиопередачи или расчеты расстояния (например, расстояние до центра сферы минус размер сферы).

Для других физических движков, которые имеют отдельный «плоский коллайдер» (чего нет в Unity), «лучшего» нет. Самолет может быть немного быстрее с точки зрения производительности, но вы можете столкнуться с проблемой быстрых объектов, проходящих через него без фактического столкновения. Затем у вас останется либо более толстый коллайдер (поэтому вместо поля), либо вы перейдете к Обнаружению непрерывного столкновения (CCD), как описано здесь .


Вы почти всегда можете отключить отсечку задней поверхности.
Балинт

2
@ Bálint Правда. Затем пользователь может видеть стену также с другой стороны, хотя в этом случае при неправильном освещении (свет, посылаемый источниками с другой стороны / комнаты, вместо того, в котором он / она стоит).
Филипп Альгайер

Во втором пункте вы не указали, действительно ли это за или против и за что. Самолет выглядит геометрически проще, чем коробка, так это ваша точка зрения?
Бакуриу

@Bakuriu Насколько я знаю, в Unity нет «самолетного коллайдера», поэтому «коробка» - это самое близкое. Я добавил примечание для других физических движков.
Филипп Альгайер

4

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

Вот объяснение симптома:

http://www.opengl-tutorial.org/intermediate-tutorials/tutorial-16-shadow-mapping/#peter-panning


Что такое Питер-Паннинг?
Пичи Уана

Вы переходили по ссылке, которую я предоставил? должно быть само за себя.
Джинджидж

0

Мне всегда говорили, что если у вас будут тени, лучше всего сделать их твердыми, чтобы облегчить легкое кровотечение, потому что разница в глубине мала, и она будет кровоточить.

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

Есть некоторые вещи, которые я оставляю по бокам, но в основном это нижняя или верхняя часть материала, вокруг которого есть много материала, помогающего с легким кровотечением.

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.