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 |