

이터니티 개발 관련 공식 자료를 아카이빙 하기 위한 페이지입니다.
왜 앉지를 못하니?
안녕하세요~! 체어킹 입니다.
이번 글에선, 자연스러운 의자 앉기를 위해 고군분투한 과정을 소개 드리고자 합니다.
재밌게 봐주세요~ 꾸벅~!
현 상태의 의자 앉기, 어떤 점이 아쉬울까?
"의자 근처에서 휴식을 하면, 다가가 자연스럽게 앉았으면 좋겠어요."
이 말은 의자 앉기 모션을 개발하기 위한 첫 미팅에서 들었던 의견입니다.
자연스럽게 앉는다는 것은 어떤 의미일까요?
앉기 | 서기 |
|
|
갑자기 앉을 위치와 자세로 휙 바뀌고, 다리도 의자에 묻혀 있고... | 의자에 파묻힌 채로 서기도 합니다 |
현재 플레이오네 엔진 상황을 살펴보니, 앉기와 서기 동작에서 문제가 있었습니다.
갑자기 위치가 휙 바뀌고, 다리가 의자에 파묻히는 어색한 모습이 보였죠.
왜 이런 일이 생길까요?
캐릭터마다 키와 다리 길이가 다르고, 의자 크기도 제각각이기 때문인데요.
어떻게 해야 자연스러울지 고민해 보고 계획을 세워봅니다.
자연스러운 앉기 구현을 위한 개발 포인트
1.앉기 시작 위치
●다리 길이가 서로 다르기 때문에, 작은 캐릭터는 더 가까운 위치에서,
큰 캐릭터는 조금 더 떨어진 위치에서 앉기 시작해야 자연스러울 것 같습니다.2.앉기 준비
●앉기 시작 위치와 방향으로 한 번에 휙 돌지 않도록, 부드럽게 보간을 해 주면 보다 자연스러울 것 같습니다.
3.앉기
●엉덩이 위치를 의자 높이에 맞추되, 한 번에 이동시키지 않고 모션이 진행되는 동안 서서히 보간하면 자연스러울 것 같습니다.
4.앉기 도착 위치
●작은 캐릭터는 의자 앞쪽에, 큰 캐릭터는 좀 더 깊숙한 위치에 앉게 해야 자연스러울 것 같습니다.
5.앉았을 때 높이
●작은 캐릭터의 발이 바닥에서 뜨는 것은 괜찮지만, 큰 캐릭터의 발은 땅에 파묻히게 됩니다.
●캐릭터의 발 위치와 각도를 지형에 맞춰 자연스럽게 조정하는 기능인,
Foot IK를 활용해 발을 땅 위에 있게 해줘야겠습니다.6.서기
●보정했던 위치에서 다시 돌아갈 때도 보간을 사용해야 부드럽게 동작이 연결됩니다.
7.섰을 때 위치
●서기가 끝났을 때는 앉기 시작했던 위치로 돌아가도록 처리하면 전체 과정이 매끄럽게 연결될 것 같습니다.
이렇게 일곱 가지 요소를 적용하면 훨씬 자연스러운 동작이 될 것입니다.
"아, 그리고 휴식 스킬을 사용 했을 때 반경 5m내에 의자가 있으면 찾아가 앉을 수 있어야 합니다!"
...이런. 제가 놓친 부분이 있었네요.
'0. 의자에 앉기 위해 다가가기' 를 추가해봅니다.
이제 총 여덟 개의 목표를 달성하면 자연스러움을 구현할 수 있겠지요?
0. 의자에 앉기 위해 다가가기
■'이건 간단하지. 그냥 다가가면 되잖아?' 라고 생각했으나...
■

(아니!)■캐릭터 최대 충돌 박스 크기를 고려해 네비게이션 메시(캐릭터가 이동할 수 있는 영역)를 생성하다 보니,
의자에 접근할 수 없는 경우가 생겼습니다.■결국 담당자 분께 사정을 말씀 드려 의자 충돌 박스를 조절하고 다가갈 수 있는 의자로 수정을 합니다.
■마음이 편해졌습니다. 이제 다음으로 넘어가 봅니다.
1. 앉기 시작 위치
■작은 캐릭터(예: 10살 인간)와 큰 캐릭터(예: 17살 자이언트)는 키 차이가 큽니다.
■작은 캐릭터는 의자 가까운 위치에서, 큰 캐릭터는 상대적으로 다리가 길기 때문에
더 먼 위치에서 앉기 시작해야 합니다.■이러한 다양성은 데이터 애셋을 만들어 종족별, 나이별로 설정할 수 있도록 했습니다
2. 앉기 준비
■앉을 때 바라보는 방향은 의자 방향, 즉 의자에 다가갔던 방향 반대쪽이 되어야 합니다.
■또 길찾기로 앉을 위치까지 이동했더라도 약간의 오차가 발생할 수 있어, 이 위치 오차도 보간으로 맞춰줍니다.
■이 과정은 약 0.2초 정도의 시간을 줘서 자연스럽게 처리합니다.
3. 앉기
■앉는 모션을 재생하면서 동시에 엉덩이 위치를 의자의 앉는 위치에 서서히 맞춥니다.
■플레이오네 엔진에서는 앉기 전에 높이를 맞추는 과정에서 튀는 현상이 있었는데,
애니메이션 중 목표 위치까지 보간으로 이동시키는 추가 처리를 해 개선했습니다.
4. 앉기 도착 위치
■1. 앉기 시작 위치와 같은 이유로, 작은 캐릭터는 의자 앞쪽에, 큰 캐릭터는 의자 안쪽에 앉도록 설정했습니다.
■이 역시 데이터 애셋에서 종족별, 나이별로 조절할 수 있게 했습니다.
5. 앉았을 때 높이
■큰 캐릭터는 엉덩이를 의자에 맞춘 순간 다리가 땅에 파묻히는 문제가 발생합니다.
■캐릭터의 발 위치와 각도를 지형에 맞춰 자연스럽게 조정될 수 있도록,
Foot IK 기능을 사용해 다리를 자연스럽게 들어 올리도록 했습니다.
6. 서기
■서는 모션을 하는 동안 다시 원래 위치로 돌아갑니다.
■제자리에서 서기만 하면 서기가 끝났을 때 의자에 묻힌 상태가 되기 때문에,
위치 보간을 통해 자연스럽게 서도록 처리했습니다.
7. 섰을 때 위치
■목표 위치는 처음에 앉기 시작한 위치로 설정합니다.
그 결과...
인간 열살 | 자이언트 열일곱살 |
|
|
앉고 서는 동안의 보간을 적용한 결과 | 발에 Foot IK를 적용해 땅 위에 있도록 처리한 결과 |
훨씬 자연스러워졌습니다!
추가적으로, 원래 IK는 큰 키로 인해 앉았을 때 다리가 땅에 묻히는 경우에만 사용하려고 했지만, IK가 생각보다 잘 동작해 키가 작은 캐릭터에게도 적용해 보았습니다.
인간 열살 IK |
|
짧은 다리를 힘껏 뻗어 앉으려는 모습이 귀엽긴 하지만, 10살 키에는 너무 높은 의자였는지 부자연스러운 연출 구간이 있네요.
힘겹게 앉기 보다는, 자연스러운 연출을 위해 점프해서 앉는 모션을 추가하는 등 개선의 여지가 있어 보입니다.
앞으로도 ‘더욱 자연스러운 의자 앉기’를 위해 계속 개선해 나가겠습니다!
이상 체어킹 이었습니다. <(O_O)
이터니티 개발 관련 공식 자료를 아카이빙 하기 위한 페이지입니다.



















































