텍스쳐

쉐이딩을 다른파일로 그대로 복사하는 방법.

by 미친개 posted Nov 26, 2012 Replies 7
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

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

작업중에 쉐이딩 파일 따로 카메라 파일 따로 작업하면서 동시에 진행하였는데요

 

아직 초보라 그런지 아무생각없이 작업하다 카메라 폴더와 쉐이딩 폴더 배치가 달라져버렸습니다..

 

배치말고는 거의 동일한 상황인데 쉐이딩한것을 그대로 복사해올수는 없을까요>

 

혹시 제목이.. 어떻게 해야할지 몰라서 잘못됫다면 말씀해주시면 수정하겠습니다 ㅜ

  • profile
    모션레스 2012.11.26 13:11

    컨트롤 C 컨트롤 V(단 재질창 내에서)

  • ?
    미친개 2012.11.26 14:16

    제가 설명을 잘못 헀나봐요 입혀져야 하는데 그냥 복사로는 입혀지지가 않아서요 ㅜㅜ 방법이 없다면 다시 입혀야겠네요 ㅜㅜ

  • ?
    시렁이쥔 2012.11.26 14:25

    복사재질을 크릭후 컨트롤 키 누르고 복사할 재질을 끌어다가 놓아보세요...!!! 이 답변이 맞나용...???

  • ?
    미친개 2012.11.26 14:33

    읔 .. 제가 질문을 잘못한것 같네요 모델링한 프로젝트 파일을

     

    두개로 복사한후에 하나라는 카메라만 잡고 하나나는 맵핑을 다했는데

     

    카메라 잡으면서 배치를 바꿔서... 맵핑 파일에 카메라만 복사해 오니 싱크가 하나도 안맞아서요

     

    맵핑을 다시 해야해서 혹시

     

    카메라만 복사해오듯이 맵핑을 카메라 파일로 불러 올수 있나요?? 이게 맞는 말인가 ㅜㅜ

  • profile
    모션레스 2012.11.26 19:15

    ??? UV로 매핑이 아니라 카메라 매핑으로 하셨다는건가요? 쪼끔 잘 이해가 ㅎㅎ;

  • profile
    좐느 2012.11.26 19:51
    재질은 다른 프로젝트로 복사가 잘 안되는 경우가 있더라고요 재질입힌 모델링을 복사해서 카메라있는 프로잭트에 붙여넣기하면 모델링이랑 재질이 함께 들어갈꺼에요 이답변이 맞을까;;
  • ?
    엘라스틱마인드 2012.11.27 14:31

    설명을 어렵게 하시는 것 같은데


    0. 원본 소스 모델링


    1. 번 프로젝트
    원본에서 카메라를 설치 하고 중간에 오브젝트의 위치를 바꾸었다.


    2. 번 프로젝트
    원본에서 재질을 만들어서 오브젝트에 적용했다.

     

    여기에서 1번의 카메라와 오브젝트의 배치를 쓰기 위해서
    2번의 오브젝트에 재질들을 비교되는 1번의 오브젝트 들로 이동 시키고 싶다.
    이건 가요?


    이말이 맞다면
    전제가 한가지 필요합니다.


    전제 1
    두 프로젝트간에 오브젝트의 이름 변경을 하지 않았고
    전체 오브젝트 간에 이름이 중복 되지 않는다.

    이 경우에는 오브젝트의 이름으로
    검색해서 해당 위치를 전부 가져와서 2번 프로젝트의 해당 이름의 오브젝트 위치에
    붙여 넣게 끔 스크립트를 짤 수 있습니다.
    그 뒤 카메라를 2번으로 복사 하시면 됩니다.

     

    import c4d
    from c4d import documents,gui
       
    def GetAllDocument():
        RefDoc = documents.GetFirstDocument()
        DocList = []
        DocList.append(RefDoc)
        while RefDoc.GetNext():
            RefDoc = RefDoc.GetNext()
            DocList.append(RefDoc)
        return DocList

    def GetDocByName(DocName):
        DocList = GetAllDocument()
        for tempdoc in DocList:
            if tempdoc.GetDocumentName() == DocName:
                NamedDoc = tempdoc
                return NamedDoc
        gui.MessageDialog(DocName+" is not exist")
        return 0

    def TransferCoodsByObjName(OriDocName,TargetDocName):
        OriDoc = GetDocByName(OriDocName)
        if OriDoc is 0 : return False
        TargetDoc = GetDocByName(TargetDocName)
        if TargetDoc is 0 : return False
       
        ObjList = OriDoc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
       
        for index in ObjList:
            OriName = index.GetName()
            OriMg = index.GetMg()
            TargetObj = TargetDoc.SearchObject(OriName)
            if TargetObj is None :
                gui.MessageDialog(OriName+" is not exist in "+TargetDocName)
                return False
            TargetObj.SetMg(OriMg)
        return True

    def main():
        if TransferCoodsByObjName("original.c4d","target.c4d") \
        is False : return 0
       
    if __name__=='__main__':
        main()

     

     

    이 부분에 원본 파일 이름과 복사할 파일 이름을 넣으시면 됩니다.
    if TransferCoodsByObjName("original.c4d","target.c4d") \

     

     

    실행 하면 원본에서 모든 선택된 오브젝트의 이름을 가지고

    타겟 에서 검색을 합니다.

    동일한 이름이 발견 되면 위치 회전 크기 값을 이전 합니다.

     

    두 프로젝트를 열고

    위치 회전 크기 값을 가진 원본 프로젝트에서

    모든 하이어라키를 푸시고 (view => folding => unfold all) 전부 선택하고 실행 하면 됩니다.

     

    위에 말했다 시피 타겟 프로젝트와 원본 프로젝트 간에 오브젝트 이름이 같아야 합니다.