aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/appendices/knowledge-boundaries.md36
-rw-r--r--docs/reference/msh.md33
-rw-r--r--docs/reference/render-frame.md24
-rw-r--r--docs/tomes/05-render.md14
4 files changed, 83 insertions, 24 deletions
diff --git a/docs/appendices/knowledge-boundaries.md b/docs/appendices/knowledge-boundaries.md
index bc8e999..29c9480 100644
--- a/docs/appendices/knowledge-boundaries.md
+++ b/docs/appendices/knowledge-boundaries.md
@@ -10,9 +10,13 @@ authoring API без динамического подтверждения.
Не доказаны символами точные имена renderer vtable slots, полный набор CShade
state transitions и окончательный порядок части transparent/FX/shadow subpasses.
-Свободная камера превью удерживается в XY-границах поверхностей карты и над
-рельефом. Она пока не проверяет стены и проёмы строений; эти ограничения не
-подтверждают поведение стратегической камеры или камеры робота оригинала.
+После ограничения цели рельефом интерактивная камера проверяет движение
+против каждого отрисовываемого корневого строения класса `FORT` и его
+отрисовываемых компонентов. Для этого пути используются текущая Node38-поза
+компонента и его преобразование присоединения. При попадании камера сохраняет
+прежнюю позицию, но оставляет новый поворот. Так приложение связывает мировой
+MSH-запрос со свободной preview-камерой; это не подтверждает алгоритм
+стратегической или следящей камеры оригинала.
Локальный MSH-запрос `query_slot_segment` сверён с оригиналом на фабричной
стене и дверном проёме. Runtime-адаптер `query_building_segment_world` теперь
@@ -22,15 +26,23 @@ state transitions и окончательный порядок части transp
тесты покрывают связи, отсутствие геометрии у промежуточного узла, маски,
равные попадания и предел в 200 пересечений.
-Игнорируемый тест на AutoDemo загружает настоящий объект PLANT 4 и подтверждает,
-что сегмент пересекает геометрию Node3 в исходной закрытой позе, но не
-пересекает её в открытой позе Node3 на frame `1`. В загруженных
-Control-привязках корня PLANT нет tag-21 записи для этого перехода. Тест задаёт
-frame `1` напрямую и не исполняет команду открытия из миссии.
-
-Открыты выбор первого корня и состава узлов/слотов нативного мирового запроса,
-полный обход текущих runtime-поз и component bindings, подключение адаптера к
-свободной камере и сравнение итогового результата мирового запроса с оригиналом
+Игнорируемый тест приложения загружает настоящий PLANT 4 из AutoDemo и его
+исходную CTLD-привязку Node3 (`frame_a = 0`, `frame_b = 1`, blend `0`). В
+контроллере корневого PLANT нет записей tag-21 для открытия двери. В исходной
+закрытой позе камера блокируется о дверь через обычный путь обновления
+приложения. Для второго запроса тест вручную задаёт время `1` только Node3,
+обновляет иерархию позы компонента и преобразование присоединения, затем
+проверяет, что камера проходит через проём. Это подтверждает только подачу
+выбранных поз в коллизию приложения: тест не запускает событие открытия, не
+доказывает видимое открытие двери и не сравнивает полный игровой цикл с
+оригиналом.
+
+Открыты выбор первого корня и правила состава узлов/slot-ов оригинального
+мирового запроса, сравнение полного обхода с оригиналом, а также связь с
+игровыми позами и событиями. Текущий путь приложения использует все
+отрисовываемые компоненты строений `FORT`, но их выбор ещё не сопоставлен с
+поведением оригинала для первого корня и всего мира. Совпадение со
+стратегической и следящей камерами не подтверждено
([MSH](../reference/msh.md)).
Для MSH без потока цветов type 16 подтверждён только один постоянный alpha
diff --git a/docs/reference/msh.md b/docs/reference/msh.md
index 945bdc4..0a8a2cb 100644
--- a/docs/reference/msh.md
+++ b/docs/reference/msh.md
@@ -236,15 +236,30 @@ distance² = dot(hit_world - original_start, hit_world - original_start)
`af87d1b2e728a0be73c52be3b44cc196ab46da7799f25a15d40f8c9b0b425ead` (RVA
`0x35430`, `0x35961`) и `AniMesh.dll` SHA-256
`65659bf67f20e5be77d67a5b2f59968f61b94293143807fa59ca451c560c4f7e` (RVA
-`0x134D0`, `0x10A50`). Игнорируемый тест загружает настоящий объект PLANT 4
-миссии AutoDemo и проверяет, что сегмент пересекает геометрию Node3 в исходной
-закрытой позе, но проходит без попадания при явно заданной открытой позе frame
-`1`. Это проверка запроса для двух поз, а не открытие двери игровой командой.
-В загруженных Control-привязках корня PLANT нет tag-21 записи для перехода
-Node3; тест задаёт frame `1` напрямую и не исполняет команду открытия из
-миссии.
-Нативный выбор первого корня и полный мировой обход ещё не сопоставлены с Rust;
-app пока не передаёт этой функции живые runtime-позы и bindings.
+`0x134D0`, `0x10A50`).
+
+Игнорируемый тест загружает настоящий объект PLANT 4 миссии
+AutoDemo и использует его исходную CTLD-привязку Node3: `frame_a = 0`,
+`frame_b = 1`, начальное смешивание `0`. В контроллере корневого PLANT нет
+записей tag-21. В
+закрытой начальной позе запрос, вызванный через обновление камеры приложения,
+останавливает движение. Затем тест вручную задаёт время `1` только для
+Node3, пересчитывает pose и преобразование присоединения и повторяет тот же
+путь обновления камеры; отрезок проходит через проём. Это проверяет подачу
+двух заданных в MSH поз в коллизию приложения, а не открытие двери событием
+миссии и не её видимое обновление в игровой сцене.
+
+Интерактивный preview создаёт отдельную запись для каждого отрисовываемого
+корневого строения класса `FORT` и его отрисовываемых компонентов. На каждом
+движении камера получает текущую Node38-иерархию компонента и его актуальное
+преобразование присоединения, переводит выбранные узлы и slot-ы в мировой
+запрос и выполняет его после ограничения цели рельефом. Попадание сохраняет
+прежнюю позицию камеры, но не отменяет новый поворот; повтор ожидающего кадра
+не применяет шаг движения второй раз. Так приложение связывает мировой
+MSH-запрос с движением свободной preview-камеры. Выбор первого корня и полный
+состав мирового списка ещё не сверены с оригиналом; игровые источники поз и
+событий, а также поведение стратегической и следящей камеры остаются
+открытыми.
## Сторона грани в цветовом проходе
diff --git a/docs/reference/render-frame.md b/docs/reference/render-frame.md
index 3269c67..10de209 100644
--- a/docs/reference/render-frame.md
+++ b/docs/reference/render-frame.md
@@ -209,9 +209,29 @@ position[axis] = position[axis].clamp(min[axis], max[axis]); // axis = 0, 1
position[2] = position[2].max(ground_height + ground_clearance);
```
+Для каждого отрисовываемого корневого объекта класса `FORT` и каждого его
+отрисовываемого компонента интерактивный путь создаёт отдельную запись проверки.
+Она использует те же текущие позы узлов и преобразования присоединённых
+компонентов, что и геометрия кадра. После ограничения целевой позиции по
+TerrainWorld камера проверяет непрерывный отрезок от прежней позиции до цели.
+Если после нативных MSH-фильтров остаётся пересечение, позиция возвращается к
+началу шага, а рассчитанный из ввода новый поворот сохраняется. Маски batch и
+type-7, а также продолжение отрезка по helper-link описаны в
+[разделе MSH о сегментном запросе](msh.md#type-7-и-сегментный-запрос).
+
+Повторная отправка того же ожидающего кадра, например после изменения размера
+области отображения, использует уже подготовленное состояние и не применяет
+движение второй раз. `--legacy-camera-capture` сохраняет положение захваченной
+камеры без изменений и не запускает проверку зданий. Это диагностическое
+ограничение, а не восстановленное правило игровой или следящей камеры
+оригинала. В проверке начальная поза берётся из декодированных связей CTLD;
+проход двери отдельно проверяется после явной выборки записанного в MSH кадра 1
+только для Node3. Так проверяется вход запроса столкновения и путь камеры;
+видимая дверь не анимируется, а миссионные команды не воспроизводятся.
+
Высота полёта сверху не ограничена. Это ограничение диагностической камеры
-превью; столкновения со стенами зданий и точные правила игровых камер оригинала
-остаются отдельными задачами.
+превью; точные правила игровых и следящих камер оригинала остаются
+неподтверждёнными.
## Ограничения точного совпадения
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index 84de6ee..ef7dc52 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -1045,7 +1045,19 @@ swapchain, тот же sample времени и состояние мира от
Счётчик и replay clock продвигаются только после результата `Presented`.
После шага движения камера проверяет высоту
`TerrainWorld`: над конечной поверхностью сохраняется начальный просвет, а вне
-поверхности высота не ограничивается. Mission-local `sky.ske`/`sky.wea` выбирают
+поверхности высота не ограничивается.
+
+Для каждого отрисовываемого строения (корневого объекта класса `FORT`) и для
+каждого его отрисовываемого компонента создаётся отдельная запись проверки. Она
+использует те же текущие матрицы узлов и присоединённых компонентов, что и
+геометрия.
+После ограничения целевой позиции по TerrainWorld камера проверяет непрерывный
+отрезок от прежней позиции до цели; при пересечении она остаётся в прежней
+позиции, сохраняя новый поворот. Повторная отправка ожидающего кадра не
+применяет движение второй раз. Это ограничение диагностической свободной
+камеры, а не правило игрового или следящего режима оригинала.
+
+Mission-local `sky.ske`/`sky.wea` выбирают
атмосферное расписание и sky materials, `effects.rlb/env_lightning` даёт
lightning visual; weather particles, flares, sun/moon, point lights,
projected shadows и audio events обновляются вместе с камерой и временем.