ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [3DMAX FacialRigging] 04. Rig를 넘겨주는 작업
    3DMAXFacialRigging 2022. 12. 1. 13:20
    반응형

     

     

     

     

     skinning이 된 arkit 정보를 옮기고자 하는 캐릭터에 넘겨주는 작업

     

    1. arkit.obj
    2. 옮겨줄 메쉬.obj 

    이 두개를  export하여 wrap으로 가져갑니다


    . obj export

     

    wrap 되어진 obj export  해와서

    unihead000<------unihead001 몰핑 해줍니다

    (이때, 축이 맞지 않으면 morph가 잘 되지 않으므로 unihead000에 unihead001을 

    affect pivot only  키고 align, xyz pivot축 하고 align- resetXform하고 edit poly 해줍니다)

    (editable mesh 인 상태로 합니다.  editablepoly인 상태로 object transform이 reset이 되지 않음)

     

    • cage_face복사해서 써야 하기에, 많은링크가 걸려있어서 snapshot을 해줍니다

         snapshot (ex)cage_AverageFace,

    cage_average을 skinnig 되어있는 arkit unihead000을 따라가게 skinwrap합니다

    (unihead000에는 unihead001이 morph되어있지만 영향값은 "0"으로 합니다. 그래야지 morphing을 해서 모양을 바꿔주니까)

    cage_averageface가 skinwrap으로 unihead000을 따라가고 unihead000의  모프값이 unihead001 값 "100"을 가져서 원하는 얼굴로 바뀌면 cage_averageface를 convert to ploy해서 mesh를 fix 하고 unihead000에 걸려있는 unihead001을 해제합니다

    --->unihead000의 skin을 저장

    • cage_face가 cage_average 메쉬로 바뀌면 되는 것입니다

    cage_face*mouth

                 *nose

                 *e

                 *brow

                 *morpher  <---- 여기 맨아래 cage_averageface "100" 줍니다

    bone 까지 따라오면서 cage_face모양이 바뀜 cage_averageface는 face_cage Layer에 넣어줍니다

     

     원래있던 unihead000은 skin때문에 모양이 바뀌었는데 skin을 날리고 unihead001을 morph"100"걸어주고 convert poly하고 아까 복사한 skin 불러넣기

    바꾸려던 mesh에 skinwrap으로  ( arkit)unihead000을 따라가게 하면 unihead000,add,faceDeformer,convertToskin, skinwrap날리고 skin 적용

    ====> 스킨이 넘어가고 cage  정보도 넘어 갔습니다.

     

     

     

     

     

     

    • 현재 목이랑 머리본이 없어서 그쪽부분이 깨짐, 셋팅해줍니다

    - b_Neck, b_Head, b_Head_Nub--- skin bone layer(edit bone으로 위치와 stretch ...none등 설정)바꿀메쉬 스킨에  neck, head추가

    - arkit인 unihead000에 b_M_Brain에 있던 스킨값을-->head bone으로 넘겨줘야 함

    (jaltool에서 copy,paste 해줍니다, 바꿀메쉬 영향값안에 b_m_brain과 b_head,b_neck이 같이 있지만 copy paste해줌)

    - skin 찢어진 곳을 수정하는데 하나하나  vertex copy,paste 할수 없으니 Deboneskin합니다

    • modifier setting에서 data channel-delta mush-해주는데

    이 deltamush의 역할은 원본메쉬가 움직임값만큼 relax mesh 해줌으로 보간한다.

    averageface 52개 표정을 snapshot하여 morph 해줘야 하는데 이런경우를 대체하는 script 존재

    *****(script) SetKeyToCusAtt.ms(deltamush 셋팅해주고 이 스크립트를 쓰시오)

     

    SetKeyToCusAtt.ms로 인해 vertex sequencing을 해줄 mesh를 다 뽑았으니까 morph target으로 만든다음 alembic 파일로 뽑아주면 됩니다

    여기까지 현재
    1. (ex)eunju_export는 SetKeyToCusAtt.ms 스크립트 하여 morphing을 뽑아내고 bone 기반으로 움직이는 keyframe이 찍혀 있음(bone 기반 움직임)
    2. eunju_export를 snapshot하여 SetKeyToCusAtt.ms로 뽑은 52를 morph 연결, vertex, morph기반
    1.  bone 기반의(frame 0_51)과
    2. vertex기반의 (morpher 0~51)가 
    각 프레임 마다 다른 포즈동작을 하기 때문에 맞춰주는 작업이 필요합니다
    (script) SetKeyToMorphAsAttOrder.ms 써줍니다.(SetKeyToMorph.ms아님)
    script 실행해 주면 2개의 mesh가 frame 별로 같은 표정을 합니다.
     
    같은 방식으로 dembone skin 해주기
    1. morph, vertex기반 mesh는 export .abc
    2. mesh에 원래 있던 morph날리고 skin을 걸어줌( 얼굴본 neck과 head본 추가)
           (envelope 5.0 정도로 크게 잡고 모든 본에 복사, 붙여넣기)
     
    ****** 중요. skin으로 잡은 facebone 들은 unlink해줍니다
            왜냐하면 b_m_brain에 hierachy 되어있던 본들과 지금 skin으로 잡아주는 자식본들의          정보가 달라서 dembone이 제대로 안 먹힐수가 있음
    ******* 중요. fbx export 시 z축 위로 체크
     
    명령프롬프트 열고 dembone 해줍니다
    Out_AvgFace.fbx 최종파일 받아서 열어보면 skin 값들이 잘 들어오고 skin 값을 복사할수 있습니다 (jaltool이용)
    원래파일  열어서 
    Avg_face_ export에 morph 지우고 editpoly하고 복사해온skin 값을 넣어줍니다
    Avg_face_export의 skin 값을 원래 Avg_face옮겨줘야 하니까 걸려있던 ModifierSetting 다 지워주고 skinwrap- face deformation-0.001-convert to skin해줍니다
     
    • mesh 정보가 같으면 캐릭터성이 다른(예를들어 노인이나 아이) 캐릭터라도 기존의 메쉬에 morpher와cage_snapshot, morph, skinwrap등을 이용하여 바꿔준다
    ( cage snapshot으로 복사 해서 skinwrap으로  averageface(morph노인100먹여놈)를 따라가게 하고 cage 모양이 변하면 convertpoly하고 cage-mesh
     

    댓글

Designed by Tistory.