Рекомендации по вырезанию всей сцены в Unity - PullRequest
2 голосов
/ 04 апреля 2019

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

Пока что у меня работает отсечение, как я хочу для ландшафта и эффекта воды:

Look! My trees can float in mid air!

Выше показан намного больший ландшафт, обрезанный по размеру таблицы. Другие объекты сцены не обрезаются, так как они используют неизмененные стандартные шейдеры.

Вот картинка, показывающая отсечение ландшафта в редакторе. Вы можете видеть плоскости отсечения вокруг видимой части ландшафта, а также то, что другие объекты (деревья и т. Д.) Не обрезаются и появляются за краем стола. Inside the Editor

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

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

Не будучи экспертом в Unity, мне интересно, есть ли другие подходы, не основанные на «шейдере», которые я мог бы исследовать?

Конечной целью является рендеринг сцены в пределах некоторой плоскости.

1 Ответ

0 голосов
/ 04 апреля 2019

Одним из простых способов было бы использование Box Colliders в качестве триггеров на каждой стороне вашего самолета.Затем вы можете отключить средства визуализации объектов, находящихся в триггере, с помощью OnTriggerEnter / OnTriggerStay и включить их с помощью OnTriggerExit.

Вы также можете использовать Bounds.Contains.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...