Дневник: сессия по жалобам — вьюмодель, спавн, HDR/Android/анимации в работе

This commit is contained in:
Niko Marmeladkov 2026-10-23 13:23:59 +03:00
parent f58eafeb46
commit c1b35b6263
2 changed files with 36 additions and 2 deletions

View file

@ -479,7 +479,11 @@ fn real_weapon_model_structure() {
return;
};
let vfs = mount_game(&root);
for name in ["models/weapons/v_pistol.mdl", "models/weapons/w_pistol.mdl"] {
for name in [
"models/weapons/v_pistol.mdl",
"models/weapons/w_pistol.mdl",
"models/props_c17/oildrum001.mdl",
] {
let Ok(data) = vfs.read(name) else { continue };
let mdl = formats::mdl::Mdl::parse(&data).expect("разбор");
let base = name.trim_end_matches(".mdl");
@ -507,7 +511,14 @@ fn real_weapon_model_structure() {
mesh.strip_groups.iter().map(|g| g.vertices.len()).sum();
let idx: usize =
mesh.strip_groups.iter().map(|g| g.indices.len()).sum();
format!("({verts}в/{idx}и)",)
format!(
"({verts}в/{idx}и, flags {:#x}, группы {:?})",
mesh.flags,
mesh.strip_groups
.iter()
.map(|g| (g.flags, g.strips.len(), g.indices.len()))
.collect::<Vec<_>>()
)
})
.collect();
eprintln!(" парт {p} модель {m} lod {l}: {}", summary.join(" "));

View file

@ -124,6 +124,29 @@ origin. Посадка: глаз + 20 вперёд + 6 вправо − 10 вн
`batch.material` с позицией материала в `world.materials` (дедупликация по
имени); (3) `--only-material` фильтрует батчи, но не мешает ли ему что-то ещё.
**2026-10-23, сессия по жалобам пользователя.** Закрыто коммитом `f58eafe`:
- падение wgpu на втором спавне («Copy at offset … overrunning the bounds»):
буферы GPU не росли — добавлены `ensure_capacity` (рост вдвое с перезаливкой)
и `refresh_materials` (bind group для новых материалов, иначе новые батчи
молча не рисовались);
- вьюмодель: обновляется после `player.update` и `camera.pos` (раньше
отставала на кадр — «плывёт при повороте»), по умолчанию `w_pistol.mdl`,
курс −90° (у модели ствол вдоль +Y, а не +X), дистанция 26, анимация `idle01`;
- `bone_world_transforms` обходит кости рекурсивно (порядок в файле не
гарантирован);
- HUD: отладочные строки (verts/tris, лог Lua) скрыты по умолчанию, клавиша `.
**Известная проблема:** `v_pistol.mdl` рисуется плоским «листом» (2157 вершин,
2 меша, 1 материал, скиннинг при этом цел — тест `real_view_model_skin_stays_coherent`
даёт максимальный сдвиг 4 юнита). Похоже на проблему загрузки геометрии именно
этой модели; до выяснения по умолчанию стоит `w_pistol.mdl`.
**Запущены параллельно (воркдеревья от `f58eafe`):** `feat/android` — APK под
Android 12+; `feat/hdr` — HDR, тонмаппинг, bloom и мягкие тени/свет; `feat/anim` —
RAWROT/RAWPOS/RAWROT2, выбор анимации по состоянию (идёт/бежит/приседает/
прыжок), покачивание вьюмодели.
**A26, состояние на 2026-10-17:** сделаны секвенции (с определением шага записи
по данным), кости и веса вершин, слияние включённых моделей (у игрока 465
секвенций), чтение `.ani` (7,1 МБ, 1563 анимации, 247 блоков), декодер кадров