Files
airdef/docs/AIRCRAFT-MODELS.md
T
2026-11-04 17:53:10 +03:00

35 lines
5.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модели летательных аппаратов (#115)
Это промежуточные игровые стилизации. У «Ланцета» две пары Х-образных крыльев получили ступенчатые стреловидные кромки, переработан нос и добавлены детали корпуса. У Х-101 изменена стреловидность развёрнутых крыльев; корпус, хвост и подфюзеляжный элемент сохранены. Идентификаторы, положение винта и состав частей не изменены. Число элементов: «Ланцет» 17 → 49, Х-101 22 → 30. Влияние на производительность не измерено.
| Модель | До | После |
|---|---|---|
| Ланцет | ![Ланцет до](media/aircraft-pass/lancet-before-top.png) | ![Ланцет после](media/aircraft-pass/lancet-after-top.png) |
| Х-101 | ![Х-101 до](media/aircraft-pass/kh101-before-top.png) | ![Х-101 после](media/aircraft-pass/kh101-after-top.png) |
Дополнительные ракурсы: [Ланцет до](media/aircraft-pass/lancet-before-nose.png), [Ланцет после](media/aircraft-pass/lancet-after-nose.png), [Х-101 до](media/aircraft-pass/kh101-before-nose.png), [Х-101 после](media/aircraft-pass/kh101-after-nose.png).
## Проверка игрового инстанса
| До | После |
|---|---|
| ![Инстанс до](media/aircraft-pass/lancet-instance-before-nose.png) | ![Инстанс после](media/aircraft-pass/lancet-instance-after-nose.png) |
[Ракурс сверху до](media/aircraft-pass/lancet-instance-before-top.png) · [ракурс сверху после](media/aircraft-pass/lancet-instance-after-top.png).
Проверочный мод `tools/model-preview` выставляет модель через игровой `render.set-models` с `glow=false` и HD-освещением в открытом воздухе. На этих кадрах видны цвет, крылья и нос; это статичный инстанс, полёт и анимация не проверены. Различия яркости наклонных сегментов на старых кадрах исправлены в #123.
## Исправление нормалей (#123)
| До | После |
|---|---|
| ![Осевые нормали](media/aircraft-pass/lancet-instance-normal-before.png) | ![Геометрические нормали](media/aircraft-pass/lancet-instance-normal-fix.png) |
[Сверху после исправления](media/aircraft-pass/lancet-instance-normal-fix-top.png) · [ночь после исправления](media/aircraft-pass/lancet-instance-normal-fix-night.png).
Пара «до/после» снята в одном scratch-мире, с одинаковыми координатами камеры, временем и погодой на Apple M5/Metal. Динамический block-model путь теперь вычисляет нормаль из неколлинеарных вершин квада и использует прежний осевой fallback только для вырожденной геометрии. Unit-тест покрывает оба знака наклона 45°, другие углы, осевые и вырожденные квады. Массовая производительность и полёт этой проверкой не измерялись.
Остальные снимки выше показывают модели как установленные блоки в изолированных мирах Horizon, offscreen, без звука, при времени 6000 и ясной погоде, со светящейся платформой и одинаковыми координатами камеры. В пакетах одинаковы код и остальные ресурсы; для варианта «до» заменены два JSON модели на версии d410e2c. Оба блока после установки проверены через `block`. Ландшафт и состояние подгрузки различаются; снимки не ретушированы. Непрозрачный установленный блок местами выглядит почти чёрным, поэтому его снимки нельзя использовать для оценки освещения игровых инстансов. В исходной серии ночное освещение не проверялось; ночной кадр Lancet после #123 представлен выше. Массовая производительность не проверена; художественная приёмка остаётся открытой.
Редактируемые источники — `airdef-mod/source-assets/assets/airdef/models/block/{lancet,kh101}.json`. Для переэкспорта запустите `python3 tools/aircraft_models.py`, затем `python3 tools/gen_models.py` для установки ресурсов и пересчёта габаритов.