닐리 리깅 #3

11.29

드라이버를 이전하는 코드가 필요하다. 제약조건이야 블렌더의 기본기능인 symmetrize가 잘 복사해주는데 드라이버는 수동으로 해야 하기 때문이다. 지금까지는 수동으로 이동하고 있었으나 이것이 매우 번거롭다.

챗GPT에게 물어보니 엉뚱한 답만 내놓는다. 별 수 없이 인터넷 문서를 뒤졌으나, 드라이버를 새로 추가하는 법에 대한 설명뿐, 기존의 드라이버에 접근하는 방법을 쉽게 찾을 수가 없었다. 결국 뒤지고 뒤진 끝에 드라이버는 fcurve의 하위 클래스이긴 하지만, 액션의 fcurve와는 분리되어 있다는 사실을 깨달았다.

  • animation_data
    • action
      • fcurve
        • driver – 여길 뒤져봤자 아무 것도 안나온다.
  • animation_data
    • drivers
      • driver – 여길 뒤져야 한다.

이걸 알아내는데 1시간을 소비. 아오 빡쳐! 이걸 더 헛갈리게 하는 것이 drivers에 접근하면 리턴되는 값은fcurve클래스이다. 뭐 좋아. 발견했으니 이제 붙여야지. fcurve는 스크립트 짜면서 정말 피하고 싶은 요소중 하나이다. data_path와 array_index, group을 조합해서 본을 수동으로 찾아야 하기 때문이다. 방법이 없는 건 아닌데 신경쓸 것이 많다. 뭐 어떡해… 해야지..

드라이버를 수동으로 구성해주려면 각 항목에 대해 알아야 한다. 스택익스체인지에서 깔끔하게 정리해놓은 이미지를 발견할 수 있었다.

https://blender.stackexchange.com/questions/282140/how-can-i-add-and-configure-a-driver-through-a-script

실제로는 더 많은 정보가 필요하긴 했다. 우여곡절이 많았지만 어쨌거나 완성!

좌우의 본은 반전되어 적용되고 x,y,z등도 반전시킬 수 있도록 체크박스를 만들었다. 잘 작동되는 것 같다.버그가 없기를.

두께가 있는 모델링은 고민이 생긴다. 처음에는 가장 가까운 버텍스로 웨이트값을 이전하려고 했는데, 완벽하지가 않다. 노말 기준 계산이 아닌 구형 기준 계산이기 때문. 가장 좋은 것은 그냥 솔리디파이를 다시 주는 것인데, 이처럼 할 경우 반대쪽면에 손을 댔을 때(UV나 폴리곤최적화)가 문제가 된다.

하지만 얻는 것이 더 많으므로 이 쪽이 좋아보인다. 그렇다면 솔리디파이를 합치는 것은 리깅 이후로 미루어야 한다는 결론. 재작업은 불가피해 보인다. 머리가 나쁘면 몸이 고생이라더니 딱 그 꼴이다.

목요일부터는 가족여행으로 인해 한국에 없다. 여행다녀오면 기억이 모두 초기화되지 않을까..!

12.4

이렇게 자세한 리깅은 처음인지라 뭐하나 쉬운 게 없다. 리깅은 본설계와 웨이팅을 합친 과정인데, 설계가 끝난 후에도 웨이팅 과정에서 본을 수정할 일이 생긴다. 맥스는 이것이 꽤 번잡시러운데 블렌더는 이게 쉽다. 그나마 다행스러운 일이다.

드디어 팔과 코트를 합쳤다. 문제는 더 커졌다….

아우..맘에 안들어…

12.5

소매야 그럭저럭 됐는데 코트자락에 대한 좀 더 정확한 보간이 필요하다. 예상했던 가설들은 전부 빗나갔다. 실험을 해보자.

이것은 웨이트 이전용 프록시 메시이다. 이제 이걸

여기에 페이스 보간으로 웨이팅 이전을 한다.

바로 이 옵션이다. 그리고 아마추어를 씌우면 웨이팅값이 이전된다.

유니티 엔진은 영향받는 범위를 4버텍스 이하로 줄여야 한다. Limit Total을 걸어보자.

결과! 벌써부터 찌그러진다. 생각보다 더 민감하게 반응한다.

그렇다면 처음 세웠던 웨이팅방식으로 돌아가보자. 바로 그라데이션 방식이다.

이론적으로 영향버텍스가 4개를 넘지 않는다. 하지만 이걸 노말라이즈하면

엉뚱한 계산이 나온다.

여기까지 놓고 보면 결과는 명확하다. 마디마다 본을 늘리는 방법뿐이다.

기어이 이렇게 되었다.

팔을 들어올렸을 때의 처리는 자동화할 수 없다는 결론을 내렸다.

수동으로 보간하도록 하자.

12.6

지긋지긋한 코트 리깅을 끝내고 이제 나머지를 진행할 수 있다. 마음이 편하다.

12.7

머리카락은 정해진 공식이 있기에 어렵지 않다. 갈래가 좀 더 많으면 좋겠지만… 이미 코트에 너무 많은 본을 할애했기 때문에 더 이상 늘리는 것은 부담이 된다. (적다고는 하나 그래도 100개쯤 된다.)

머리카락이 모자를 뚫고 나오므로 머리카락 윗부분의 제어본을 하나 둔다.

이제 괜찮다.

..는 모자를 벗기면 이렇다.

이런 건 드라이브의 Distance를 사용해 자동화해주면 편하다.

이제 거의 끝나간다. 아직 속머리를 마무리해야 한다. 오늘은 타임오버

닐리 리깅 #3”의 7개의 생각

    1. 대만에 다녀왔습니다. 한국이랑 비슷한데 말이 안통하더군요. 그른데 다마고치는 5천원 넘지 않을까요…?

  1. 1000원어치만 잘라서 맛만보게 팔면 되지않을까요? 다이소 아이디어 뱅크에 게임카테고리 입점 제안했다가 구체성부족으로 짤려서 고전하고 있습니다.. 이즈님 말씀처럼 다이소에서 구매가능한 마지노선 가격은 5천원이 맞습니다. 제일 비싼 가격대에 속하죠. 인형코너는 대부분 3~5천원 가격을 형성하고 있습니다. 알아보니 다이소 내 디즈니 상품도 850종에 달한다고 합니다. 상품개발부가 매달 협력사랑 열일 하고 있더군요. 파티용품 코너에서 파티빔 필름같은 카트리지 삽입 형태의 제품 구성이나 리들샷과 같은 구성을 보면 다이소 상품개발부는 팔아먹으려면 어떻게든 팔아먹는 것 같습니다. 다마고찌는 키링역할도 하니까 욕심이 나네여. 아참 다이소 보면 여러 부서가 있는데 돌아오는 시즌마다 전국 매장에 매대 uxui 진열제안하는 부서도 있습니다. 그것도 재밌어보였어요. 전 현장에서 많은 걸 배우고 있습니다.(본사가 지시하는 메뉴얼대로 안하는 매장임) 그나저나 또 중요한 사실이 있습니다. 다마고찌는 응가를 치워야하는데 응가를 시도때도해주는 캐릭터가 없어요. 양파쿵야가 응가 좀 해주면 좋겠습니다.

      1. 직원이 못사는데 소비자가 어뜨케 사요. 포기라는 좋은 대안을 추천드려요

수영다선생님에게 덧글 달기 응답 취소