[미해결] [Unreal] Motion Capture Data | Visualizing with UE5
Matching Bones: Model data and Character
센서에서 얻은 데이터 이름과 unreal 캐릭터의 bone matching
udp 서버에서 데이터프레임 만들어 unreal 형식에 맞춰서 전송
UDP Message Printing
CONNECT : 'UDPRecivedEvent' -> 'Print String' node
'Printing String' node ➝ screen/console 출력 option 선택 가능
☑ return value 20 ➝ 22 (add shoulder skeleton)
센서 shoulder == 캐릭터 clavicle 로 조정했는데 잘 모르겠음 (수정)
☑ sensor = { name , oriientation { roll, ptich, yaw } }
Character: Animation (use animation blueprint)
1. 변수 추가: 각 Bone에 해당하는 로테이터 생성
2. bone transform (modify) 노드 추가
3. bone transform node의 rotation과 로테이터 연결
* rotation mode: add to existing or replace existing
* rotation space: (잘 모르겠음)
- world space: set the value relative to world origin.
- component sapce: relative to skeletal mesh component
- parent bone: relative to the parent bone
- bone sapce: relative to bone's transform in the input pose.
☑ Rotator의 default value 수정 가능
* arm: 0, 0. 0 의 기본 자세 = T-pose
* pelvis ~ head: y 축 보정 필요
☑ euler or quaternion value
* 0, 0, 0 이 T-pose 라고 하면 ?? 수집한 Euler T-pose 데이터 의 quanternion 값 사용해야 해
일단 python: udp server: euler to quaternioin library 사용해 변환
☑ degree or radian ??
☑ x = roll | y = pitch | z = yaw 맞는지 확인
euler 값 그대로 전송하면 캐릭터가 움직일거라고 생각했지만 축이 이따구로 휘어지는 문제 발생
☑ unreal 자체에서 default 값 수정 or 서버에서 보낼때 보정해서 보내주기
- unreal default 수정: 결과 원하는대로 안나옴 ➝ 뭐가 문제인지 모르겠음
- 서버에서 값 보정: 동/서/남/북 데이터에 따라 축 뒤틀림^^
[1]
[2]
☑ 이게 문제가 아닌 것 같다..
UDP Controller BP: Add Rotator SET
'UDPController_Human' Blue print의 ThridPerson_AnimBP 형변환 노드에서 새로운 노드를 추가
'ThirdPerson_AnimBP'에서 생성한 변수를 추가
☑ 센서에서 얻은 모든 bone 데이터 연결 & 흐름 확인
☑ 삽질 ing (2023.08.02)
데이터 하나 잡고 끝나는건가.. 값 변화 없음^^
근데 콘솔에서는 계속해서 값 들어오는거 확인?
count 값으로 제대로 들어가고 있는건지 확인 > time.sleep(1) 변화 관찰
1초마다 캐릭터가 회전하기는 하는데.. 그럼 뭐가 문제? ^^
Rotator 값 Screen에 찍어봐도 변화하는거 확인
❍ Character BP, UDP controller BP 축 방향 설정
데이터셋에서 얻은 y=ptich / x=roll 값들이 unreal engine에서 반대인 듯
캐릭터 Animation BP 에서 Rotator에 전송되는 값들로 바뀌도록 만들고 싶으니까 opiton = replace existing
(add to existing 이면 캐릭터 끝도 없이 회전하는 문제 발생)
Character Animation BluePrint > Character > bones > all hierarchy
각 bone들이 어떻게 연결되어 있는지를 나타내는 것 = "Rig"
skeleton은 이렇게 뼈대 구조 목록과 각 bone들이 어떻게 연결되어 있는지에 대한 정보 들어있다.
☑ Skeleton 범위 벗어난 ik_hand / ik_foot 때문인가 싶었는데 아닌듯
☑ 데이터 수집 (2023.08.02)
.bvh 파일 확인하기 (link)
N-Pose / T-Pose 로 calibration 후 여러 개의 pose data 수집
Xsens로 얻은 .mvn > .xlsx 로 변환 후 캐릭터에서 확인
.bvh 파일 분석
수집한 데이터 xlsx 사용하지 않고 bvh 정보 사용하기
이전보다 의미 있는 결과가 나오나 여전히 수집한 데이터와는 일치하지 않음
➔ 원인 파악 안됨
☑ udp_server.py 에서 bone 종류마다 값을 보정해서 보내주기
각각의 bone 마다 추가적으로 값 더해서 보내주는 방법 시도
┖ 동/서/남/북 에 따라 보정값이 달라져야 한다..
┖ 이렇게까지 해야 할 이유가 있을까? → 다른 방법 찾아보기
┖ 이렇게 보내는거나 bp에서 default 값 설정하는 거나 비슷한거 아닌가
☑ Character Animation BP 설정 변화 시도
여러 방법으로 시도해봤지만 > 원하는 결과 ? 안나옴
☑ NEXT..?
❍ C++ 단계부터 시작하기
┖ BP 쓰는 것 보다 훨씬 직관적? 으로 구현할 수 있을 것 같긴 한데
┖→ 그럼 어디서부터 시작해야되지
❍ 다른 Insight 생기기 전까지 잠시.. Bye
┖ 너무 오래동안 잡고있는 듯한 느낌
❍ Window > world settings > Gamemode override: thridperson gamemode 선택
플레이어는 character calss 상속
┖ 기본 컴포넌트로 CHARACTER MOVEMENT
┖ (일반적: 인간형) 루트 컴포넌트로 캡슐 콜리전, 현재 어느쪽을 향하고 있는지 알려주는 애로우 컴포넌트
┖ 기본적으로 character class 가 상속받는 것으로 삭제 불가능
┖ 캐릭터 외관 설정 > 스켈레탈메시 컴포넌트 > SK_Mannequin
[ERROR]
☁ UDP Socket Plugin + Version Crash
Assertion failed: Socket != nullptr [File:E:\Media\Epic Games\UE_5.1\Engine\Source\Runtime\Networking\Public\Common\UdpSocketReceiver.h] [Line: 53]
UnrealEditor_UDPWrapper
UnrealEditor_UDPWrapper
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_CoreUObject
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_Engine
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor_UnrealEd
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
UnrealEditor
kernel32
ntdll
☁ [project name] could not be compiled. Try rebuilding from source manually.
UDPWrapper 가 Unreal 4 버전만 있어서 소스를 빌드해 사용했지만 현재 5.1 버전에 해당하는게 있다.
그치만 뭔가 안맞는지 실행할때마다 자꾸 죽어버리는 프로그램
☞ Visual Studio Installer > C++ 사용한 데스크톱 개발 / .NET 데스크톱 개발 설정 확인
☞ 컴퓨터 재시동..
☞ 될 때까지 계속 실행시키면 가끔 켜질 때도 있음
☞ 저장/컴파일 하기 전에 뭐 순서에 맞게 빌드해줘야된다는 글을 봤는데 >> 잘 모르겠음
☞ 프로젝트 파일 Saved, Intermediate 폴더 삭제 후 재실행 >> 된다는 사람도 있던데..
[REFERENCE]
❍ docs1
❍ Absolute / perfect orientation out of IMU (video)