메쉬에 두 개 이상의 재료가있는 경우 메쉬에서 추가 재료를 제거하는 방법은 무엇입니까?
Nov 15 2020
메시에 두 개 이상의 머티리얼이 있는지 확인하는 스크립트를 작성하고 있다면 머티리얼이 하나만 남을 때까지 머티리얼을 제거합니다. 지금까지 내가 가진 것은 다음과 같습니다.
import bpy
for ob in bpy.data.objects:
number_of_mats = len(ob.material_slots.items())
if number_of_mats > 1:
for i in range(number_of_mats-1):
# remove material here?
이 시점에서 매트를 제거하는 방법을 알아낼 수없는 것 같습니다. 어떤 제안?
답변
2 brockmann Nov 15 2020 at 21:10
목록의 색인을로 설정하고 1
다음 슬롯을 반복하고 의 컨텍스트 를 호출하고 재정 의 할 수 material_slot_remove()있습니다. 모든 슬롯 을 제거하는 방법에 대한 데모 > 0 :
for obj in bpy.context.selected_editable_objects:
obj.active_material_index = 1
for i in range(1, len(obj.material_slots)):
bpy.ops.object.material_slot_remove({'object': obj})
Koen Nov 15 2020 at 21:03
UI에서 재질을 제거하면 다음과 같이 표시됩니다.
bpy.context.object.active_material_index = 2
bpy.ops.object.material_slot_remove()
문서가 여기에있는 것 같습니다.
도움이되는 희망, Koen
scurest Nov 27 2020 at 01:33
운영자 없이도 할 수 있습니다.
import bpy
for ob in bpy.data.objects:
# Skip things without materials (armatures, etc.)
if not hasattr(ob.data, 'materials'):
continue
while len(ob.data.materials) > 1:
ob.data.materials.pop()