2013-01-03 2 views
3

질문 : bpy.import_scene.obj 함수를 통해로드 된 직후에 객체 데이터를 가져올 수있는 방법이 있습니까?블렌더에서 마지막으로 가져온 * obj를 표시하는 방법

이 함수를 사용하여 obj 파일을 가져 오면 더 많은 변환이 필요합니다. 이름 'Mesh'(가져 오기 후 객체의 기본 이름)를 통해 객체를 선택하면 모든 해당 기능이 내 장면의 '메쉬'라는 다른 객체에서 작동합니다. 나는 장면의 물체 목록에서 마지막 물체를 얻으려고했지만 알파벳순으로 배열되어있어 잘 작동하지 않았다. object.name을 변경하고 다음 함수를 적용하려고 할 때,이 함수는 하나만 작동합니다. 가져온 오브젝트의 이전 인스턴스는 모두 기본값으로 되돌려집니다.

어떻게 해결할 수 있습니까? 마지막으로 추가 된 장면에서 장면을 가져 오는 옵션이 있습니까? 아니면 다음 함수가 적용되기 전에 import 된 직후 'obj'객체를 'mark'하는 방법이 있을까요? 또는 obj 데이터를 이전의 빈 객체를 생성하기 위해 직접 가져올 수있는 방법이있을 수 있습니다.

환호, regg

PS : 블렌더 2.63에서 작업

답변

4

에서 ...

for obj in bpy.data.objects: 
    obj.tag = True 

bpy.import_scene.obj(filepath="somefile.obj") 

imported_objects = [obj for obj in bpy.data.objects if obj.tag is False] 
+0

좋아요! 나는 그런 생각을하지 않았다. 고맙습니다! – regg

0

을 운영자들은로드 데이터를 반환하지 않습니다,하지만 당신은 이런 식으로 태그를 사용할 수있는 가져온 후에 기본 태그는 모든 객체 (장면에 이미있는 객체 포함)에 적용됩니다. 따라서 객체를 표시하려면 해당 객체를 거짓 값으로 지정하고 가져온 다음 해당 태그가 True이면 가져온 객체에 추가해야합니다. 다른 방법은 없습니다. 따라서이 답변이 정확한지 확신 할 수 없습니다.

+0

따라서 깨끗한 코드로 대답이 허용되는 동안 답변이 정확한지 여부가 사실이 아니라면 무엇이 중요할까요? –

+0

의 "Clean code"1. 테스트를 거치지 않은 코드 (4 행에 오류가 있습니다. 오류를 보려면 블렌더 콘솔에 복사하여 붙여 넣기 만하십시오.) 2. 코드 없이도 실행되지 않은 코드 버그 (오류를 수정하면 크기가 0 인 배열이 생성됩니다.) 왜냐하면 내가 말했듯이 모든 객체는 장면이 시작될 때 참으로 가치가 있고 새로 가져온 객체이기 때문입니다. "아이디어 (4) 대중의 지혜"로 인해 @ ideasman42의 대답이 정확하다고 가정합니다. 내 말은, 네 명이 이것을 반대한다면 정확해야합니다. – TrollAxeThrower

+0

아니, 나는 OP가 그것을 받아들이고 그것을 통해 해결책을 발견 했으므로 ideaman42 답변이 만족 스럽다고 가정합니다. –

관련 문제