반응형

 

 

 

 

언리얼에서 웹브라우저를 적용했는데 영어만 입력되는 현상이 있었다. (한영 전환 키가 먹히지 않음)

그래서 상태표시줄을 확인해보니 IME(Input Method Editor)를 사용하지 않는다는것을 확인할 수 있었다.

 

찾아보니 블루프린트에서 해결할 수 있는 방법은 없고  C++에서 Input Method를 적용해줘야 해결이 되는 문제였다.

 

 

해결방법

1. 웹브라우저 위젯을 상속받는 클래스 생성

- 설명을 위한 클래스이니 클래스명은 "MyWebBrowser"로 설정했다.

 

2. 생성된 CPP파일에 Input Method 작성

2-1) 헤더

#pragma once

#include "CoreMinimal.h"
#include "WebBrowser.h"
#include "MyWebBrowser.generated.h"

UCLASS()
class WEBBROWSERTEST_API UMyWebBrowser : public UWebBrowser
{
	GENERATED_BODY()

public:
	UFUNCTION(BlueprintCallable, Category = "WebBrowser")
	void EnableIME();
};

 

2-2) CPP

#include "MyWebBrowser.h"
#include "SWebBrowser.h"

void UMyWebBrowser::EnableIME()
{
    if (WebBrowserWidget.IsValid())
    {
        ITextInputMethodSystem* const TextInputMethodSystem = FSlateApplication::Get().GetTextInputMethodSystem();
        WebBrowserWidget->BindInputMethodSystem(TextInputMethodSystem);
    }
}

※ WebBrowserWidget은 SWebBrowser 클래스의 변수인데, UWebBrowser를 상속해서 클래스를 생성했으면 해당 클래스에 선언되어있는 멤버 변수이므로 따로 선언해줄 필요가 없다.

 

※ 참조할수 없는 외부형식 에러가 발생하면 종속성 모듈 추가를 해준다. (project.Build.cs)

PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "WebBrowser", "UMG" });
PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

 

 

3. 웹브라우저를 생성할 때, 작성한 'EnableIME' 함수를 호출해준다.

※ BlueprintCallable을 지정했으니 블루프린트해서 호출해도 되고, CPP에서 호출해도 된다.

 

 

 

결과

 

 

 

 

 

 

반응형
반응형

 

 

 

 

※ 로그 출력, 디버깅 포스팅은 아래 링크 확인하기

 

[언리얼] 로그 출력, 디버깅 하기

로그 출력 - 다음과 같이 작성하면 된다. (예시에서 Value는 지역변수) //카테고리, 로깅수준, 형식(인자) UE_LOG(LogTemp, Warning, TEXT("UpDown %f"), Value); 결과 디버깅 하기 - 기존에 켜둔 언리얼 에디터를

srdeveloper.tistory.com

 

 

 

 

로그를 호출한 함수 및 라인넘버 출력하는 매크로

//프로젝트 헤더에 작성하면 된다.
#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
  • __FUNCTION__ : 함수명
  • __LINE__ : 라인 넘버

 

//로그를 출력할 라인에 다음과 같이 입력.
UE_LOG(LogTemp, Warning, TEXT("%s"), *CALLINFO);
  • CALLINFO를 적용하려면 해당 매크로를 가진 헤더를 포함시켜줘야한다.

 

 

결과

- 로그를 입력한 함수와 라인넘버가 Output Log창에 표시된다.

 

 

 

 

UE_LOG를 매크로로 정의하기

//헤더 파일에 입력
#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define PRINT_CALLINFO() UE_LOG(LogTemp, Warning, TEXT("%s"), *CALLINFO)

//로그를 출력할 라인에 다음과 같이 입력
PRINT_CALLINFO();

 

 

 

 

인수를 여러개 넘겨받는 로그 매크로 정의하기

//헤더 파일에 입력
#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define PRINT_LOG(fmt, ...) UE_LOG(LogTemp, Warning, TEXT("%s %s"), *CALLINFO, *FString::Printf(fmt, ##__VA_ARGS__))

//로그를 출력할 라인에 다음과 같이 입력
PRINT_LOG(TEXT("LogTest : %s"), TEXT("Log project"));
  • ... : 가변 인수

 

 

결과

 

 

 

 

 

카테고리 매크로 정의하기

//헤더 파일에 입력
DECLARE_LOG_CATEGORY_EXTERN(TESTLOG, Log, All);

#define CALLINFO (FString(__FUNCTION__) + TEXT("(") + FString::FromInt(__LINE__) + TEXT(")"))
#define PRINT_CALLINFO() UE_LOG(TESTLOG, Warning, TEXT("%s"), *CALLINFO)

//CPP 파일에 입력
DEFINE_LOG_CATEGORY(TESTLOG);

 

 

 

결과

  • 카테고리가 선언한 문자로 출력된다.

 

 

 

 

 

반응형
반응형

 

 

 

 

Mixamo 애니메이션이 필요해서 UE5 모델로 리타게팅을 시도해봤지만, 비정상적으로 리타게팅이 되었다. 본 이름도 맞춰보고 이것저것 시도해본것중 제일 정상적으로 결과물이 나온 정보를 찾봤다.

 

 

 

Mixamo 사이트에서 애니메이션 다운받는 방법

1. 다음 링크에서 모델을 다운받는다 - 다운받기

 

2.27 MB file on MEGA

 

mega.nz

 ※ 혹시라도 해당 링크가 들어가지지 않는다면 포스팅 하단 영상 링크에서 설명란 찾아볼것

 

2. 압축을 풀어주고 Mixamo 사이트에서 'UPLOAD CHARACTER'를 눌러 다운받은 모델을 올려준다.

 

3. 원하는 애니메이션을 선택해 다운받아준다.

 

 

 

 

언리얼 애니메이션 설정

1. 앞에서 다운받은 모델을 먼저 임포트한다. (스켈레톤은 없음으로 설정하고 임포트)

 

2. 모델이 있는 폴더에 Mixamo에서 다운받은 애니메이션 파일을 다음과 같은 설정으로 임포트해준다.

 ※ 스켈레톤을 앞서 임포트한 'Unreal_Skeleton'으로 설정.

 ※ 메시 임포트는 꺼주고 '모두 임포트' 해준다. (혹시 메시를 추가로 임포트할 경우, 애니메이션 임포트를 체크했는지 확인할 것.)

 

3. Characters\Mannequin_UE4\Rigs 폴더에서 IK_UE4_Mannequin을 복사해 가져온다.

 ※ 가져온 후, 헷갈림을 방지하기 위해 파일명 변경할 것. (필자의 경우 IK_Mixamo_Mannequin으로 변경)

 

4. 가져온 Rig 파일을 AssetActions - Bulk Edit via Property Matrix를 눌러 창을 열어준다.

 

5. Imported Skeleton에서 스켈레톤을 언리얼 스켈레톤으로 설정한다.

 

6. 우클릭 - 애니메이션 - IK 리타게터 생성 후, Rig 파일을 'IK_Mixamo_Mannequin'으로 설정.

 

7. 만든 IK 리타게터를 열어서 타겟 IK 릭 에셋을 'IK_UE4_Mannequin'으로 설정한 뒤 저장해준다.

 

8. Mixamo 애니메이션 파일을 우클릭 - 애니메이션 에셋 리타깃 - 애니메이션 에셋 복제 및 리타깃을 클릭해 창을 열어준 뒤, Target IK Rig Asset을 IK_UE4_Mannequinn으로 선택해준 뒤 리타겟 클릭.

 

9. 생성된 UE4_Mannequin 애니메이션을 다시 UE5_Mannequin 애니메이션으로 리타게팅 해주면 된다.

 

 

 

 

※ 참고한 유튜브 영상

 

 

 

 

 

 

반응형

+ Recent posts