글

9월, 2026의 게시물 표시

내일배움캠프 148일차 - 최종프로젝트 38일차:

내일배움캠프 147일차 - 최종프로젝트 37일차:

내일배움캠프 146일차 - 최종프로젝트 36일차: 스킬 사용 시 AOE형 파티클을 추가해보자

이미지
스킬 사용 시 파티클을 추가해보자 스킬의 효과에는 여러가지 종류가 있다. 자신만 적용되는 스킬이라던가, 타인에게 적용되는 스킬 등이 있을텐데, 여러가지 차이를 가지고 있더라도 스킬들의 대부분의 공통점은 시각 이펙트가 발생 한다는 것이다. 그중에서도 고유한 영역을 가지고 범위 내 대상에게 효과 를 주기도 하는데, 이를 AOE(Area Of Effect) 라고 한다. AOE의 특징은 이펙트가 존재하는 영역 내에 있으면 효과를 받는다. 이 문서에서 AOE의 영향범위 만큼 이펙트를 적용하는 방법 을 알아보도록 한다.

내일배움캠프 145일차 - 최종프로젝트 35일차: 애님몽타주의 슬롯을 이용한 상·하반신 애니메이션 분리 재생

이미지
애님몽타주의 슬롯을 이용한 상·하반신 애니메이션 분리 재생 일반적으로 연속되는 애니메이션을 재생할 때는 State Machine 을 사용하지만, 단발성 애니메이션을 재생할 때에는 애님 몽타주 를 사용하게 된다. 애님 몽타주 는 스켈레탈 메시 내에 저장된 애님 슬롯 을 통해 재생하는데, ABP(애니메이션 블루프린트) 에서 애님 슬롯을 노드로 할당하여 재생할 수 있다. 예를 들어, 기존 State Machine 을 통해 애니메이션을 출력하는데, 중간에 DefaultSlot을 노드로 할당할 경우, 몽타주 재생 시 DefaultSlot에 할당되었던 애님 몽타주 가 State Machine 으로 출력된 애니메이션을 오버라이드한다는 것이다. State Machine의 애니메이션 포즈를 애님 몽타주 슬롯으로 덮어 씌울 수 있다. 나는 여기서 상반신만 몽타주를 재생할 예정이기 때문에 애님 몽타주 슬롯의 이름을 UpperBody로 고쳐 쓰도록 한다. (상반신만 움직일 몽타주 슬롯이라는 의미) Layered blend per bone 노드를 활용한 상/하반신 애니메이션 별도재생 최종 애니메이션을 출력하기 전에 하반신 전용 애니메이션을 생성하도록 한다. Layered blend per bone 을 사용하면 지정한 본 부터 애니메이션을 추가로 담을 수 있게 된다. 해당 노드에 대한 자세한 사용법은 다음과 같다. 분기 필터로 지정된 본 (녹색), 해당 분기의 영향을 받는 본 (하얀색) Layered blend per bone 선택 시 디테일 창에서 분기 필터를 지정할 수 있게 되는데, 스켈레탈 메시의 원하는 본을 지정하면 해당 본부터 노드의 영향을 받게 된다. 지정 본이 1단계 본, 자식 본으로 내려갈 수록 단계가 올라 갈 때 ,  뎁스 블렌드 에 따라 받는 영향은 다음과 같다. 뎁스 블렌드 [0]: 기본값. 지정 본을 포함한 모든 하위 본에게 가중치 1 적용. (애니메이션을 완전히 따라감) 뎁스 블렌드 [양수 n]: (1단계 본)지정 본 가중치 1/n 부터 ...

내일배움캠프 143일차 - 최종프로젝트 33일차: 버프효과 적용 완료 및 버프 적용시 오류 수정

이미지
버프효과 적용 완료 및 버프 적용시 오류 수정 커맨더 유닛이 스킬을 사용할 때, 피아를 식별해 조건에 맞는 유닛/건물 중 대상자를 골라 버프를 적용시키는 로직 적용. 1.  특정 액터 에게 버프를 추가한 직후 버프 시작 함수를 실행 2.  UBuffComponent 에서 시간 만료를 체크 2-A. 시간이 남아있다면 버프 중 함수 실행 2-B.  시간 만료 시 버프 종료 실행 버프 적용시 버프시작/버프종료/버프중 세 가지 람다함수를 실행 하며, 함수의 실행시점은 주로 버프 컴포넌트에서 제어 한다. 버프 컴포넌트에서는 float기반 타이머를 매 프레임마다 DeltaTime만큼 차감하며, 주어진 시간(Time) 이나 간격(Interval) 의 남은 정도에 따라 버프 종료 를 실행하거나, 버프 중 함수를 실행한다. 버프의 효과를 적용할 때마다 컴포넌트의 Tick에서 모든 버프의 총합 수치를 합산 하여, 최종 값을 실제 능력치 적용값으로 반영 한다. 버프 적용 시 Tick의 호출빈도 제어 버프의 적용수치를 제어하는 Tick의 리소스 빈도를 최소화. 기본적으로 버프가 존재할때에만 Tick을 호출 하며, 버프의 최종 적용값만 변수에 실시간으로 저장 하면서, 실제 적용은 버프수치가 변동되는 타이밍 인 버프시작 , 버프종료 시점에만 적용 하는 방식을 통해 변동없는 수치를 매 틱마다 적용하는 무의미한 호출을 줄였다.

내일배움캠프 141일차 - 최종프로젝트 31일차: 상태효과를 실제 적용해보자

이미지
상태효과(Buff, Debuff)의 실제 적용 이전 TIL 에서 상태효과에 대해 정의했을 때, 버프를 관리하는 액터 컴포넌트를 만들어 목록을 관리했었다. 그렇다면 버프 스탯의 실제 적용은 어떻게 구현하는지, 상태효과를 실제 적용하면서 코드가 어떻게 변경되었는지도 알아보도록 하자. FTimerHandle방식은 버프를 관리하기 어렵다. 이전에 상태효과를 정의했을 때는 타이머/틱 핸들을 사용해서 시간이 만료되는 대로 Delegate를 실행하는 방식을 사용했었다. 하지만 이 방식은 버프의 종합 스탯을 정리하는 과정에서 문제가 발생하는데, 타이머 함수가 "언제 실행되는가"를 알 수 없었기 때문이다. 내가 사용하는 버프의 적용방식은 매 틱마다 스탯의 초기값을 저장해두고, 한 프레임 내에 적용되는 버프 수치를 종합해서 구한 최종 수치를 캐릭터에게 적용하는 방식이다. 하지만 핸들방식을 사용하면 틱 마다 적용될 타이머 함수가 언제 실행 될 지 알 수 없어 위 사진의 순서대로 "현재 수치를 쌓아 올려서 최종적용"하는 방식에 어울리지 못한다. 때문에 FTimerHandle을 사용하는 대신 float 시간값을 직접 제어하는 일반적인 방법을 사용하기로 한다. 직접 시간 값을 만들어 제어

내일배움캠프 140일차 - 최종프로젝트 30일차: 인간세력 지휘관의 애니메이션 작업 완료

이미지
에테리안(인간) 세력 지휘관 애니메이팅 완료 며칠에 걸친 애니메이션 작업이 완료되었다. 이전 TIL에서 언급된 것처럼 본의 제약(Constraint)를 사용한 지팡이 공중부양을 활용하였고, 또한 스킬 사용 시 지팡이가 부유하면서 회전하는 효과는 기존 쿼터니언 회전에서 오일러 회전으로 변경해 720도 가량 회전시켰다. 텍스처 얼룩을 제거하기 전(좌) 텍스처 얼룩을 제거한 후(우) 또한 애니메이션 작업을 끝마치고 언리얼 프로젝트에 추가하는 과정에서 AI로 생성한 모델링의 텍스처 얼룩을 제거하였다. 덕분에 이전보다 깔끔해진 모습을 보여준다.

내일배움캠프 139일차 - 최종프로젝트 29일차: 인간세력 지휘관의 애니메이팅

이미지
  에테리안(인간) 세력 지휘관 애니메이팅 신관 컨셉의 지휘관 캐릭터의 애니메이션 작업 중. 지팡이를 들고 있으나 스킬 사용 시 지팡이가 공중에 뜨는 효과 도 넣고 싶었기 때문에 다음과 같은 옵션을 추가함. 1. 지팡이가 위치한 본의 실제 부모를 두지 않되 , 대신 본의 제약(Constraint) 옵션에서 오른손 본을 부모 로 두고 평소에는 제약의 영향을 1로 두어 오른손에 종속 시킴. 2. 지팡이가 손을 떠나는 상황이 될 때 본을 우클릭→Visual Transform을 키프레임으로 적용 시켜 기존 제약을 포함한 트랜스폼을 키 프레임으로 저장하고 본의 제약의 영향을 0으로 설정시켜 오른손으로부터 종속을 떠나보낸다. 이렇게 하면 본의 트랜스폼이 크게 변하지 않고 영향을 설정할 수 있다. 이후 지팡이의 부유하는 위치를 설정하면 된다.

내일배움캠프 138일차 - 최종프로젝트 28일차: 인간세력 지휘관 에셋 추가와 클로딩 툴

이미지
에테리안(인간) 세력 지휘관 에셋과 클로딩 요근래 넥토리얼 지원을 위한 자기소개서를 준비하느라 며칠간 TIL를 작성하지 못했다. 면접을 본 이후 주말부터는 시간이 비교적 여유가 생기기 때문에 TIL을 다시 작성할 수 있을 것 같다. 또한 그동안 일정문제로 계속 미뤄졌던 에테리안 지휘관의 스키닝을 마치고 스켈레탈 에셋을 추가 하였다. 이전에 갑옷과 가죽으로만 이루어진 비스트세력의 지휘관과 달리 에테리안 세력의 지휘관은 천옷을 입고 있기 때문에 자연스러운 움직임을 보이려면 천옷 특유의 물리를 구현 해야 했다. 천옷의 움직임을 구현하기 위해서 천옷 곳곳에 본을 박아넣어 본을 시뮬레이션해도 되겠지만 이 경우 본에도 스키닝을 해야해서 많은 시간 리소스를 잡아먹게 된다. 그 대신 언리얼 엔진에서 자체적으로 제공하는 클로딩 툴을 이용 해보기로 했다. 클로딩 툴의 기본적인 이용 방법 클로딩 툴은 UE5에서 제공하고 있는 새로운 기능이다. Skeletal Mesh 에셋에서 툴을 사용할 수 있으며, 클로딩 효과는 피직스 에셋의 콜리전을 따라간다. 클로딩은 머티리얼 단위로 적용되며, 원하는 머티리얼이 적용된 부위를 찾아 우클릭 후 클로딩 데이터를 생성 하면 그 안에서 클로스 페인팅 을 활성화할 수 있다. 클로스 페인팅은 기본적으로 Max Distance 마스크 를 통해 물리를 구현하게 되는데, 0에 가까울 수록 버텍스가 고정 되어 있고, 100에 가까울 수록 중력에 의해 버텍스가 축 늘어진다 . 천옷 소재라고 100의 값을 주는 것이 능사가 아니다. 허리춤 등의 본을 따라가는 버텍스와 가까울 수록 0을 주고, 천옷이지만 어느정도의 강도가 있는 재질이라면 최대값을 1~5 사이로 주는 것이 옳다. 페인팅 값의 점진성을 위해 Gradient 값을 줄 수 있다. 클로스 페인팅에서 Gradient 페인트 툴을 활성화 하고, 시작점 이 되는 본을 따라가는 부분을 좌클릭으로 지정 하고, 끝점 이 되는 천 끝 부분을 Ctrl+좌클릭으로 지정 할 수 있다. 만약 잘못 지정했다면 Ctrl+Shi...

내일배움캠프 132일차 - 최종프로젝트 22일차 & 자기소개서 준비

이미지
에테리안 세력 지휘관 리깅작업 에테리안 세력의 지휘관 캐릭터에 본을 추가하고, 이후 스키닝 시 웨이트가 튀는 정도를 최소화하기 위해 파츠별로 분리해 정리하였다. 스키닝까지 진행하고 싶었지만, 넥토리얼 인턴십 신청을 위해 자기소개서를 정리하다보니 오늘은 비교적 진행이 많이 더뎌졌다. 이에 대한 아쉬움은 주말 때 미룬 만큼 열심히 작업에 임해야 할 것이다. 이력서 준비 - 자기소개서 올해 넥슨에서 인턴십 신입을 채용하기 위해 넥토리얼이라는 모집 프로그램이 시작되었다. 이 모집에 신청하기 위해 넥토리얼 측에서 요구하는 이력서를 준비하게 되었는데, 과거 참여했던 프로젝트에 대한 정리와 자기소개서에 대한 준비가 시급하여 이에 대해 며칠 간 고민을 하고 작성하고 있다.

내일배움캠프 131일차 - 최종프로젝트 21일차

이미지
작업해야할 목록: 에테리안 세력 지휘관 최근에 전달받은 에테리안 세력의 지휘관 캐릭터 리깅, 스키닝 작업하기. 애니메이션 작업도 할 수 있으면 좋음. 여러 군데에 AI로 작업한 것이 느껴지는 텍스처 얼룩이 많이 남아있음. 단색으로 칠해주는 것이 좋아보임. 신관 컨셉의 캐릭터임. 지팡이를 쥐어주면 좋을 듯.