본문 바로가기

프로그래밍/Unreal

[UE4] 동적 텍스처

Dynamic Material Instance

매터리얼 및 텍스처 파라미터 만들기 : TextureSampleParameter2D

해당 머터리얼의 인스턴스 생성.



Construction Script

static mesh 를 가져와 해당 메시의 매터리얼을 동적 매터리얼 인스턴스를 생성


Dynamic Material 에 설정한 파라미터 변경




파일에서 텍스처 만들기 : 참조 Rama's Victory plugin - https://wiki.unrealengine.com/File:VictoryPlugin.zip

#include <IImageWrapperModule.h>

UTexture2D* Sample::Test( const FString& FullPath, int32& Width, int32& Height)

{

UTexture2D* LoadedTexture2D = NULL;

IImageWrapperModule& ImageWrapperModule =
    FModuleManager::LoadModuleChecked<IImageWrapperModule>(FName("ImageWrapper"));

IImageWrapperPtr ImageWrapper =
    ImageWrapperModule.CreateImageWrapper(EImageFormat::Type::JPEG);



// read raw data from file

TArray<uint8> RawFileData;

if(!FFileHelper::LoadFileToArray(RawFileData, *FullPath))

{

return NULL;

}


// set raw data to image wrapper

if( ImageWrapper.IsValid() && ImageWrapper->SetCompressed(RawFileData.GetData(), RawFileData.Num()))

{

// gets uncompressed raw data of image

const TArray<uint8>* UncompressedBGRA = NULL;


// GetRaw( ERGBFormat::Type, 채널별 비트수, 출력 배열)

if(ImageWrapper->GetRaw(ERGBFormat::BGRA, 8, UncompressedBGRA))

{

// create 32bit texture

LoadedTexture2D = UTexture2D::CreateTransient(
                            ImageWrapper->GetWidth(),
                            ImageWrapper->GetHeight(),
                            PF_B8G8G8A8);

if( !LoadedTexture2D )

{   

return NULL;

}

// output

Width = ImageWrapper->GetWidth();

Height = ImageWrapper->GetHeight();


// FTexturePlaformData

// TIndirectArray<struct FTexture2DMipMap>

// FTexture2DMipMap

// FByteBulkData


void* TextureData = LoadedTextuer2D->PlatformData->Mips[0].BulkData.Lock(LOCK_READ_WRITE);

FMemory::Memcpy(TextureData, UncompressedBGRA0>GetData(), UncompressedBGRA->Num());

LoadedTexture2D->PlatformData->Mips[0].BulData.Unlock();


LoadedTexture2D->UpdateResource();

}

}


return LoadedTexture2D;

}




이미지포맷 ENUM 값

EImageFormat::Type

Invalid = -1,

PNG = 0,

JPEG,

GrayscaleJPEG,

BMP,

EXP,

ICNS,



'프로그래밍 > Unreal' 카테고리의 다른 글

[UE4] 언리얼 엔진 빌드  (1) 2018.06.01
[UE4] Dedicated Server  (0) 2018.05.31
[UE4] Using Static Library  (0) 2018.03.16
[UE4] VR 컨트롤러 IK  (0) 2018.01.24
[UE4] 관람자 화면  (0) 2018.01.04
[UE4] 디버그 로그 출력  (0) 2017.11.13
[UE4] 유리 매터리얼  (0) 2017.10.15
[UE4] 레벨 스트리밍  (0) 2017.10.15
[UE4] UI 관련 내용  (0) 2017.09.26
[UE4] 폰트  (0) 2017.09.26