2024년 2월 13일 화요일

Unity - 원하는 모델에 외부 애니메이션 적용하기 (Mixamo)

 

개발하면서 유니티 에셋 스토어에서 좋은 모델링을 찾았는데

모델의 애니메이션이 다양하지 않아 버려야 했던 경험이 있지 않았나

이제는 갓사모에서 해결하자

 Mixamo

단, 사람 형태만 가능



오른쪽에 Upload를 누른다.



애니메이션을 적용하고 싶은 외부 모델을 끌어다 놓는다.

웬만하면 Fbx로



다음 오토리깅을 해준다. 

마커들을 알맞은 위치에 배치하고

하단의 Skeleton LOD에서 손가락 개수를 선택

(손가락이 움직이는게 싫어서 No Finger로 진행함)



위 화면없이 다음으로 진행되는 분들은 이미 뼈대가 있는 모델은 사용했기 때문임

그런데 제대로 리깅이 안돼는 분들은

 3DS Max든 프로그램을 사용해서 뼈를 제거하면 된다.





3DS Max로 열면 이렇게 나온다

이 모델은 Dummy?로 작업한걸로 보인다.




하위 모든 본을 선택해서 지워준다.

맨위에꺼만 삭제되서 선택 꼭 해주길




Mesh를 눌러 남아있는 더미 데이터를 제거

이걸 안하면 나중에 Export 할 때 오류가 난다.




Export로 수정한 파일을 저장해준다.




기본 설정 그대로 내보내도 오류 없었음

이후 위의 오토리깅을 다시 해주면 된다.




잘 적용된다.

2024년 2월 7일 수요일

Unity - Animator Parameter


유니티에서 애니메이션을 전환할 때 사용하는 중요한 요소인 파라미터는

 어느 시점에서 사용하면 될지 잘 모르겠는 것들이 있다.




총 네가지가 있고 체감상 Float을 가장 자주 사용하는 것 같다. 

Float과 Int는 플레이어가 일정 수치 초과하거나 미만일 때 

해당 애니메이션으로 변경하고 싶으면 사용하면 된다.



말 그대로 해당 수치를 포함하지 않음 

예를 들어 플레이어 속도가 0 이상이면 달리는 모션을 취하게 만들고 싶으면


Make Transition으로 경로를 만들고


인스펙터 창에서 이렇게 설정하면 된다.


Bool의 경우는 특정 조건에서만 다음 애니메이션으로 전환하기 위해 사용된다.

예를 들어 플레이어가 땅에 닿아 있을 때만 착지하는 모션을 

취하게 하고 싶을 때 사용하면 된다.




Trigger는 이벤트처럼 갑자기 죽거나 점프하는 모션이 

튀어나와야 할 때, 갑작스러운 상황에서 사용하게 된다.




이런 파라미터들에 값을 전달해야 할 때 두가지 방법이 있다.


이렇게 String으로 파라미터를 찾아서 값을 전달하는 방식과


미리 해시값을 int 변수에 저장한 다음에 int값으로 전달하는 방식이다. 

어느쪽을 사용하든 상관은 없는데 String으로 파라미터를 찾는 방법은

찾는 속도가 더 느리므로 후자를 추천





c++ thread.h

 c++에서 쓰레드 돌릴려면 thread.h 헤더를 쓰면 되는데 이 친구는 쓰레드가 아직 실행 중인지, 아니면 강제 종료하거나 하는 함수가 없어서 조금 아쉬운 애다. std::thread 는 로컬 변수로 선언하든 new 동적 할당을 하든 start 함...