aboutsummaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorValentin Popov <valentin@popov.link>2026-07-18 15:14:58 +0300
committerValentin Popov <valentin@popov.link>2026-07-18 15:14:58 +0300
commit858dcd0d1de47cce5f04f959f239cff6aaa033f4 (patch)
treeebcc52ec3adf6803b82715ce9c412695ca3b6971 /docs
parentcfa6d2703233334582d8f115c5fd5a69a57c940c (diff)
downloadfparkan-858dcd0d1de47cce5f04f959f239cff6aaa033f4.tar.xz
fparkan-858dcd0d1de47cce5f04f959f239cff6aaa033f4.zip
feat(render): apply static node fallback poses
Diffstat (limited to 'docs')
-rw-r--r--docs/reference/msh.md9
-rw-r--r--docs/tomes/05-render.md14
2 files changed, 23 insertions, 0 deletions
diff --git a/docs/reference/msh.md b/docs/reference/msh.md
index 16a4035..93250a5 100644
--- a/docs/reference/msh.md
+++ b/docs/reference/msh.md
@@ -49,6 +49,15 @@ Validated `ModelAsset` также сохраняет decoded type 8 keys и type
field, пока runtime evidence не подтверждает, является ли оно parent index или
другой link semantic.
+В legacy-camera static preview стандартный узел уже получает свой fallback pose
+до внешнего TMA/Iron3D transform: quaternion поворачивает local vertex, затем
+добавляется node translation, после чего применяется `Rz * Ry * Rx`, scale и
+mission translation. Геометрия намеренно дублируется на draw-range узла, потому
+что один source vertex может быть нарисован разными node poses. Это local-pose
+assembly, а не skeleton: `parent_or_link` по-прежнему не используется, поэтому
+вложенные parent transforms и dynamic frame-map sampling остаются отдельной
+задачей runtime recovery.
+
## Slot and batch
Type 2 содержит header `0x8C`, затем `Slot68`:
diff --git a/docs/tomes/05-render.md b/docs/tomes/05-render.md
index bc75c8b..8dd244f 100644
--- a/docs/tomes/05-render.md
+++ b/docs/tomes/05-render.md
@@ -1607,6 +1607,20 @@ animated models, 3,469/5,233 node samples и утверждённые captures.
доказывает production handoff animation data, не семантику parent links и не
готовую model assembly.
+Следующий узкий шаг применяет этот уже декодированный `fallback_key` в
+legacy-camera static preview. Для каждого выбранного `Node38` bridge поворачивает
+вершины normalized quaternion, прибавляет local translation pose и только затем
+применяет доказанный TMA `Rz * Ry * Rx`, scale и mission translation. Вершины
+намеренно разворачиваются per node/draw range, чтобы один source vertex мог
+получить разные poses. `parent_or_link_raw` не читается как parent, frame map не
+семплируется, поэтому это не заявляет восстановленную hierarchy или animation.
+На той же GOG `MISSIONS/Autodemo.00/data.tma` и offline Ngi32 camera capture
+full preview из 8 objects / 66 mesh components / 67 descriptors завершился за
+один native Vulkan run с `clip_visible_vertices=2584`, `validation_warnings=0`,
+`validation_errors=0` и readback hash `5769837558651835265`. Рост с 938
+видимых вершин подтверждает, что local source poses реально вошли в geometry
+path; он не является оценкой сходства с original frame.
+
Параллельно bridge для legacy-camera path теперь переводит только высоту
`Land.msh` в world units с масштабом `1/32`: raw AutoDemo heights
`95.29412..288.23532` становятся `2.978..9.007`, что согласуется с TMA Z и