작업중에 쉐이딩 파일 따로 카메라 파일 따로 작업하면서 동시에 진행하였는데요
아직 초보라 그런지 아무생각없이 작업하다 카메라 폴더와 쉐이딩 폴더 배치가 달라져버렸습니다..
배치말고는 거의 동일한 상황인데 쉐이딩한것을 그대로 복사해올수는 없을까요>
혹시 제목이.. 어떻게 해야할지 몰라서 잘못됫다면 말씀해주시면 수정하겠습니다 ㅜ
작업중에 쉐이딩 파일 따로 카메라 파일 따로 작업하면서 동시에 진행하였는데요
아직 초보라 그런지 아무생각없이 작업하다 카메라 폴더와 쉐이딩 폴더 배치가 달라져버렸습니다..
배치말고는 거의 동일한 상황인데 쉐이딩한것을 그대로 복사해올수는 없을까요>
혹시 제목이.. 어떻게 해야할지 몰라서 잘못됫다면 말씀해주시면 수정하겠습니다 ㅜ
제가 설명을 잘못 헀나봐요 입혀져야 하는데 그냥 복사로는 입혀지지가 않아서요 ㅜㅜ 방법이 없다면 다시 입혀야겠네요 ㅜㅜ
복사재질을 크릭후 컨트롤 키 누르고 복사할 재질을 끌어다가 놓아보세요...!!! 이 답변이 맞나용...???
읔 .. 제가 질문을 잘못한것 같네요 모델링한 프로젝트 파일을
두개로 복사한후에 하나라는 카메라만 잡고 하나나는 맵핑을 다했는데
카메라 잡으면서 배치를 바꿔서... 맵핑 파일에 카메라만 복사해 오니 싱크가 하나도 안맞아서요
맵핑을 다시 해야해서 혹시
카메라만 복사해오듯이 맵핑을 카메라 파일로 불러 올수 있나요?? 이게 맞는 말인가 ㅜㅜ
??? UV로 매핑이 아니라 카메라 매핑으로 하셨다는건가요? 쪼끔 잘 이해가 ㅎㅎ;
설명을 어렵게 하시는 것 같은데
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) 전부 선택하고 실행 하면 됩니다.
위에 말했다 시피 타겟 프로젝트와 원본 프로젝트 간에 오브젝트 이름이 같아야 합니다.
컨트롤 C 컨트롤 V(단 재질창 내에서)