주소복사 | 조회 수 500 추천 수 0 댓글 7
Atachment
첨부 '1'
?

단축키

Prev이전 문서

Next다음 문서

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

단축키

Prev이전 문서

Next다음 문서

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

C4D로 작업하다 또 궁금한게 생겨 이렇게 고수님들의 조언을 듣고자 왔습니다. ^^;

 

재질을 입힌 오브젝트들이 여러 그룹에 분산되어 있는 상황인데요.

재질을 교체해야 할 상황이 생겨서요 다른 재질로 교체 하고 싶은데

 

Apply를 이용해서 교체는 했습니다. 근데 그전에 있던 재질은 남아 있더라구요

이런작업을 몇번하면 여러개의 재질이 쌓이는데 바로 교체하는 방법은 없나요?

없애주세요.jpg

 

위에는 이해하기 쉽게 예시를 든겁니다.

  • ?
    엘라스틱마인드 2013.06.21 18:49

    오브젝트 옆에 있는 건 사실 재질이 아니라 텍스쳐 태그 입니다.

    실제 재질은 텍스쳐 태그의 재질 탭에 있습니다.

     

    사실 이게 좀 불편한 부분이긴 한데 할당이라는 커맨드 방식 자체가 없어서 그렇습니다.

    예) 마야의 재질을 우클릭 후 팝업 메뉴의 상단의 할당 처럼 말이죠.

     

    아마 시네마에서는 그냥 재질을 드래그 해서 뷰포트의 오브젝트에 넣던지

    오브젝트 매니저에 넣는 방식밖에 적용 하는게 없어서 그런데.....

    (아마 없죠? 제 경험은 딱히 귀찮긴 하지만 불편한게 없어서 그냥 전자의 방식으로 주로 끌어다가 놓아서 

    쓰고 남는 태그는 지우고 합니다. 다른 방식이 있을 것 같기도 한데 그냥 써와서;;;)

     

    뭐 그렇다고 못한다는 건 아닙니다.

    스크립트를 만들어서 하면 됩니다.

    방법은 현재 선택한 재질을 현재 선택한 오브젝트에 할당 하는데, 텍스쳐 태그가 없으면 만들고

    선택한 재질을 넣고, 텍스쳐 태그가 이미 있으면 태그 안의 재질을 바꿔주면 되니까요.

     

    그 후에 그 스크립트를 매터리얼의 메뉴에 넣어 주면 됩니다. 그럼 마야랑 똑같이 쓸 수 있는 거졍.

    이럴 땐 시네마의 무한한 UI 편집 가능성이 참 좋죠.

  • ?
    엘라스틱마인드 2013.06.22 18:03

    저도 쓸겸 해서 하나 만들었습니다.

    스크립트로 등록한 후 UI수정해서 alpply 밑에 두고 쓰세요.

     

    이미 여러 재질이 있으면 마지막 텍스쳐태그를 가지고 변환을 한 후 앞쪽의 재질태그는 전부 지웁니다.

    마지막에 넣은 재질 태그가 원해서 넣었다는 가정 입니다.

    (프로젝션 등등 ...태그의 옵션들을 유지 하기 위함.)

     

    재질이 없으면 마지막위치에 태그를 넣고 재질을 할당 합니다.

    이미 재질 한개가 있으면 위치에 상관없이 그곳에 매터리얼을 교체 합니다.

    ( 마지막 위치가 아닌 원하는 위치에 넣었다는 가정 입니다. )

     

    import c4d
    from c4d import gui
    #Welcome to the world of Python
    def GetTexTagCount(obj):
        count = 0
        tags = obj.GetTags()
        for tag in tags:
            name = tag.GetTypeName()
            if name == "Texture":
                count +=1
        return count
    def KillUnusedTexTag(obj):
        for x in range(GetTexTagCount(obj)):
            if x > 0:
                obj.KillTag(c4d.Ttexture)
    def ExistTexTag(obj):
        tags = obj.GetTags()
        for tag in tags:
            name = tag.GetTypeName()
            if name == "Texture":
                return True
        return False
    def GetFisrtTexTag(obj):
        tags = obj.GetTags()
        for tag in tags:
            name = tag.GetTypeName()
            if name == "Texture":
                return tag
        return None
    def GetLastTexTag(obj):
        tags = obj.GetTags()
        LastTag = None
        for tag in tags:
            name = tag.GetTypeName()
            if name == "Texture":
                LastTag = tag
        return LastTag
    def AddTexTag(obj):
        return obj.MakeTag(c4d.Ttexture)
    def AddTexTagToLast(obj):
        tag = obj.GetFirstTag()
        if tag == None:
            return obj.MakeTag(c4d.Ttexture)
        while(1):
            if tag.GetNext() == None :
                break
            else:
                tag = tag.GetNext()
                LastTag = tag
        return obj.MakeTag(c4d.Ttexture,LastTag)
    def PrintGUI(message):
        gui.MessageDialog(message)
    def main():
        obj = doc.GetActiveObject()
        mat = doc.GetActiveMaterial()
       
        if obj == None:
            PrintGUI("선택된 오브젝트가 없습니다.")
            return None
        if mat == None:
            PrintGUI("선택된 매터리얼이 없습니다.")
            return None
       
        tag = GetLastTexTag(obj)
        if tag == None:
            tag = AddTexTagToLast(obj)
           
        tag.SetMaterial(mat)
       
        #Delete other Texture tag
        KillUnusedTexTag(obj)
        #Update UI
        c4d.EventAdd()
       
    if __name__=='__main__':
        main()

  • ?
    엘라스틱마인드 2013.06.22 21:03

    갑자기 생각 났는데

    폴리곤 셀렉션을 해놓았고 여러개 재질일 경우를 처리 않해 놨네요

    뭐 어짜피 셀렉션지정 의 경우는 수동으로 작업하는게 맞는거니

    상관 없을 것같기도...

  • ?
    고리 2013.06.22 21:31

    알트키누르고 던지면 바뀌지않나요???(태그에다가)

    제가 잘못이해한건가...

  • ?
    테디곰 2013.06.25 20:02

    앗! 감사합니다.

    적용해보니 잘되네요.


    근데 하나의 오브젝트는 되는데 여러개를 선택하고 하면 "선택된 오브젝트가 없습니다." 라고 뜨네요.


  • ?
    엘라스틱마인드 2013.06.26 01:08

    여러개는 시퀀스로 다뤄야 되고 체크 할 것도 많고 귀찮아서 일단 한개 만 되게 해놨어요.

    그냥 쓰셔야 할 듯하네요.

     

  • ?
    테디곰 2013.06.26 14:29

    넵! 이렇게 신경써주신것도 감사합니다.

    나머진 제가 공부해서 알아가야죠~ ㅎ 방법을 제시해 주셔서 감사합니다 ^^


질문과 답변

question and answer

List of Articles
번호 분류 제목 글쓴이 날짜 조회 수
공지 일반 Cinema 4D Education 학생용 라이센스 사용방법 2 그래바 2020.09.03 18286
공지 Octane 옥테인 크래시 관련 자주 올라오는 질문들과 해결하는 법을 정리해보았습니다. 16 updatefile 이효원 2020.04.19 48903
공지 [필독] 단톡방 질문 방식 관련 공지사항 4 file 권오훈 2019.06.27 12883
공지 일반 [필독] 질문 게시판 유의사항 ! 권오훈 2019.06.27 4817
14205 라이팅 라이팅 방법 2 file 유니티 2015.07.24 684
14204 기타 일러스트레이터에서 가져온 path에 면을 주고 bend로 구부리기 3 file 액션피플 2015.07.23 1231
14203 모델링 폴리곤리덕션 디포머에 리스트릭을 걸고 싶습니다. 3 file 김철홍 2015.07.23 633
14202 텍스쳐 작업할 때 보이던 texture 가 render 하면 안 보여요. 3 file 로니 2015.07.23 501
14201 애니메이션 회전에 관한 질문입니다. 2 file 김승현 2015.07.22 616
14200 애니메이션 렌더뷰시 조인트 뼈대가 날라가 있어요.. file 쑥곰 2015.07.22 505
14199 Octane octane diffuse 재질중 transmission 기능이 적용이 안 되는 것 같습니다 2 file 상은 2015.07.20 1168
14198 MoGraph 형상 표현 3 file 렉시 2015.07.19 531
14197 캐릭터 프리셋에 관한 질문입니다. 4 박뱅 2015.07.19 456
14196 RealFlow 리얼플로우 질문있습니다. file 또다른삶 2015.07.18 582
14195 모델링 spline 연결 어떻게 하나요? 2 file 로니 2015.07.18 1369
14194 그 외 연기처럼 일렁이는 효과를 내고 싶습니다. file 너머야 2015.07.17 698
14193 나무끼리 꼬아주는 애니메이션 질문있습니다. 2 file 또다른삶 2015.07.17 536
14192 Hair hair 움직임에서 object뚫림과 갑자기 커지는!! file 인찬입니다 2015.07.17 575
14191 cloth 움직임을 아주 느리게 하는 방법 1 엠오디쇼 2015.07.16 533
목록
Board Pagination Prev 1 ... 820 821 822 823 824 825 826 827 828 829 ... 1771 Next
/ 1771
닫기

마이페이지

로그인을 해주세요