먼저 선행학습!
3.0 아바타의 원리 (이론)
아바타 만들래? - 4. 애니메이션 오버라이드
전 강좌에서도 추천한 글들이지만 이거 3개는 기본이라고 생각하고 있음
일단 유니티의 애니메이터에 대한 지식이 부족한 상태에서 진행하는 것이기 때문에 오류가 있을 수 있음. 잘 아시는 분들은 적극적으로 지적해주시면 감사하겠음
여기서는 예시를 두개를 들어볼 예정임
하나는 단순히 애니메이션 1에서 애니메이션 2로 이동하는 형태
나머지 하나는 애니메이션을 여러개 사용해서 parameter의 수치에 따라 변화되는 형태
일단 둘 다 원리는 같은데 블랜더 트리를 사용하는데 약간의 차이점이 있기때문에 예시를 추가로 드는 형태가 될 예정임
먼저 머리길이 줄이는 예제부터!
1. 파라메터 및 메뉴 추가
3.0으로 옷장을 만들어보자! (옷 바꿔 입기)
이걸 참고해주세요. 2번인 메뉴와 파라메터 적용까지만 보면 됨
이번에 추가한 파라메터의 이름은 HairLength입니다. 이 이름은 저번 강좌에서도 말했지만 원하는대로 만들어도 상관없음
다만 이번의 경우에는 옆의 글자가 Int가 아닌 Float여야 함. 이유는 2번에서 설명함
2. Radial puppet 컨트롤 추가
원하는 메뉴에 Add Control로 Control을 하나 추가하고 Type을 Raidal Puppet으로 지정.
설명에도 써있지만 이 컨트롤은 0부터 1사이의 소수점 값을 파라메터로 받게 됨. 아까 위에서 float로 지정하라는것도 그 이유.
컴퓨터에서 숫자를 표현할때 Int는 0,1,2,3...이런식으로 소수점이 없는 숫자를 표현할때 쓰고 float는 0.1,0.2,0.3같이 소수점이 있는 숫자를 표현할때 씀. 이 부분은 이해가 안간다면 넘어가도 좋음
암튼 컨트롤을 만든 후 Parameter Rotation에 아까 생성한 HairLength 파라메터를 적용시켜주면 됨
3. 애니메이션 만들기
이 강좌에선 티엔의 머리카락 길이를 조절하는 컨트롤을 만들거기때문에 티엔 머리의 쉐이프키를 사용할거임
먼저 이 경우엔 애니메이션이 두 종류가 필요함.
하나는 HairLength값이 0일때의 머리카락 상태와 HairLength값이 1일때의 머리카락 상태의 애니메이션이 필요한거임
변하는 과정같은건 넣을 필요 없고 고정상태이기만 하면 됨
이건 1일때의 애니메이션
이건 0일때의 기본 상태
만드는법은 다른 강좌를 참고하길바람.
그냥 애니메이션 파일 만들고 아바타 복제한다음 애니메이션 파일 드래그&드랍하고 녹화 눌러서 쉐이프키 바꿔주면 됨. 저 위에 선행학습에도 있고 내가 쓴 옷장 강좌를 참고해도 좋음
4. 애니메이터에 반영
쉐이프키를 변경할거기때문에 FX레이어를 사용할거임
파라메터를 추가해주고 여기서도 float으로 맞춰주고 파라메터 이름도 똑같이 맞춰줌
레이어를 추가해주고 이름은 적당히 지어주면됨.
Weight는 1
그다음 레이어 오른쪽 공백에 오른쪽 클릭을 하면
이렇게 메뉴가 뜨는데 여기서 From New Blend Tree를 선택해서 State를 만들어줌
새로 생성된 State를 더블클릭하면
이런 화면이 뜰거고 여기서 우측상단의 Parameter를 HairLength로 선택해주고
아래 더하기 버튼을 눌러서 모션 필드를 두개 추가해줌
여기서 Motion에 아까 준비한 애니메이션을 넣어주면 됨. Threshold가 0인곳에 기본을 넣어주고, 1인곳에 변화 완료된 애니메이션을 넣어주면됨
정상적으로 적용되었다면 이렇게 다이얼을 통해서 아바타가 동적으로 변화하는걸 볼 수 있음
이 다음에는 아바타 업로드를 해서 실제로 정상동작하는지 확인해보면 끝임
EX) 응용편 : 애니메이션 여러개를 순서대로 반영
예시로 들었던 날개 접고 투명하게 하는 기능은 애니메이션을 총 3개를 사용했음
하나는 기본날개
하나는 날개 접은형태
나머지 하나는 접은상태에서 투명화 적용
투명화 적용은
이런식으로 애니메이션에서 Add Property나 녹화버튼을 사용해서 쉐이더 파라메터를 바꿔줄 수 있음.
아바타 옷 색같은거 바꾸는것도 이걸 응용해서 할 수 있긴할거임
이번 경우에는 날개를 반투명 상태로 만들 예정이기때문에 유니티쨩 쉐이더의 transparency 파라메터에 -0.8을 부여했음
접히는 애니메이션도 그냥 1프레임만 준비하면 충분함
이렇게 3종류를 준비해서 아까 추가한것처럼
이런식으로 추가해주면 됨. 여기서 Automate Thresholds를 해제해주면 Threshold값을 원하는대로 줄 수 있는데
이런식으로 설정하면 다이얼을 80%까지 돌리면 날개가 접히고 80에서 100까지 가는동안 투명화가 점진적으로 진행될거임
이 예시도 보면 80퍼까지는 접히는 동작이 진행되고 그 이후부턴 투명화가 진행됨
다만 이 경우에는 상대의 세이프티설정에서 쉐이더가 꺼져있으면 접히는 동작까지만 보이게 될거임. 이건 어쩔수없긴하지만...
이걸 응용해서 애니메이션을 여러개 넣으면 좀 더 다양한것도 구현 가능할거임