애니메이션

Constraint을 적용할때 축이 이상해서 틀어집니다.

by 샤이닝 posted Dec 17, 2012 Replies 14
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

유저그룹에서 구입한 DVD를 보고있습니다.

P님께서 강의하신 마징가 Z가 나오는 부분입니다.

 

로봇과 같은 관절이 있는 것을 애니메이션 셋팅할때는 조인트가 움직이면 각 부분의 관절이 따라 움직이게 되는데요.

현재 그 작업을 하기 위해서 원하는 조인트에다가 컨스트레인 태그를 걸어주었습니다.

 

아래처럼 타겟을

2012-12-17_174441.jpg 

 

원하는 조인트에 지정하였습니다.

2012-12-17_175403.jpg

 

그런데 적용하면 아래와 같이 되버립니다.

핸드 부분은 이상없이 잘 되는데 말이죠.

2012-12-17_174540.jpg

 

아마 문제가 되는 부분이 축이 돌아가 있어서 그런 것 같은데요.

아래와 같이 90도가 돌아가 있습니다.

첨에 기구부분의 파일을 다른 프로그램에서 가져올때 차렷자세였는데, 제가 T자포즈로 만들면서 90이 된것인데요.

-수정-

테스트해보니 문제가 되는 부분이 S.Y -1 부분이네요. 이부분을 1로 고치고 컨스트레인 걸어보면 정상적으로 작동합니다.

하지만 -1을 바꿔주면 형태가 앞뒤로 한바퀴 돌아버리는데요.

형태는 가만히 있고 이부분을 1로 바꿔줄수는 없나요?

한쪽팔을 만들고 반대로 대칭으로 만들면서 -1이 된것이네요.

 

2012-12-17_174505.jpg

2012-12-17_174619.jpg 

 

조인트는 아래와 같이 정상적으로 0입니다.

2012-12-17_174523.jpg   

2012-12-17_180333.jpg

 

이런 경우에는 어떻게 하면 컨스트레인을 적용해도 문제가 없이 안돌아가고 잘 따라 다니게 될까요?

 

아래의 기능으로는 해봤는데 잘 안되네요.

혹시 다른 방법이 있을까요?

2012-12-17_180524.jpg

  • profile
    웨이트 2012.12.21 20:11

    constraint 의 priority레벨을 올려주시던가.


    가끔 직접 하이라키 밑에 놓지 않고 constraint 하나만 주었을때 다른 요인으로 틀어질 경우가 생기기도 합니다. 


    그래서 constraint를 고정시키는 가장 좋은 방법은 Psr로 가던지 두개의 널 축과 타겟을 만들어서 up과 aim두가지를 같이 써 주면 고정적으로 사용 할 수 있습니다. 

  • ?
    샤이닝 2012.12.23 15:08

    Psr로 시도해도 타켓 선택하기 위해 원하는 본을 넣어주면  s.y. -1로 되어있어서 역시 틀어집니다.

    이부분은  디폴트로 바꾸는게 우선일 것 같은데 방법을 모르겠네요.

     

    그리고 말씀하신 부분중에  

    "두개의 널 축과 타겟을 만들어서 up과 aim두가지를 같이 써 주면 고정적으로 사용 할 수 있습니다. "

    라는 부분이 무슨 말인지 이해가 잘 안됩니다.

    조금 자세하게 설명해주실 수 있으신가요?

     

    제 능력으로는 해결이 안되는데, 답변도 얻기가 힘들어서 프로젝트를 제대로 수행하지 못하고 있습니다.

    고민이 엄청 많은데, 그나마 웨이트님께서 답변을 달아주셔서 너무 감사하게 생각하고 있습니다.

  • ?
    엘라스틱마인드 2012.12.23 17:53

    태그를 지우는등 연관된 관계를 없애고

    프리즈를 한번 해주세요. 시네마에서도 개별 프리즈가

    되나 모르겠네요. 아마 제대로된 매트릭스

    상태라면 올프리즈 해도 잘 될 것입니다


    리깅의 기본은 모델이 완성되고 나서 

    프리즈, 그리고 조인트는 축정렬과 

    하위 조인트값의 제로화(클린업) 입니다

    그리고 회전방향을 생각 해서 축 오더 바꾸기

    마지막 말 뜻은 짐벌락 때문입니다

    12버젼 부터 마야 처럼 지원해서

    바꿔 주시면 됩니다 x축과 y축을 회전

    한다면 xzy,yzx와 같이 고정축을 가운데

    두면 됩니다 항상 한축은 고정축으로

    움직이지 않도록 리깅td 가 구속 해주어야

    애니메이터가 짐벌락 실수또는 머리쓰는일을하지 않습니다

    줄여 줄 수 있습니다

    이거만 지키면 어느 경우에서 든지 잘 움직입니다

  • ?
    샤이닝 2012.12.24 00:02

    파일이 2메가 제한이라 올리지도 못하고 있습니다.

    파일이 있음 혹시나 확인하는데 도움이 될 것 같기도 한데말이죠.

     

    엘라스틱 마인드님 답글중에 프리즈를 하라고 되어있는데요.

    저도 프리즈를 먼저 하고 시작하였습니다.(전에 P님강의 에서 애니메이션 도중 모델링 데이타가 바뀌더라도 유연하게 대처하기 위함)

    그런데 대칭으로 복사한 물체가 질문처럼 틀어지는것은 대칭 복사후에 S.Y -1이라고 적힌 부분 때문인데요.

    사실 이부분만 해결 되어도 모든게 잘 작동하는데 대칭 복사가 원하는데로 잘 안되네요.

     

    그리고 엘라스틱 마인드님의 답변을 완전히 이해하지 못해서, 답변대로 바로 실행하지 못하고  또 주춤하고 있네요.

     

  • ?
    엘라스틱마인드 2012.12.24 04:58

    모델 + 조인트 클린업은 마야가 빨라서 마야에서 주로 해서 착각 했나 보네요.

    해보니까 시네마는 프리즈를 보관해서 계산때는 않쓸 줄 알았는데 계산에 쓰네요. ㅡ_ㅡ

     

    이래서 전 그냥 마야 쓰졍.. 리깅은 셋업시 수도 없이 

    페어런트 / 언 페어런트 / 스냅 할 일도 많고 이건 마야가 500%는 빠르게 할 수 있으니..

    시네마도 명령이 있긴 한데 있는 단축키 지우고 해야  되니...ㅡ_ㅡ;

     

     

    축 옮겨 주는 명령도 없네요.

     

    시멘터리가 있으니까 시멘터리로 -1 인 축 기준으로 설정을 해주시면

    복제가 되는데 복제 되는 포인트들이 웰드 되지 않게 꺼주시고

    커런트 스테이트 투 오브젝트를 해주시면 복제가 됩니다.

     

    그 다음 두 오브젝트중 필요없는 오브젝트의 포인트를 하나 선택한 후

    선택 툴에서 grow selection 계속 눌러서 다 선택 될때 까지 하시면 두 오브젝트는 연결 되어 있지 않으니

    한개만 다 선택 되니까 그 뒤에 지우면 될겁니다.

     

     

    근데 윗분 말씀처럼

     aim 으로 다음 조인트에 원하는 축을 강제로 바라보게 하면 되긴 할텐데..

    오류가 있긴 하나 보네요? 

  • ?
    샤이닝 2012.12.24 10:16

    시멘터리 적용 방식은 저도 시도를 해보았었는데요.

    아래와 같은 문제가 발생하더라구요.

    http://www.cinema4d.co.kr/?mid=qna&document_srl=1710420

    해결을 못해서 결국 이러지도 저러지도 못하고 있습니다. 

     

    참...저도 마야에서 먼저 셋팅하고 시네마로 넘어왔는데요.

    마야에서는 물체를 본에 붙이는 방법으로 Rigid Bind로 했구요, 옵션중에  Bind to를 Selected joints 로 놓고 사용하였습니다.

    그럼 축이 틀어지지 않고 잘 붙어서 움직이는데, 시네마4D에서 사용한 Constraint로 하면 자꾸만 틀어지고 있습니다.

    물론 Coordinates의 S.Y가 -1인 물체만 문제가 생기고 있구요.

     

    마야는 그런것 상관없이 적용시키는것 같은데, 시네마에서는 그것이 문제가 되는 것 같습니다.

     

    쉽지는 않네요.

     

  • ?
    엘라스틱마인드 2012.12.24 21:09

    그럼 아에 원본 을 유지 하면서 매트릭스를 바꿔 보져..

     

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

    def main():
        doc = documents.GetActiveDocument()
        obj = doc.GetActiveObject()
        pnts = obj.GetAllPoints()
        reverseYVecList = []
        for vec in pnts:
            vec.y = vec.y *-1
            reverseYVecList.append(vec)
        obj.SetAllPoints(reverseYVecList)
        obj.Message (c4d.MSG_UPDATE)
        c4d.EventAdd()
       
    if __name__=='__main__':
        main()


    오브젝트 선택하고 실행 하시면 되요.

     

    실행 하시고 -1 값을 다시 1로 바꾸면 됩니다.

  • ?

    우선 스크립트까지 만들어 주시고, 너무 감사합니다. ㅜ_ㅜ;;

    우선 적용을 해보면 아직 확실히 해결은 되지 않고 있는데요. 아래와 같이 되기 때문입니다.

     

    바로 아래 상태가   S.Y가 -1인 상태로 만들어서 대칭시킨 상황입니다. 모양만 보는건 문제없지만 애니메이션을 하기에는 축이 돌아가는 문제가 생겨서 지금까지 왔는데요.

    2012-12-24_223931.png

     

    스크립트를 적용하고 -1을 1로 고쳐주면 애니메이션을 하는데 전혀 문제가 없는 상태가 됩니다.

    그러나 쉐이딩상태가 이상하게 변합니다.

    2012-12-24_223824.png 

     

    사실 스트립트를 이용하지 않고 이 상태가 되게 되게했었는데 쉐이딩 상태때문에 사용하지 못하고 포기했었습니다.

     

    제가 했던 방법은

    매쉬를 선택하고 Attributes의 Coord. 부분에서 S.Y 1 을 -1로 바꾸고

    메뉴에서 Window>Coordinate Manager의 Scale의 Y값을 1에서 -1로 다시 바꾸었을때 스크립트를 사용할때와 같은 현상이 되었었습니다.

    실제로 같은 상황인지 모르겠으나 겉으로보기는 똑같이 변하는 것 같습니다.

     

    역시 쉐이딩 상태가 이상하게 변해서 사용하지는 않았는데 이상하게 설계툴에서 import해온 파일에서만 이런현상이 발생하네요.

    Normal Tag때문인것 같은데, 이게 대칭으로 만들거나 할때 깔끔하게 되지않고 꼭 문제를 일으키네요.

     

     

     

     

  • ?
    엘라스틱마인드 2012.12.25 01:14

    그럼 저 팔 부분만 복사해서 새 문서에 넣은후 저장해서 올려 보세요.

  • ?
    샤이닝 2012.12.25 10:53

    http://shining-korea.com/down/part_1.zip

     

    제 ftp에 샘플파일 올려놓았습니다.

    혹시 확인 가능할까요?

  • ?
    엘라스틱마인드 2012.12.25 15:01

    역시 넙스 기반이라 폴리로 변환 되면서 면 구성이 엉망 진창이네요.

     

    미러 하시던지 스크립트로 하시던지 뒤집으시고 

    노말 정렬 해주면 제대로 보이긴 하는데

    렌더링 깔끔 하게 하긴 힘들어 보이네요.

     

    퐁을 그냥 없애고 각진 상태로 가던지 가까이서 않보이는 것들이면

    잘보이는 큰면만 따로 분리해서 (옆판 같은) 그것만 하이퍼 넙스에 넣거나

    퐁 앵글 많이 주고 하는게 가장 나은 방법 일 것 같네요.

     

  • ?
    샤이닝 2012.12.26 15:16

    Normal Tag 를 제거하고 퐁값을 30도로 주는게 현재로써는 제일 좋은 방법이라서,  그렇게 진행하고 있습니다.

    많이 신경써주셔서 감사합니다. ^-^;

     

  • ?
    .피. 2012.12.26 15:38 Files첨부 (1)

    많이 고생하고 계셨네요. 리깅이라는게 계속된 문제와의 연속이죠.


    마야나 맥스의 "프리즈트랜스폼" 같이 강제로 리셋시키는 명령들은 리깅시에 편리한 점이 있으나.

    역시 강제적으로 원점으로 돌리기 때문에. 나중에 스크립트시에 매트릭스 구하는게 영 구리죠.


    반면에 시네마의 "프리즈트랜스폼" 같은 경우에는 원본의 매쉬값을 저장하고 있어서 스크립트등이나 다시 모델링등을

    제작업할때, 굉장히 편리합니다.


    샤이닝님께서 격는 문제는

    모델링이 설계툴이기때문에. (맥스같은 경우도 모델링시에 자주 nonuniform 문제가 발생하며,

    설계툴에서 익스포트시에 Normal tag가 같이 형성되기 때문에.

    모델링을 반전복제 시키면 normal tag가 반전된 모델링 값과 맞지 않게 되지요.


    그러니까. 설계툴에서 내보낼때는 노말테그를 지워서 phong tag로 제어 하시던가.

    온전히 설계툴에서 양쪽다 모델링이 있어야 합니다.

    그런후에 리깅만 반대쪽으로 넘겨 주시면 됩니다.


    팔이 비틀어지는 이유는 여러가지가 있는데. 현재의 조인트 방향과 팔의 매쉬의 축이 다르기 때문이 대부분이고요.

    모델링 자체가 문제가 있을경우에는

    Reset.jpg 

    그림의 reset을 한번 먹여줘야 합니다.

    그럼 s,-1 된것이 바로 잡히게 됩니다.


    모든게 귀찮으시다면 캐릭터메뉴에 mirror 툴을 잘 쓰시면 됩니다.

    그럼 위에 것들이 상관이 없어 집니다.

  • ?
    샤이닝 2012.12.26 16:56

    미러복사가 깔끔히 되면 그게 제일 좋겠지만 현재로써는 설계툴에서 미러까지 해서 가져오는게 가장 완벽하겠네요.

    일을 간단하게 하려고 한쪽만 가져온것인데 의외로 어려웠던 것 같습니다.

    그래도 질문을 통해서 많이 배우는 계기가 되었네요.

    특히 미러복사에 대해서는 정말 지긋 지긋 할 정도로 이것 저것 많이 해본 것 같습니다.^^;

     

    현재 렌더링만 아니면 크게 문제가 안되는 상황이라 퐁값으로 조절하고 노멀태그를 지워서 사용중입니다.

    애니메이션 셋팅하고 모션값을 뽑아내는게 가장 중요한 일이라 사용하는데는 지장이 없을 것 같습니다.

     

    피님 답변 감사합니다.^^;

     


Articles

1 2 3 4 5 6 7 8 9 10