12.28
페이셜 테스트
페이셜을 위해선 좀 더 복잡한 작업을 해야 한다. 셰이더를 작성하는 것에 추가로 애니메이션의 셰이프키와 셰이더의 프로퍼티를 연결하는 작업이 필요하다. 블렌더의 드라이버 기능에 해당하는 일이다. 언리얼은 머티리얼 커브라는 기능이 이를 대신하지만, 유니티는 아무래도 없는 것 같으니 만들어주자.

제목이 애니메이션 준비인데 정작 애니메이션은 들어가지도 못하고 있다. 그래도 가장 큰 산인 셰이더 컨버팅이 완료가 되었으니 이제 본격적으로 애니메이션을….들어가고 싶었는데 입셰이더에서 작은 문제가 발생했다.

저게 왜 저러지…?! 아무래도 clamp가 오작동하는 것 같은데.. 싶어서 관련코드를 지워보니

clamp문제가 맞다. 그럼 왜 이런 현상이…아… 버텍스 셰이더!
입의 셰이더 처리 대부분은 UV변형이다. 스케일, 회전, 이동등인데, 이펙트처럼 디테일한 변화가 필요없기 때문에 대부분 버텍스 셰이더에서 처리하고 있었다. 그 중엔 입의 UV를 경계에 맞게 짤라주는 clamp가 들어가 있었는데 이것을 버텍스 기준으로 처리하게 되면 당연히 입이 늘어나게 된다.

그 외 소소하게 입의 회전이 블렌더와 반대로 돌아가는 문제가 있어서 이것도 수정했다. 원인은 이것때문이다.

출처 : http://batmask.net/index.php/2022/09/13/1729/
오늘의 깨달음. 유료애드온인 핫리로드는 셰이더 코드는 리로드해주지 않는다. 유니티는 셰이더 리로드가 워낙 빠르니 안켜고 작업하면 되긴 하지만, C#과 셰이더코드 두개를 병행해 작업할 땐 살짝 불편하다.

마참내! 유니티에 띄운 앨리스. 이브, 그동안 고마웠어. 뱅가드는 조금만 더 수고하자.

드디어 준비가 끝났다! 이제 클립을 제작해보자.
This is my favorite post! Thank you for sharing this.
Is it possible you could share a new post about how you created the mouth control rig for the blendshapes in Blender, so that they can be exported in Unity, please 🤗?
죄송해요. 새로운 포스트를 쓰기엔 내용이 너무 방대할 것 같아서 시간이 오래걸릴 것 같아요. 어느 정도 기반 지식이 있는 분에게 설명하긴 쉽지만, 그렇지 않은 부분부터 설명해야 할테니까요.
때문에 핵심이 되는 부분만 설명을 드릴께요. 이미 블렌더와 유니티에 대해 잘 아시는 편이니 아마 이 정도로도 충분히 이해하실 거라 생각합니다.
셰이프키의 Value애니메이션은 Export를 해도 넘어가지 않습니다. 그 키들은 액션에 귀속되지 않고 ShapeKey Editor에서 따로 관리돼요. 저도 이것 때문에 꽤 오랫동안 고민을 했습니다만, 삽질을 거듭한 끝에 드라이버로 셰이프키를 직접 제어한다면 Value값을 넘길 수 있다는 사실을 깨달았어요.
결국 간단히 해결됩니다. 표정 제어용 본을 만들고 셰이프키의 Value에 Drive를 겁니다. 예를 들어 눈을 감는 셰이프키는 facial_eye_close라는 본의 location.x에 연결시키는 것이죠.
(드라이브가 핵심이므로 블렌더의 드라이브기능을 모르신다면 먼저 이걸 배우셔야 해요. 유튜브에서 금방 배우실 수 있습니다.)
이후엔 본으로 셰이프키를 제어할 수 있게 됩니다. 표정용 패널들은 이런 본들의 모음이예요. 이 본들은 컨트롤러일 뿐이라, 실제로 유니티로 익스포트 되지는 않고 드라이브에 의해 변경된셰이프키의 Value만을 유니티에 넘겨줍니다. Value가 넘어왔으면 쉽죠! 이를 셰이더와 연결하는 코드를 짜주기만 하면 됩니다.
번역기가 완벽하지 않을 것이므로, 이해가 안되시는 부분이 있을지 몰라요. 그 부분에 대해서 이야기해주시면 추가 설명을 드릴께요!
Thank you for your reply. I will try this in Unity and Unreal engine. UV Offset is difficult to setup.
넵. 기술적으로 어려운 것은 없는데, 산술적으로 어렵죠. 화이팅!