feat(terrain): build BAS basement foundations
Docs Deploy / Build and Deploy MkDocs (push) Successful in 31s

This commit is contained in:
Valentin Popov committed 2026-10-18 08:59:42 +04:00
1 parent 737e429cb1
commit c8543d7365
4 files changed
+2970 -24

No files matched your search

+17
View File
@@ -955,6 +955,23 @@ for (face, assignment) in mesh.faces.iter().zip(assignments.iter()) {
}
```
Подготовка BAS вынесена в `fparkan-terrain::build_basement_foundations`.
Функция получает внешние и внутренние кольца в порядке размещения, строит
упорядоченные пересечения внешней границы с текущей поверхностью и возвращает
исходные фрагменты рельефа вместе с треугольниками отмостки в одном наборе.
`TerrainWorld::with_basement_foundation` принимает этот набор во владение и
устанавливает те же координаты и маски в BVH высотных запросов и пересечений.
Предпросмотр миссии на Vulkan пока строит только LOD0: связывание BAS-записей
с этой подготовкой ещё не подключено, поэтому наличие API не означает, что
геометрия миссии уже обрезана.
Внешнее кольцо должно лежать на области LOD0, а каждый его сегмент — оставаться
покрытым текущей поверхностью. Непокрытый сегмент или пересекающиеся контуры
дают ошибку; карта не остаётся частично обрезанной. Первичная нормализация
использует исходные грани и соседей LOD0, последующие пересечения и вырезания —
канонические фрагменты после предыдущих размещений. Соответствие динамических
соседей, создаваемых нативным движком, пока не моделируется.
## Материалы ландшафта
Рядом с `Land.msh` лежат `Land1.wea` и `Land2.wea`. Старший байт