애니메이션

Driver Tag 와 Morph의 궁합

by 샤이닝 posted Nov 02, 2012 Replies 12
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
Extra Form


http://www.cinema4d.co.kr/1692144 

마야에서 셋팅한것을 위의 질문을 통해서 C4D에서 다시 기본적인 컨트롤러들을 셋팅하였습니다.

2012-11-02_221858_.jpg  

 

컨트롤러를  연결하는데 사용한것은 Driver Tag입니다.

2012-11-02_214119.jpg

 

그런데 이제 어느정도 되었다 싶어,

 

Pose Morph 태그를 누르고 Edit로 들어가 원하는 타켓이나 Base모델등을 잡고 형태를 변경해보려고 하면 말을 듣지 않습니다.

첨엔 왜 그럴까 한참 고민을하다가....레이어 하나씩 지우고 테스트 하기를 반복하다가 알게된 사항이 Morph를 컨트롤하기위해  Driver Tag를 사용해서 그런것같습니다.

 

드라이브 테그를 붙였더라도 Off로 아직 폴프타겟을 연결하지 않으면 상관없지만 하나라도 연결되어있으면, 그때부터 폴프태그에서 Edit에 들어가 형태를 수정하려고 해도 어떤한 것도 수정이 안되네요.

 

혹시 드라이브 태그를 연결해 놓은 상태에서 베이스모델이나 몰프타겟등의 형태를 바꿀 수 있는 방법이 없을까요?

몰프값이 한두개도 아니구 컨트롤러 만드는데도 꽤 많은 시간을 들였는데 어찌할바를 모르겠네요.

좀 도와주세요. 

  • ?
    .피. 2012.11.03 00:45

    morph 태그안에 edit 상태에 여러가지 에스프레소나 드라이버태그가 걸려 있으면
    edit 옵션에 Strenght 앞 Use를 꺼두면 외부의 연결이나 파라미터를 끄고
    몰프만 편집할 수 있는 상태가 되겠죠.

  • profile
    웨이트 2012.11.03 13:42

    자칫 돌이킬 수 없는 상태가 될 수 있으니 save as로 화일 하나를 만드신 후 마음껏 테스하시기 바랍니다. 

    몰프도 맨위에 위치한 기본이 변하면 또 다른 애써만든 것들이 틀어질 수도 있습니다. 

    어찌 되었든 몰프의 몰프로 접근하는 방법도 있긴 한데 (옵션 중 기본 작업한 것 위에 변형되는 것을 또하나 생성하는 것을 말합니다.)

    애초에 예상 못한 것들 때문에 한참을 시행착오하는 경향들이 많이 생깁니다. 


  • ?

    P님 말씀처럼 Use를 꺼두고 잡업해도 역시 파일 편집이 안됩니다.(버텍스 선택후 이동)

    혹시나 하는 마음에 새로 간단한 매쉬를꺼내 몰프파일 하나만 만들고 컨트롤러바를 추가해 재시도를 해봤는데요.

    역시 "기본포즈"파일과 "타겟"파일등의 편집이 안되네요.

     

    파일을 첨부하려는데 용량때문에 첨부가 안되네요(309KB인데...)

    그래서 아래와 같이 이미지 첨부하였습니다.

    어디서 문제가 있는것일까요. 답변보고 정말 기쁜마음으로 테스트하였는데, 저만 안되는 것일까요? 어디서 부터가 잘못일까요.

    저는 드라이브태그를 지우지 않는한 편집이 전혀 안되고 있습니다.

     

    2012-11-03_204340.jpg  

  • ?
    엘라스틱마인드 2012.11.03 20:56
    오늘과 내일은 시간이 좀 남는데
    원하시는 과정/결과를 세세하게 적어 주시면
    확인 해보고 가능 하다면
    플러그인 하나 만들어 드릴게요
  • ?
    샤이닝 2012.11.03 22:07

    현재 얼굴을 빠르게 변형하기위한 시스템을 마야에서 만들어 놓고 사용하다가 ,  Cinema 4D로 가져와 다시 셋팅중입니다.

    300개정도의 몰프개수에 컨트롤러(드라이브 태그 사용)를 이용해서 빠르게 제어하려고 합니다.

    현재 모든게 원하는데로 Cinema4D에서 잘 구현이 되었는데,  작업하는 데이타를 유지하고 관리하기 위해서 타켓매쉬를 수정하려고 하면 드라이브 태그가 달려있어서 수정이 안되고 있습니다.

     

    위에서 P님께서 답변을 주셨지만 제가 잘 못따라했는지 아직은 정상적으로 작동이 되지 않는 상태이구요.

     

    결국 해결해야할 과제는 타켓 및 베이스가 되는 얼굴 형태를 필요에따라 수정해서 업데이트하는 것입니다.

    그렇게 계속 완성도를 높여나가는것인데요. 그 부분이 컨트롤러를 달고나서부터 안되네요.

     

    이러한것도 플러그인으로 가능할까요?

     

  • profile
    웨이트 2012.11.03 21:23

    가장 쉽게 해결하는 방법은 

     

    1)우선 안전하게 face 오브젝트를 카피해서 안전한 하이라키 위에 복사해 놓습니다.

     

    2) 몰프 포즈 된 상태에서  오브젝트화 하여 FACE오브젝트 하나를 별도로 만드는 겁니다. (태그 다 지우고 순수히 몰프된 상태의 오브젝트)

     

    3) 밖에서 마음껏 변형을 합니다.

     

    4)원본 FACE 오브젝트 몰프 포즈 옵션에서 변형된 face오브젝트를 가져오는 겁니다.

     

  • ?
    샤이닝 2012.11.03 21:54

    몰프타겟이 20~30개만 되도 그렇게라도 하겠지만 현재 300개가 조금 넘습니다.

    웨이트님께서 말씀하신대로 빼고 넣고 하면서 데이타를 관리하는것은, 현재 제 시스템에서는 적용하기가  어렵게 느껴집니다.

     

     

    Maya에서 할때는 타켓을 지속적으로 수정하고(컨트롤러 영향이 없으므로) 몰프타겟을 추가하다가(추가할때만다 파일용량이 올라감) 어느정도 안정화되는 단계의 버젼이 될때마다 히스토리 지운 파일을 하나 만듭니다.

    그럼 용량이 상당히 많이 줄어들고 속도도 빨라져 컨트롤러를 움직이며 원하는 얼굴의 형태를 빠르게 만드는것이 용이합니다.

     

    Cinema4D에서는 대부분이 마야보다도 만족스럽지만(특히 인터페이스 측면)  몰프가 100개이상만 넘어가면, 시스템이 느려지다가 200개 이상일경우 몰프파일들의 슬라이드를 움직일때마다 메모리 점유율이 계속 올라가서 내려오지 않습니다.

    몰프태그의 Edit에서 타겟들을 클릭하면서 확인할때에도 클릭 할 때마다 메모리가 2~3프로씩 계속 올라가다가 90%대에서 멈추고  내려오지 않네요.

     

    파일을 닫으면 쭈~욱 내려옵니다.

     

    예전 버젼부터 계속 그런 현상이 나타나서 아쉽지만 익숙한 Cinema4D를 뒤로하고  마야로 프로젝트를 진행했었는데, 아직도 그부분은 해결을 못하고 있습니다.

     

    작업 특성상 몰프파일의 개수가 많은데 Cinema4D가 그 부분에서 너무 속도가 느려져 많이 고민하고 있습니다.

    (같은 얼굴 매쉬를 소프트이미지, 모도, 블렌더,  마야등에서 사용해보면 몰프개수에 Cinema4D처럼 민감하게 반응하지는 않습니다.)

     

    하지만 현재 질문에서 올린 이미지와같이 컨트롤러로 연결해서 얼굴을 변형시킬때는 메모리가 전혀 올라가지 않습니다.

    작업이 너무 쾌적하게 이뤄지는 것이죠.

    그점 하나 보고 이렇게 시네마에서 다시 셋팅하면서 가능성을 보고 있습니다.

     

    그런데 파일을 관리하려고 몰프태그 클릭하고 편집모드에서 원몬 매쉬와 타켓매쉬등을 변형하고 추가하는 부분은 Cinema4D에서 유지하고 관리하기가 쉽지만은 않네요

     

    좋은 방법이 있으면 조언 좀 부탁드립니다.

     

     

     

     

     

  • ?
    .피. 2012.11.05 19:39 Files첨부 (1)

    말씀하신 내용으로 아무리 해봐도 전.

    잘 되는데요. ^^

    업데이트 받아보시죠.

    Morph.jpg

  • ?
    샤이닝 2012.11.05 21:42

    R13버젼에서는 되네요.

    R14는 아직 버그가 있는지 되지 않습니다.(업데이트는 다 했는데도...)

    좋은 정보 너무 감사합니다. ^-^;

  • ?
    엘라스틱마인드 2012.11.06 03:05

    C++ 는 다 만들긴 했는데 Tag 정보가 C4D core 에 업데이트가 제대로 않되네요.

     

    그래서 시도한 R13 파이썬도 몇부분이 입력이 않되고..버그가 좀 있네요.

    R14 데모-파이썬은 태그에 업데이트는 되는데 이전에 만든 오브젝트가 담긴 문서를 

    열게 되면 포즈 모프 자체가 않되네요. 폴리곤 구조도 살짝 바꼈나 봅니다.

     

    낮은 버젼 일때는 깔끔 했는데 서서히 덩치가 커지면서

    메인 개발자 분이 API 지원이 벅차나 보네요.

     

    C++ 는 포럼에 않된다고 올리긴 했으니 개발자 답변 달리고 해결 되는대로 올려 드릴게요.

     

    이건 지난 번에 말씀 드린 Periority 하고 관련이 있는데요.

     

    피님 처럼

    드라이버 태그를 Basic 탭의 Periority 밑에 있는

    활성화 버튼을 꺼버리시면 드라이버 태그를 무시하니 잘되구요.

     

    아니면 아에 Pose Morph tag 의 계산 순서를 올려 버리시면 됩니다.

    Periority - Initial 로 하시면 모든 애니메이션(키 잡은 것들), 익스프레션(엑스프레소나 커피태그 같은) 을 무시하고

     

    초기설정 모드로 애니메이션은 않되고 초기 설정만 가능 하게 됩니다.

    문서가 가진 객체들의 데이터 중에 제일 먼저 계산 하는 거죠.

    물론 작업이 끝나면 다시 Expression 이나 Animation  으로 바꿔 줘야 합니다.

     

    드라이버 태그를 일일이 다 끄긴 어려울테니 Pose Morph tag 의 계산을 이니셜과 익스프레션 사이에서 왔다갔다 하시면 됩니다.

     

     

    개발자 포럼 답변 달리기 전까지는 이걸로 버튼 만들어서 써보세요.

    동작은 보장 못하겠습니다.

     

    잘 않쓰는 기능이라 API 함수에 버그가 많네요.

    코드 작동 방식자체에는 문제가 없습니다.

     

    // 이니셜로 바꾸기

    import c4d
    from c4d import documents,PriorityData
    #Welcome to the world of Python

    def SerchFromName_T(objName,tagName):
        obj = doc.SearchObject(objName)
        FirstTag = obj.GetFirstTag()
       
        while FirstTag.GetName() != tagName :
            FirstTag = FirstTag.GetNext()
        return FirstTag
    def main():
        MorphTag = SerchFromName_T("Cube","Pose Morph")
       
        PriorityDataInitial = c4d.PriorityData()
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_MODE,c4d.CYCLE_INITIAL)
       
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY,0)
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT,0)
       
        MorphTag[c4d.EXPRESSION_PRIORITY] = PriorityDataInitial
       
        MorphTag.Message(c4d.MSG_UPDATE)
        c4d.EventAdd()
       
        print MorphTag.GetName()
    if __name__=='__main__':
        main()

    // 디폴트로 바꾸기

     

    import c4d
    from c4d import documents,PriorityData

    #Welcome to the world of Python

    def SerchFromName_T(objName,tagName):
        obj = doc.SearchObject(objName)
        FirstTag = obj.GetFirstTag()
       
        while FirstTag.GetName() != tagName :
            FirstTag = FirstTag.GetNext()
        return FirstTag
    def main():
        MorphTag = SerchFromName_T("Cube","Pose Morph")
       
        PriorityDataInitial = c4d.PriorityData()
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_MODE,c4d.CYCLE_EXPRESSION)
       
      
       
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_PRIORITY,0)
        PriorityDataInitial.SetPriorityValue(c4d.PRIORITYVALUE_CAMERADEPENDENT,0)
       
        MorphTag[c4d.EXPRESSION_PRIORITY] = PriorityDataInitial
        MorphTag[c4d.ID_CA_POSE_BASE_PRI] = PriorityDataInitial
        
        MorphTag.Message(c4d.MSG_UPDATE)
        c4d.EventAdd()
       
        #print MorphTag.GetName()
    if __name__=='__main__':
        main()

    R14 입니다.

    코드 내용중에 이름 넣는곳에 오브젝트 이름과 해당 모프 이름 넣으시면 되구요.

    SerchFromName_T("Cube","Pose Morph")

     

    R13.은 버그 때문인지 않되고요.

    이건 파이썬으로는 다음 패치 해주기 전까진 않될듯 하구요.

    혹시 모르니

     

    R13 은 이부분만 주석 처리 하시면 됩니다.

    # MorphTag[c4d.ID_CA_POSE_BASE_PRI] = PriorityDataInitial

  • ?
    .피. 2012.11.06 11:51

    오..멋집니다.

    감탄.

  • ?
    샤이닝 2012.11.07 16:54

    와..대단하시네요.

    스크립트에서 이름 바꾸고 한번 사용해봐야겠습니다.^^;


Articles

6 7 8 9 10 11 12 13 14 15