это того стоит - это делает разницу в 10 раз от геометрии для рисования, которая, в моем случае, является разницей между комфортным временем рендеринга и недопустимым. Я понимаю, что это сложная проблема; вот и весь смысл спрашивать умных людей о переполнении стека! :)
я заметка: Этот вопрос НЕ о отбраковке геометрии (отбраковке по ребрам, отбраковке лицевой стороны, отбраковке окклюзии или о ком-либо из их друзей.) Этот вопрос о геометрииустранение во время настройки, задолго до того, как мы приступим к отбраковке и рендерингу.
В юнит-кубе вынесенный мир (а ля MineCraft), я пытаюсь найти алгоритмы для удаления из моего списка геометрических граней, которые невозможно увидеть ни под каким углом, независимо от того, где находится камера.
Например, представьте 2 квадрата:
+----+ +----+
| | | |
| | | |
+----+ +----+
ясно, что есть 8 видимых сторон (по 4 на каждом квадрате.) Теперь я сдвигаю квадраты вместе,Vis:
+----+----+
| |
| |
+----+----+
Вместо того, чтобы иметь 8 сторон, теперь у меня есть только 6! Два элемента, которые соприкасаются посередине, не видны, независимо от того, где находится камера и под каким углом она расположена. (Квадраты текстурированы по-разному, поэтому мы не можем назвать это 4 сторонами.)
(То же самое работает в 3D с кубами, но 12 граней (6 на куб) становятся 10, так как устраняются 2 касания.)
Мой вопрос: какие алгоритмы помогают мне распознать эти скрытые лица? (Я счастлив сделать свой собственный поиск в Google, но я даже не знаю, как это называется!) В частности, я ищу что-то, что обрабатывает полые пятна в средних точках, которые МОГУТ быть видны, если бы вы были там, но, поскольку они окружены геометрией, вы не можете их видеть.
Например:
+----+----+----+----+
| |
| |
+ +----+ +
| | | |
| | A | |
+ +----+ +
| |
| |
+----+----+----+----+
В этом случае можно подумать, что существует 18 «видимых» сторон, но, поскольку мы точно знаем, что камера находится за пределами геометрии, 4 стороны в квадрате «А» не видны.
Чтобы еще больше усложнить ситуацию, я надеюсь найти алгоритм, который может делать быстрые обновления, если блок добавлен или удален (сноваа ля Майнкрафт.)
Спасибо!