상세 컨텐츠

본문 제목

Hiking: 7주차 발 궤적 실시간 수정

Computer Graphics/Hiking

by Banjosh 2025. 5. 16. 14:46

본문

지난주, walk 애니메이션에서 발과 땅의 offset을 이용해 100% IK로 걷게하는 작업을 하였다.

 

하지만 이 방법의 문제점은 다음과 같았다.

 

 

 다음과 같이 현재 땅과의 offset을 애니메이션 기반으로 유지하려다 보니 발을 목표에 맞게 궤적으로 올리는 느낌이 아닌 슬라이딩해서 올려놓는 느낌이란 것이다.

 

그리고 지난주 문제가 또 있었다.

이동이 불가한 지형을 만났을때 캐릭터가 멈추지 않는다는 것이다.

 

앞이 막혀있는 경우

 

앞에 길이 없는 경우

 

 

위 문제들은 다음 step을 예측하여 이동 가능여부를 판단하고 궤적을 그려 이동하면 전부 해결될 것이라 생각했다.

 

 따라서 이번주는 다음 step을 예측하여 궤적을 그리고 이에 맞게 이동하는 것을 구현하였다.

 

 

 

다음 Step 예측 및 궤적 생성

우선 다음 Step은 현재 이동 방향 + 현재 이동 속도 + 애니메이션의 왼발 혹은 오른발이 땅에 닿는 지점을 통해 구할 수 있었다.

 

이를 이용해 궤적을 생성하여 다음 step으로 이동하는 것을 구현하였다.

하지만 이렇게 이동을 해도 발생하는 문제가 있었다.

 

다음 step으로 이동하는 도중에 장애물이 있어도 인지하지 못한채 진행하는 것이다.

 

 

 

따라서 다음 step을 구하고 궤적을 생성하는 경우 다음 과정을 거친다.

 

1. 다음 step 까지 장애물이 있는지 Raycasting을 통해 확인 (이분 탐색을 이용하여 Raycasting 횟수를 최소화)

2. 만약 장애물이 있다면 해당 위치를 target으로 변경 후 궤적 생성

3. 장애물이 없다면 다음 step까지 궤적 생성 

3. 만약 장애물에 도착했거나 캐릭터의 방향이 바뀐 경우 다시 다음 step까지의 궤적 다시 계산

 

다음은 위 내용들이 적용된 영상이고 디버깅 렌더링에서 노란색은 궤적 계산시 출발 위치, 자주색은 궤적 계산시 도착위치를 표시한다.

 

 

 

이동 불가 지역 처리

이동 불가 지역은 2가지 방법으로 처리를 시도하였다.

 

하나는 다음 스텝 위치에서 Raycasting을 시도하여 실패하는 경우 움직임을 멈추는 것이고, 또 다른 하나는 현재 몸 앞쪽으로 Raycasting을 시도하여 성공하는 경우 움직임을 멈추는 것이다.

 

둘 다 적용해 봤지만 결과가 깔끔하지 않았다.

다음과 같이 앞이 막혀있음에도 그전에 다리를 올려리는 동작이 나오다가 마는 불연속 동작이 발생하기도 하고

 

다음 Step이 현재 속도에 비례해서 나오다 보니 한번 막히고 다음에 속도가 줄어들어 한번 더 앞으로 갔다가 멈추는, 즉 버벅이는 현상도 나온다.

 

 

이것 외에도 진행 불가시 100% 애니메이션으로 전환되기 때문에 다시 원래 IK로 돌아오는 과정에서 부자연스러운 부분등의 많은 문제가 발견되었다. 다른 이동 제한 처리 방법을 생각해봐야겠다.

 

 

또 다른 문제점 

 이 외에도 경사가 바뀌는 지형을 걸어다니다 보면, 발 위치를 기반으로 속도를 조정하는게 아니다 보니 발의 각도가 계속 부자연스럽게 바뀌고, 시작 위치에서 도착위치까지의 발 각도 보간이 이루어지지 않아 부자연스럽게 움직이는 발목의 모습도 보인다.

 그리고 높은 각도에서의 발목 처리가 인간으로서 나올 수 없는 모습이 나오는 등의 모습도 있다.

 

 

다음주가 마지막주이기 때문에 너무 급하게 구현하려다 보니 많은 에러가 발생한 것 같다.

 

현재 Ragdoll 추가 작업을 진행중인데 우선 진행을 멈추고 현재 오류들부터 해결해볼 생각이다.

관련글 더보기