Подписывайтесь на наш Telegram и не пропускайте важные новости! Перейти

Вопрос Pavlov VR — Проблемы с WorldToScreen и отрисовкой боксов на Pawn

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Фев 2026
Сообщения
180
Реакции
5
Народ, кто сейчас ковыряет VR-проекты типа Pavlov? Столкнулся с тем, что стандартный WorldToScreen в VR-движках ведет себя максимально неадекватно из-за специфики рендеринга двух глаз и смещенной матрицы проекции.

Пытаюсь накидать нормальный ESP через PostRender, но при попытке вывести боксы через K2_Project ловлю лютые просадки и съезжание координат, когда голова персонажа начинает крутиться. Мой текущий кусок кода выглядит вот так:

Код:
Expand Collapse Copy
void __stdcall PostRenderHook( UGameViewportClient* GameViewportClient, UCanvas* Canvas ) {
    SDK::TArray<SDK::AActor*>& Actors = SDK::UWorld::GetWorld( )->PersistentLevel->Actors;
    for ( SDK::AActor* Actor : Actors ) {
        if ( !Actor || !Actor->IsA( SDK::APawn::StaticClass( ) ) )
            continue;
            
        auto Pawn = ( SDK::APavlovPawn* ) Actor;
        SDK::FVector ActorLoc = Pawn->K2_GetActorLocation();
        SDK::FVector TempV = Canvas->K2_Project( ActorLoc );
            
        SDK::FVector2D Size( 65.0f, 65.0f );
        SDK::FVector2D Pos( TempV.X - Size.X / 2, TempV.Y - Size.Y / 2 );
            
        Canvas->K2_DrawBox( Pos, Size, 2.0f, SDK::FLinearColor( 255.f, 255.f, 255.f, 255.f ) );
    }
    PostRenderOriginal( GameViewportClient, Canvas );
}

Проблема в том, что K2_Project считает экранные координаты для 2D-оверлея, а в VR у нас стерео-рендеринг, и этот метод тупо не учитывает трансформацию камеры для каждого глаза. В итоге боксы рисуются либо где-то сбоку, либо вообще статично на экране, игнорируя глубину.

Кто уже возился с этим? Есть идеи, как правильно вытянуть ViewProjectionMatrix из текущего StereoView или через какой хук лучше доставать актуальный матричный сдвиг, чтобы не было этого дрифта при повороте головы?

  1. Вопрос по оптимизации: Стоит ли переходить на прямой расчет через ViewMatrix (выдирая её из GameViewport), или есть более гуманный способ через встроенные функции движка, которые я проглядел?
  2. Синхронизация: Как боретесь с "раздвоением" боксов? Кто-то советовал хукать конкретно Stereo-рендерер, но это звучит как прямой путь к крашу.
  3. Техническая часть: Если у кого есть готовые функции для корректного маппинга 3D -> 2D под VR с учетом HMD-offset, кидайте свои правки или куски кода, обсудим.

Делитесь опытом, кто допиливал вывод объектов в шлемах, а то в VR без нормального еспшника сейчас вообще делать нечего.
 
Я помню один чит на павлов вр только там были чисто чамсы но это было года 2 назад
так что думаю чамсы оптимальное решение чтобы не ебаться wts
 
Назад
Сверху Снизу