Unreal Engine 4
http://uengine.ru/forum/

Получение изображений с внутриигровых камер
http://uengine.ru/forum/viewtopic.php?f=19&t=40525
Страница 1 из 1

Автор:  Duset [ 14 авг 2019, 20:19 ]
Заголовок сообщения:  Получение изображений с внутриигровых камер

На протяжении нескольких дней пытаюсь получить изображения с внутриигровых камер (нескольких одновременно) никак не получается. На данный момент пытаюсь реализовать чужой код, но без идей почему выдает ошибки. Подскажите пожалуйста, в чем может быть проблема(самые простые и глупые вещи, как подключения библиотек вполне могут быть причиной).
Код:
Код:
ACam1::ACam1()
{
    // Set this actor to call Tick() every frame.  You can turn this off to improve performance if you don't need it.
   PrimaryActorTick.bCanEverTick = true;

   USceneCaptureComponent2D* sceneCaptureActor = (USceneCaptureComponent2D*)GetWorld()->SpawnActor<USceneCaptureComponent2D>(USceneCaptureComponent2D::StaticClass());
   UTextureRenderTarget2D* TextureRenderTarget = (UTextureRenderTarget2D*)NewObject<UTextureRenderTarget2D>(sceneCaptureActor);
   sceneCaptureActor->TextureTarget = TextureRenderTarget;

   // Creates Texture2D to store TextureRenderTarget content
   UTexture2D* Texture = UTexture2D::CreateTransient(TextureRenderTarget->SizeX, TextureRenderTarget->SizeY, PF_B8G8R8A8);
#if WITH_EDITORONLY_DATA
   Texture->MipGenSettings = TMGS_NoMipmaps;
#endif
   Texture->SRGB = TextureRenderTarget->SRGB;

   // Read the pixels from the RenderTarget and store them in a FColor array
   TArray<FColor> SurfData;
   FRenderTarget* RenderTarget = TextureRenderTarget->GameThread_GetRenderTargetResource();
   RenderTarget->ReadPixels(SurfData);

   // Lock and copies the data between the textures
   void* TextureData = Texture->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);
   const int32 TextureDataSize = SurfData.Num() * 4;
   FMemory::Memcpy(TextureData, SurfData.GetData(), TextureDataSize);
   Texture->PlatformData->Mips[0].BulkData.Unlock();
   // Apply Texture changes to GPU memory
   Texture->UpdateResource();
}

Ошибки:
Код:
(USceneCaptureComponent2D::StaticClass()) //Недопустимы неполный тип

(UTextureRenderTarget2D*)NewObject<UTextureRenderTarget2D>(sceneCaptureActor) //Отсутствуют экземпляры перегруженная функция, соответствующие списку аргументов типы аргументов: (USceneCaptureComponent2D *)

sceneCaptureActor->TextureTarget // использование указателя на тип неполного класса не допускается

Автор:  gary_cho [ 14 авг 2019, 22:14 ]
Заголовок сообщения: 

нельзя спавнить компоненты, только актёров!!!компоненты надо так
MeshComponent = CreateDefaultSubobject< UStaticMeshComponent >( TEXT( "MeshComponent" ) );

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/