본문 바로가기

GameDevelopmentDiary/UnrealDiary

Test Selfie segmentation on unreal editor 모바일 사용(Google IP Web Cam) 1.0 버전 실행 순서: IP Webcam 실행 - 제작한 MediaPipe 웹 실행 - NDI 실행 및 웹 페이지 스크린 캡쳐 - 언리얼 실행 - url 입력 방식: 원본 이미지와, 웹 페이지의 변환 이미지를 언리얼에서 합성. 결과: 굉장히 느리고 실행 과정이 복잡. JS code 더보기 // main.js // HTMLElements setting const inputElement = document.getElementsByClassName('input_video')[0]; const outputElement = document.getElementsByClassName('output_canvas')[0]; const canvasCtx = outputEle..
Unreal Python 에디터에서 리소스를 만지작 거리는 와중에 귀차니즘이 스멀스멀 올라왔다. 본격적으로 파이썬을 다뤄본적 없었지만, 파이썬 플러그인을 사용하면 에디터용 함수를 만들 수 있다고 하여 찾아보았다. Unreal Python 설정 1. 플러그인 설치 Scripting 항목에 보이는 세 개의 플러그인을 설치 후 재시작. 2. 플러그인 환경설정 기본적으로 Contents/Python 폴더에 배치하는 경우는 적을 필요 없지만, 프로젝트 외부에 존재하는 파일의 경우 환경변수를 설정해준다. 설정 창 위치: ProjectSetting - Plugin - Python 3. unreal.py 준비 에디터 출력 로그 창의 입력 탭을 변경해주고(Cmd -> Python), 언리얼 명령 모듈을 불러온다. 그러면 unreal.py 파일을..
Mobile AOS XR Study - Remote camera in PC 2. Remote camera in PC 잘 만들어진 앱과 플러그인이 있는 듯 한데, 유료(약 7만원)여서 튜토리얼들을 찾아보았다. 준비 플러그인 - Web Browser 준비 앱 - ip webcam 방법 ip webcam 연동 설치 및 실행 - 주소확인 - UMG의 web browser 안으로 주소 할당 플레이어 폰에 해당 위젯 컴포넌트 생성 크로마키 머티리얼 기존 크로마키 머티리얼에서 MediaTexture 사용 부분을 일반 SampleTexture로 변경. 메인 UI 위젯 생성 시 이미지 위젯의 머티리얼 인스턴스 다이나믹도 같이 생성. ip webcam 사용 시 해당 다이나믹 머티리얼 인스턴스의 텍스쳐 파라미터를 웹 브라우져 캡쳐로 변경. (GetRenderTarget 노드).
Mobile AOS XR Study - Virtual camera in mobile 1. Virtual camera in mobile 준비 플러그인 - WebM Video Player, Android Camera, GoogleARCore 준비 앱 - 모바일 녹화 앱 방법 카메라 캡쳐 - MediaPlayer 활용, 주요노드 : OpenURL, EnumerateWebcamCaptureDevices 카메라 권한 요청: Camera 권한 요청 변수 = android.permission.CAMERA 모바일 입력으로 카메라 움직임 자동회전: GetInputMotionSlate 터치 회전 및 이동: 터치 입력의 pressed, released, moved, location, fingerIndex 전부 사용 크로마키 머티리얼: 머티리얼 파라미터 생성하고 Chroma key alpha 노드 사용. 컬..
언리얼4 립싱크(Text To Speech) 구현 방법 Part4 (완성) 1. 실시간 OVRLipSyncFrameSequence 생성 이전에 Runtime Audio Importer 플러그인과 RawData 상태의 소리값을 사용해 SoundWave 객체를 만들고 목소리를 들어봤었다. 그리고 이제 또 립싱크를 위해서는 OVRLipSyncFrameSequence 객체가 필요하다. 그런데 OVRLipSyncFrameSequence 객체로 변환하는 방법이 에디터의 콘텐츠 브라우저에서 진행 되었었다. 입력되는 텍스트를 매번 파일로 만들고 에디터에서 다시 변환한다면 매우 비효율적이다(는 주관적 생각). 때문에 해당 플러그인에서 시퀀스 생성 부분을 실행 중에도 사용할 수 있도록 해보자. 시퀀스 생성 노드를 바로 사용할 수 있다면 좋겠지만, 해당 함수는 Private 폴더에 있고 파일을 생..
언리얼4 립싱크(Text To Speech) 구현 방법 Part3 1. Viseme 이전에 텍스트를 목소리로 변환해 보았다. 이제 립싱크를 위해서는 그 목소리에서 특정 값을 추출해야한다. 우리가 추출할 값을 보통 Viseme 값이라고 한다. 위키백과(https://en.wikipedia.org/wiki/Viseme) MS 음성 서비스에서 제공하는 REST API 경우 Viseme 값을 추출하는 기능이 지원되지 않는다. 언리얼에서 사용할 AzureTTS 플러그인은 REST API를 이용하기 때문에 또 다른 플러그인이 필요하다. 2. OVRLipSync 2.1. OVRLipSync - USoundBase to Visemes 처음에 플러그인을 모두 준비했겠지만, 만약 안 되어 있다면 마저 다운받고 실행해주자. 그리고 OVRLipSync 플러그인의 테스트에 사용할 대사파일을 ..
언리얼4 립싱크(Text To Speech) 구현 방법 Part2 1. 텍스트를 소리로 변환해보자. 1.1. AzureTTS Sample Project. 먼저, 빈 프로젝트를 하나 만들고, AzureTTS 샘플을 받아서 프로젝트폴더에 추가하자. UE4(https://github.com/breakstring/AzureTTS) UE5(https://github.com/nedcrow/AzureTTS) 프로젝트를 열어보면 블루프린트가 이렇게 딱 하나 보인다. 블루프린트도 열어보면, 예제 노드들이 촤악 펼쳐져있다. 모두 알아두는게 좋다만, 당장 우리가 사용할 그룹은 딱 두 그룹이다. 1.2. AzureCognitiveService '샘플'을 열어봤으니 일단 Play 부터 눌러보는게 당연지사겠지만, 지금은 Play버튼을 눌러도 아무 소리가 들리지 않는다. 먼저 Subscripti..
언리얼4 립싱크(Text To Speech) 구현 방법 Part1 1. 목적 언리얼 엔진을 사용하여 입력 텍스트에 따라 캐릭터들이 대사를 말하는 모습을 구현. 1.1. 목표 TTS(Text to speech) - AzrueTTS 3D 캐릭터의 립싱크 - 메타휴먼 캐릭터 표정 애니메이션을 다른 애니메이션과 블랜딩 2. 준비 Unreal - 4.26 MetaHuman 캐릭터 에디터에 메타휴먼 가져오는 방법: https://docs.metahuman.unrealengine.com/en-US/HowTos/ExportingMetaHumans/ExportingToUnrealEngine/ 2.4. Plugin 준비 C++로 플러그인 접근 마켓플레이스 플러그인 사용 시, '프로젝트명\Plugins\플러그인명\'경로에 Source 폴더가 있으면 C++로 접근할 수 있다. 없다면 엔진 ..