Idle포즈는 모든 모션을 통틀어 가장 중요하기도 하지만, 모션을 잡으며 튀는 웨이팅을 체크해주는 작업이 병행된다. 모든 제약조건을 시험해보는 단계이다. 과격한 동작을 취하기도 전이건만, 오류가 엄청나게 튀어나온다. 덕분에 프리오리의 이 간단한 자세를 잡는데도 2시간이 넘게 걸렸다.
프리오리
벨
포즈를 잡으며 삐져나오는 점들
그레텔
도레미
기본 포즈는 다 잡았는데, 시간을 두고 다시 보면 어색한 점이 눈에 띌 때가 있다. Idle모션은 이후의 애니메이션에 전체적으로 영향을 끼치기 때문에 이 과정은 반드시 필요하다. 이후에 보아도 여전히 괜찮으면 애니메이션 작업에 들어가자.
얘 리깅은 별 게 없을 것 같은데, 의외로 꼼꼼히 해야 되는 부분이 꽤 있다. 리깅은 복잡한 화면을 지속적으로 보아야 하기 때문에 피로감이 큰 작업이다. 일단 쉬었다가 저녁에 다시 확인해보자.
9.11
가슴부분에 달린 지퍼가 가슴이 따로 움직일 때, 간격이 벌어지는 문제가 있었다. 게다가 그 경우, 지퍼는 어느 본에 위치하여야 하는가?에 대한 문제도 있어 가슴본을 추적하는 새로운 지퍼본을 만들었다. 지퍼본은 양쪽가슴의 ChildOf로 구성했는데, 이 때 주의할 점은 영향력을 양쪽에 반반주면 안된다는 사실이다.
Constraint(제약조건)은 위에서부터 차례대로 적용되므로 1번이 0.5가 적용된 상태에서 2번이 적용된다. 즉, 절반의 트랜스폼을 추종한 후, 다시 절반을 주면 0.66배가 적용되는 것이다. 이렇게 되면 좀 더 한 쪽으로 치우친 결과를 보여주기 때문에, 2번은 좀 더 낮은 수치를 주어야 제대로 된 결과를 볼 수 있다.
…는 허리를 비트니 제자리를 이탈해서 실패
그런데 곰곰히 생각해보니, 가슴은 애니메이션할 일이 없다. 다이나믹 본이 대신 해주기 때문에…
…그럼 이게 맞나? 테스트해보자.
맞긴한데… 이렇게 되면 본이 3개나 필요없다. 하지만 그냥 3개를 유지하도록 하자. 나중에 쓸 일이 올 것 같기도 해…
어깨의 숄은 모델링을 할 때부터 고민이긴 했다. 본 설계를 어떻게 해야 하지? 팔에 의해 형태가 변해야 하지만 팔과 완전히 동일하게 움직일 수는 없다. 약간이긴 하지만 움직임에 이격이 필요하다. 그리고 그것과 별개로 스샷처럼 옷감의 말단을 본의 말단에 맞춰놓으면 움직임이 부드럽지 않다. 전에도 2번째 캐릭터인 닐리가 그렇게 고생을 시키더니, 벨도 그런 조짐이 보인다. 일단 자고 일어나서 … 생각해 보자.
9.8
완전히 예쁘지는 않지만, 그럭저럭 잘 움직인다. 팔에 가장 가까운 본이 팔의 움직임을 카피하고 나머지 본들은 비율을 줄여가며 쫓아간다. 여기에 다이나믹 본의 움직임을 더하면 팔랑팔랑 잘 움직일 것으로 기대한다.
9.9
치마의 프릴은 다이나믹 본의 도움을 받을 예정이었는데, 차질이 생겼다. 다이나믹본은 마디가 없는 단일본에 대해선 처리를 하지 않는다. 이를 해결하기 위해선 offset을 두어 가상의 본을 만들어야 하는데, 이것이 본의 방향이 아니라 월드 기준으로 모두 같은 방향을 바라본다.
때문에 이를 해결하기 위해선 프릴마다 2개 이상의 본이 필요하다. 안그래도 긴머리와 숄 때문에 본이 많은데 이를 감안할 것인가? 아니면 절약할 것인가? 를 선택해야 한다.
하지만 최적화는 유저에게 맡기고, 나는 간다. 프릴에 본 2개를 설치하기로 하자. 다만 모든 프릴에 설치하려던 계획을 수정해서, 2개당 1개만 설치하자. 이 정도로도 충분한 효과를 볼 수 있을 것이다.
하지만 정작 본을 심다보니 드는 의문… 프릴은 치마겉에 장식으로 다는 것이다. 즉 치마본의 자식본으로 들어간다. 그렇다면 … 본 하나로도 괜찮지 않을까? 확인이 필요하다.
확인결과, 안된다. 다이나믹본은 링크가 연결되는 1개의 본만 유효하다. 이를 움직이기 위해선 별도의 컴포넌트를 설치해야 한다.
2개의 컴포넌트를 사용해야 제대로 표현된다. 음. 그렇다면 역시 2개의 본을 사용하자.
그런데 그래도 길리슈트를 입은 닐리보다는 적다.
…그런데 프릴을 따로 작업을 해보니…그냥 기본 본만 심는 게 가장 좋은 결과를 보여줬다.
거의 끝나간다. 하지만 타임오버
다 했는데 뭔가 마음에 안든다.. 치마가 별로 안예뻐서 그런 것 같기도 하고…저녁에 한 번 더 보는 편이 좋겠다.
9.10
치마를 리폼해보자.
프릴을 좀 뜨게 하면 예쁠 것 같았는데, 너무 아이돌 치마같아 요란해 보인다.
이번엔 프릴을 좀 더 촘촘히
더 촘촘히…했더니 김말이같아서 이건 실패.
역시 치마가 문제였던 것 같다. 디테일을 잡아주어야 할곳에서 디테일을 잡아주질 못하니 생겼던 문제로 예상된다.
손의 웨이트 데이터 이전이 잘 안되는 문제가 있었다. 프리오리는 한 쪽에 장갑을 끼고 있기 때문에 맨손과 버텍스가 다소 차이가 난다. 하지만 그렇다고 해도 오차범위를 벗어나는 것이 이상해서 와이어를 켜보니 폴리곤이 비정상적으로 많은 문제가 있었다. 섭디가 2번 된 것이다. 이것 때문에 원본 모델에서 다시 이식을 하는 바람에 삽질의 품격을 한단계 더 높이는 계기가 됐다.
프리오리는 미니 스커트를 입고 있으므로 치마본을 닐리에게서 이식해야 할텐데, 이게 잘 될런지 모르겠다. 일단 상체를 모두 작업하고 생각해 보자.
9.6
닐리의 치마본을 이식해와야 한다. 보기에도 복잡하지만 이걸 만드느라 한달 넘게 걸렸었다. 이식도 간편하진 않을 것이다… 두근거리는 마음을 안고 옮겨보자.
아마추어를 병합할 땐 유효하지 않은 드라이버 정보를 삭제해주어야 한다. 이는 병합하기 전에 하는 것이 좋은데, 같은 소스에서 분리된 아마추어일 경우, 드라이버가 2중으로 설정되기 때문이다. 표면적으로는 별 다를 것이 없지만, 이 정보가 누적되면 성능이 눈에 띄게 저하된다. 이는 전 직장에서 일할 때 자동 병합 시스템을 만들며 알아낸 것이다.
그래서 결론. 합치기 전에 요걸 눌러서 지워주면 된다.
오! 그냥 착 붙는다! 이렇게 한 번에 될 줄은 몰랐는데! 그럼 웨이팅만 하면 되겠다.
데이터도 제법 깔끔하게 넘어왔다. 과거의 고생이 헛되지 않았음을 증명해준다. 흑흑.
이제 웨이팅은 끝났지만, 옷에 두께를 주어야 한다. 웨이팅 전에 두께를 만들어 놓으면 값이 복사가 되지 않기 때문에 여러모로 번거롭고, Data transfer를 사용하면 근사치가 들어가긴 하지만 완전히 같지는 않다.
그레텔의 처음 설정은 간호사였다. 그렇다면 주사기를 무기로 사용해야 하는데, 이것이 ‘액션’을 하기엔 너무 작다는 생각이 들었다. 그렇다고 과장된 커다란 주사기를 사용하고 싶지도 않았고,결국 암살자로 방향을 선회했다. 그렇게 간호사 모자를 쓴 이상한 암살자가 디자인됐다.
현재 제작된 알파 버전의 비오는 폐허 배경이 그레텔의 장소이다.
8.31
땋은 머리가 필요하다. 달래의 머리는 로폴기준으로 만들었고, 얘는 덩어리가 커서 실제로 땋은 모델링이 필요한데, 예전에 한 번 커브로 만들어던 적이 있다.
찾았다. 이런 건 만들어두면 두고두고 도움이 된다.
9.1
예전에 만들어 놓은 땋은 머리 레퍼런스가 있다고 해도 쉽지 않았던 머리카락 모델링.
만들다보니 모자가 영 거슬려서 삭제
큰일났다. 안경이 귓구멍에 꽂혀..
결국 만나고야 만 Transparent셰이더. 안하고 싶었지만 어쩔 수 없다.
옷을 만들어보자.
멋있다. 마치 Concord의 캐릭터 같아.
팔 주름 러프 스케치
모양대로 짜르고, 크리즈를 주고
…는 주름이 너무 많고 펑퍼짐하다… 좀 줄이자.
9.2
꽤 어려운 과제였다.
금도끼, 은도끼도 만들어주자.
원본 모델링 완료. 굳히기에 들어가자.
머리카락을 색칠하고,
9.3
조금씩 전진
이 문신은 게임상에서 거의 보일 일은 없을 것 같지만, 설정했으므로 그려두자.
본체는 완성인데, 안경 셰이더를 따로 만들어야 한다.
오랫만에 만드니 기억이 하나도 안나서 더듬더듬…. 영상을 찍고 나니 역시 대각선이 좋아보여 다시 대각선으로 바꾸었다.
벨은 왕위를 장녀가 아닌 자신이 물려받아야 한다는 왕가의 차녀이다. 매사에 기품있고 예의바르게 행동하지만 조금만 수틀려도 쉽게 신경질을 내며 쌍욕을 한다. 즉, 매우 가식적이며 신경질적인 성격. 왕위 계승이 얼마남지 않자 초조해진 이 차녀는 언니에게 독살을 시도하지만 곧 실패하고 도망친다. 하지만 꿈을 굽히지 않고 모든 걸 뒤엎을 수 있는 한 방을 원하기에 배틀퀸이 되려 한다…는 러프한 설정
벨은 모델링 난이도가 꽤 높을 것으로 예상된다. 곱슬머리와 치마의 레이스의 폴리곤 접힘 처리가 관건이다. 차근차근 진행해보자.
8.27
오랫만에 스크립트를 추가했다. 이 코드는 오리진을 x:0으로 옮겨준다. 미러를 정확히 하고 싶을 때 사용하는데, 코드대로라면 y,z는 유지되어야 할 것 같지만, 어쩐지 원점으로 이동한다. 이렇게 되면 사실 3D커서를 원점에 두고 미러하는 것과 같은데…그건 파이메뉴를 2번이나 열어야 하니 그냥 이걸 쓰자. 역시나 chatGPT가 짜주었다.
def set_mode(m):
if bpy.context.mode != m:
bpy.ops.object.mode_set(mode=m, toggle=False)
잘 작동한다. 역시 아날로그가 최고다.
이제 프릴을 만들 차례. 몇 가지 테스트를 해야 한다.
프릴스커트를 만드는 법에 대한 기록
8.29
팬티는 사실 이렇게까지 안해도 되는데, 파고 있다.
레이피어까지 완료. 이제 텍스처링을 해보자.
텍스처링 과정. 삽질 한가득
8.30
끝난 것처럼 보이지만, 손볼 곳이 남아있다.
윗머리 폴리곤을 너무 아껴서 각지게 보이는 문제
가슴골 윗부분의 아웃라인은 좀 더 얇게 처리
배면법을 일률적으로 적용하면 선맛이 살지 않는다. 3D에서 선맛을 찾는 것은 좀 이상하지만, 어쨌거나 실제 그림을 그린다면, 아무도 저렇게 가슴 위쪽까지 투박하게 선을 긋지는 않을 것이다.
이를 위해서 아웃라인 제네레이팅을 할 때 웨이트값을 참고해서 Fatten을 적용하는 기능을 만들었었다. 사실 이 기능은 이전 프로젝트에도 사용되던 기법인데, 뭐 이렇게까지 해야될까…싶어서 만들어 놓고도 작업자들에게 권장하지 않았다. 귀찮기 때문. 하지만 이것은 분명한 쓸모가 있다.
이제 정수리를 정리해 보자.
아휴.. 참 대충도 만들었다. WIP를 따로 저장해두는 이유가 바로 이런 것 때문이다. 한 번에 잘 나오는 결과물은 없으므로 계속 다듬어 주어야 한다.
제 예전 블로그엔 아직 프로젝트A의 기록이 남아있습니다.(링크) 옮기기도 번거롭고 지우기도 귀찮아서 그대로 남겨두었더랬죠. 완성은 커녕 제대로 된 대전버전까지도 좀 힘들지 싶었는데, 생각보다 더 많은 분들이 응원해 주신 덕에 여기까지 오게 되었습니다. 응원해 주신 많은 분들께 감사드립니다.
본 버전은 대전 테스트를 위한 알파 버전입니다. 아직 AI개발은 되지 않았기 때문에, 플레이어간 대전만 가능합니다.