- Статус
- Оффлайн
- Регистрация
- 13 Фев 2026
- Сообщения
- 507
- Реакции
- 13
Здорова, реверсеры. Пытаюсь допилить отрисовку скелета в Valorant, но застрял на переводе трансформов костей в мировые координаты. Суть в том, что при попытке вычитать meshCompToWorld через стандартный флоу, данные на выходе получаются кривыми.
Техническая база:
Использую чтение через драйвер:
В конфиге сейчас забито:
Пробовал оффсеты 0x250 и 0x2D0, но ни один не дает валидного результата. В дебаг-логах скейл c2w_s постоянно падает в ноль, из-за чего мировые координаты костей тоже обнуляются.
Логика обработки скелета:
Насколько я помню, ComponentToWorld должен находиться в USceneComponent, а наш меш (USkeletalMeshComponent) как раз от него наследуется. Похоже, что оффсеты из старых дампов окончательно протухли или структура была изменена.
Кто-нибудь может подтвердить актуальный оффсет или направить, как его правильно протрейсить через CalcNewComponentToWorld в IDA?
Интересно, это античит начал так мусорить в памяти или я просто проглядел очевидный сдвиг в структурах Unreal Engine.
Техническая база:
Использую чтение через драйвер:
Код:
meshCompToWorld = driver.Read<FTransform>(mesh + ComponentToWorld);
В конфиге сейчас забито:
Код:
constexpr uint64_t ComponentToWorld = 0x0250;
Пробовал оффсеты 0x250 и 0x2D0, но ни один не дает валидного результата. В дебаг-логах скейл c2w_s постоянно падает в ноль, из-за чего мировые координаты костей тоже обнуляются.
Логика обработки скелета:
- Чтение ComponentToWorld из меша.
- Получение BoneArray (чекаю BoneArrayCache 0x0AB8, если пусто — иду в BoneArray 0x0AA8).
- Трансформ кости в World Space.
- Отрисовка через WorldToScreen.
[bone-trace] bone_world ok mesh=0xCDD9AAB0 bone=3 local=(-10.1,-3.9,116.8) c2w_t=(0.0,0.0,0.0) c2w_s=(0.00,0.00,0.00) c2w_q=(0.000,0.000,0.000,1.000) world=(0.0,0.0,0.0)
Насколько я помню, ComponentToWorld должен находиться в USceneComponent, а наш меш (USkeletalMeshComponent) как раз от него наследуется. Похоже, что оффсеты из старых дампов окончательно протухли или структура была изменена.
Кто-нибудь может подтвердить актуальный оффсет или направить, как его правильно протрейсить через CalcNewComponentToWorld в IDA?
Интересно, это античит начал так мусорить в памяти или я просто проглядел очевидный сдвиг в структурах Unreal Engine.