본문 바로가기

전체 글

(68)
[UE] AnimToTexture 플러그인 (3) : 베이킹 과정 분석 이전글: https://wanttoplay.tistory.com/183 [UE] AnimToTexture 플러그인 (2) : 매터리얼 분석1. ML_BoneAnimationML_BoneAnimation은 크게 (1)재생할 애니메이션 프레임을 정하는 부분과 (2)해당 프레임의 정보를 읽어서 Normal과 WPO로 계산하는 부분으로 나뉨.프레임 계산 부분은 크게 어려운 부분이wanttoplay.tistory.com앞에서 베이킹시 엔진에서 제공하는 기능이 아닌 AnimToTextureHelpers를 사용하였지만 이건 세팅만 편하게 해주는 것일 뿐 베이킹시 실행되는 함수나 기능은 동일하므로 이걸 기준으로 설명.1. AnimToTextureDataAsset 설정베이킹에 필요한 데이터는 기본적으로 AnimToTex..
[UE] AnimToTexture 플러그인 (2) : 매터리얼 분석 이전글: https://wanttoplay.tistory.com/182 [UE] AnimToTexture 플러그인 (1) : 개요 및 사용법1. AnimToTexture란?언리얼 엔진의 Vertex Animation 기술.애니메이션 데이터를 텍스쳐에 압축 후 매터리얼에서 WPO(World Position Offset)를 통해 일반적인 스태틱 매쉬에서도 애니메이션을 재생.애니메이션wanttoplay.tistory.com1. ML_BoneAnimationML_BoneAnimation은 크게 (1)재생할 애니메이션 프레임을 정하는 부분과 (2)해당 프레임의 정보를 읽어서 Normal과 WPO로 계산하는 부분으로 나뉨.프레임 계산 부분은 크게 어려운 부분이 없으므로 생략. BlendBonePositionAndN..
[UE] AnimToTexture 플러그인 (1) : 개요 및 사용법 1. AnimToTexture란?언리얼 엔진의 Vertex Animation 기술.애니메이션 데이터를 텍스쳐에 압축 후 매터리얼에서 WPO(World Position Offset)를 통해 일반적인 스태틱 매쉬에서도 애니메이션을 재생.애니메이션 계산을 CPU에서 GPU로 옮기는 최적화로 군중 같은 대량의 애니메이션이 필요할 때 유용. 2. 사용 방법1) 플러그인 활성화Plugins에서 AnimToTexture 검색 후 플러그인 활성화.2) AnimToTextureHelpers 다운로드AnimToTexture 플러그인에 있는 기존의 시스템을 사용해도 되지만 사용성이 좋지않음.Kevin Romond라는 해외 유튜버가 만든 자동화 에디터 툴을 활용하는 걸 추천.Github(https://github.com/kr..
Rigify를 게임 애니메이션용 리깅으로 사용하지 않는 이유 요약: 돈 주고 Rigify 사용하느니 AutoRigPro를 사자. Rigify는 Blender 빌트인 무료 리깅 솔루션으로 복잡한 얼굴 애니메이션 리깅까지 제공한다. Rigify 생성시 아래와 같이 IK 기능까지 딸린 컨트롤용 리그도 같이 생성해준다. 다른 애니메이션 소스로부터의 리타겟팅 또한 Rokoko 무료 애드온을 사용한다면 쉽게 해결이 가능하다. https://www.youtube.com/watch?v=5nHgYO8vzf4 문제는 게임 엔진으로 Export 할 때 발생한다. Rigify를 FBX로 Export할 시 Only Deform Bones 옵션을 사용하더라도 컨트롤용 본들도 같이 나가게 되어 불필요한 메모리 및 연산 낭비가 발생한다. 물론 이 문제를 해결해줄 애드온들은 있다. ht..
선분과 선분 교차 검사 알고리즘 CCW(Counter Clockwise) 알고리즘을 활용. CCW 알고리즘이란, 세 점의 상대적인 위치 관계를 나타낸 것으로 아래 그림 같이 3가지 경우가 있다. 각각의 경우를 판별하는 방법은 세 점으로 만들어진 두 선분의 기울기를 비교하는 것이다. 위에서 선분 ab와 bc 순으로 검사한다면 가장 왼쪽의 경우 ab의 기울기가 bc의 기울기보다 작으므로 Counterclockwise가 된다. 반대로 가운데의 경우 ab의 기울기가 더 크므로 Clockwise가 되며, 오른쪽과 같이 두 기울기가 같다면 Collinear가 된다. 선분 ab의 기울기를 x, 선분 bc의 기울기를 y로 놓고 정리하면 x Counterclockwisex > y -> Clockwisex = y -> Collinear CC..
[UE] Character Movement 최적화 ACharacter의 컴포넌트로 있는 UCharacterMovementComponent는 낙하 및 경사처리, 바닥 감지, 커스텀 이동 모드 지원 등 높은 퀄리티의 움직임과 확장성을 제공합니다. 이는 개발자가 바닥부터 캐릭터 이동 시스템을 만들지 않아도 되어 빠른 프로토타이핑으로 게임 피처를 확인할 수 있어 매우 유용한 컴포넌트입니다. 그러나 유용한 만큼 성능 또한 많이 잡아먹는 걸로 유명합니다.아래는 PS5와 비슷한 성능을 가진 Intel Core i5-12400에서 Test 빌드로 언리얼 기본 캐릭터 1마리를 간단한 장애물이 있는 환경에서 MoveTo 테스트해 보았을 때의 결과입니다. 캐릭터 1명이 평균적으로 (339.1/1424=) 0.238ms 정도를 잡아먹는 걸 확인할 수 있습니다. 일반적인 콘..
[UE] 시퀀서 관련 이슈 시퀀서는 언리얼의 시네마틱 도구로 트랙 단위로 객체를 조정할 수 있는 일종의 비주얼 스크립팅 시스템입니다. 여러 요소들을 함께 볼 수 있기에 전체적인 비주얼을 확인하는데 용이하고, 오프라인 렌더링을 지원하기 때문에 트레일러 같이 고퀄리티 시네마틱에 많이 사용됩니다. 이외에도 카메라 컷신이나 VFX가 많이 들어가는 스킬 등 시네마틱이 아닌 인게임 플레이에 사용하기도 합니다. 그러나 모든 시스템이 그렇듯 완벽한 것은 아니기에 실제 작업에서 많은 이슈들이 있습니다. 이 글에서는 특히 인게임 플레이와의 연동에서 경험한 이슈들에 대해 소개할까 합니다. 1. 루트 모션 지원 미흡루트 모션이란, 애니메이션에 있는 루트 본의 움직임으로 애니메이터가 리소스 제작 시 같이 들어갑니다. 루트 모션의 움직임은 리소스 제작시 ..
[UE] 커스텀 뎁스로 인한 오클루전 컬링 해제 이슈 레벨 최적화를 하다가 알게 된 사실이 있는데 커스텀 뎁스가 켜진 매쉬는 오클루전 컬링에서 제외됩니다. 일반적으로 벽 뒤에 매쉬를 세우면 오클루전 컬링으로 뒤에 있는 매쉬는 렌더링이 걸리지 않습니다. 렌더독으로 확인해 보면 베이스 패스에 큐브만 있는 걸 볼 수 있습니다. 벽 뒤에 있는 매쉬에 커스텀 뎁스를 활성화하고 렌더독으로 다시 보면 벽 뒤에 있는 매쉬가 찍힌 걸 볼 수 있습니다. 원인을 알기 위해 코드를 살펴봅시다. 오클루전 컬링을 할 때 SceneProxy 별로 조건 검사합니다. 그중 하나가 EOcclusionFlags::CanBeOccluded 플래그가 있는지를 검사하는 것인데 이것이 없다면 오클루전 컬링에서 제외됩니다. 해당 플래그는 SceneProxy가 추가될 때 설정됩니다. ..