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