Refine Lancet silhouette with swept X wings

Co-Authored-By: Codex <noreply@openai.com>
This commit is contained in:
2026-11-04 15:57:01 +03:00
parent 4c7c887917
commit 53669887dd
5 changed files with 6339 additions and 172 deletions
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -176,7 +176,7 @@ be87037b84cd45b2c53d7fde6653f51769e782eea1b8586383afcfababf19ab6 assets/airdef/
be9eb1389e169a76732f16e604499260b147b524b4c929d2a4e77b580a032fb7 assets/airdef/models/block/kh101.json
ea7c9af888f1285502b2ca51114f226573311be6fb90b8d449b9f75cfbb6b885 assets/airdef/models/block/kh22.json
7b73015e33d85d4cef31660ef874ba8dcd6e07ae3a95416d0ead1d325bd0cb6c assets/airdef/models/block/kinzhal.json
911e55de28058e1723a61d15de80676789e57ab15bfc09fd75757cc85095fbcb assets/airdef/models/block/lancet.json
69135e90a1a7fb21d9f47b1854c5a3648e296136c2375acd9db5a48b0ad40887 assets/airdef/models/block/lancet.json
15c9884ce51311cf4b9b9d106e142e33d72c5ba18dc9236c5b51da01232f8e44 assets/airdef/models/block/launch_ramp.json
159fa5e3b6a096a1872dec2a550bfa30575d57519654a860607e20dab8f35f53 assets/airdef/models/block/launcher_truck.json
2069198ba24a932816f504fb52f53dc4bc740cacaf45637698a17d9175da851c assets/airdef/models/block/m48n6.json
File diff suppressed because it is too large Load Diff
+7
View File
@@ -0,0 +1,7 @@
# Модель «Ланцета» (#115)
Промежуточная игровая стилизация: у двух Х-образных пар крыльев появились ступенчатые стреловидные кромки, нос стал более плавным, добавлены небольшие детали корпуса. Положение винта и идентификатор модели сохранены. Модель состоит из 49 элементов вместо 17; влияние на производительность массового сценария не измерено.
Редактируемый источник — `airdef-mod/source-assets/assets/airdef/models/block/lancet.json`. Его можно переэкспортировать командой `python3 tools/aircraft_models.py`, затем установить ресурсы и пересчитать габариты командой `python3 tools/gen_models.py`.
Модель проверена как статичный блок в изолированном мире Horizon с двух ракурсов. Ракурсы показывают силуэт и нос, но кадры слишком тёмные для полноценной оценки поверхностей; полёт, анимация и массовая производительность не проверены. Художественная приёмка крупного плана остаётся открытой.
+37
View File
@@ -0,0 +1,37 @@
#!/usr/bin/env python3
"""Export authored aircraft silhouettes; run gen_models.py after editing."""
import math
import gen_models as g
from pilot_models import export
def lancet():
# Keep the former fuselage length, two X-wing stations and propeller origin.
p = g.ogive(-16, -10, 2.0, "lancet", 4) + g.oct_z(-10, 20, 2.0, "lancet")
p += [g.B(-1.2, 5.2, -14, 1.2, 6.4, -9, "bare_lamp"),
g.B(-0.8, 5.05, -13.4, 0.8, 5.2, -10, "dark_metal"),
g.B(-0.8, 9.9, -6, 0.8, 10.1, 5, "dark_metal")]
# Individual short diagonal panels approximate swept wings while keeping the
# former maximum span. Each piece rotates around its own centre.
for z0, z1, span in [(-5, 1, 13), (12, 18, 11)]:
for sign_x in (-1, 1):
for sign_y in (-1, 1):
angle = 45 * sign_x * sign_y
for i in range(4):
lo, hi = span * i / 4, span * (i + 1) / 4
mid = (lo + hi) / (2 * math.sqrt(2))
half = (hi - lo) / 2 + .08
sweep = (i / 4) * 2.0
p.append(g.B(sign_x * mid - half, 8 + sign_y * mid - .22, z0 + sweep,
sign_x * mid + half, 8 + sign_y * mid + .22, z1 - .5 * sweep,
"lancet", rot=("z", angle)))
p += g.oct_z(20, 24, 1.5, "dark_metal")
p += [g.B(-5, 7.85, 24, 5, 8.15, 24.5, "prop"),
g.B(-.15, 3, 24, .15, 13, 24.5, "prop")]
return p
if __name__ == "__main__":
parts = lancet()
export("lancet", parts)
print("lancet", len(parts), "elements")