2016-08-31 2 views
0

나는 블렌더에서 wavefront obj 파일을 가져오고 내보내는 데 python 스크립트를 사용하고 있습니다. 문제는 동일한 이름의 객체가 이미 추가 된 경우 블렌더가 객체의 이름에 색인을 추가한다는 것입니다. 예를 들어 myObjectmyObject이라는 오브젝트가 이미 추가 된 경우 (해당 오브젝트가 제거 된 경우에도) myObject.001이됩니다. 객체를 .obj로 내보낼 때 이름은 이전과 동일하지 않습니다.블렌더 이름 색인화 방지

"이름 카운터"를 어떻게 재설정합니까?

답변

1

블렌더의 각 항목은 자신이 속한 항목 목록 (각 이름은 사전 키임)에서 고유 한 이름을 가져야하며 파일 내의 다른 항목을 기반으로 숫자 접미사를 추가하여 고유 한 이름을 만듭니다. note 블렌드 파일은 여러 장면을 포함 할 수 있으므로 장면이 아닌 파일을 기반으로합니다. 삭제 된 객체는이 프로세스에서 고려되지 않지만 재료 및 메쉬 데이터와 같은 다른 항목은 파일이 닫힐 때까지 목록에 남아 있습니다.

obj 가져 오기 도구는 먼저 메쉬 데이터 블록을 만든 다음 메쉬 데이터와 같은 이름을 사용하여 객체를 만듭니다. 이렇게하면 이전 객체보다 큰 숫자 접미어가 항상있는 새 객체가 생성됩니다.

파이썬 스크립트를 사용하여 여러 개체를 가져 오는 경우 개체를 가져온 후에 이름을 바꿀 수 있습니다.

bpy.ops.import_scene.obj(filepath='Object1.obj') 
bpy.context.selected_objects[0].name = 'Object' 
bpy.context.selected_objects[0].data.name = 'Object' 

이 시나리오에서 이름이 "개체"인 기존 개체의 이름은 접미사로 바뀝니다.

+0

.obj 파일에는 여러 개의 개체가 포함될 수 있습니다. 파일을 가져온 후 "실제"이름을 어떻게 찾습니까? – MyNameIsHans

+1

obj 파일을 가져온 후에'bpy.context.selected_objects'는 방금 가져온 객체의 목록이 될 것이고 이전 객체는 선택 해제됩니다. 해당 목록을 반복하고 접미어를 제거하여 이름을 바꿉니다. – sambler

+0

확인. 그러나 모델에 이미 접미어가 포함되어 있다면 어떨까요? 예를 들어 믹서기로 만들어 졌기 때문에? – MyNameIsHans