MadMinstrel / meltdown

Support addon for Blender to streamline baking with Cycles
15 stars 4 forks source link

Skrypt meltdown nie sprawdza czy obiekty hipoly maja przypisane materiały przez co się wysypuje #2

Open JoseConseco opened 9 years ago

JoseConseco commented 9 years ago

napisałem prostą metodę która sprawdza czy obiekty hipoly mają materiały, jeżli nie to wyświetli nazwę obiektu i przerwie skrypt: def is_empty_mat(self,context): mds = bpy.context.scene.meltdown_settings pair = mds.bake_job_queue[self.job].bake_queue[self.pair] pair_list = mds.bake_job_queue[self.job].bake_queue if pair.highpoly != "": if pair.hp_obj_vs_group == "GRP": for object in bpy.data.groups[pair.highpoly].objects: if len(object.material_slots)==0 or object.material_slots[0].material is None: self.report({'INFO'}, 'Object: '+object.name+' has no Material!') return True else: if len(bpy.data.objects[pair.highpoly].material_slots)==0 or bpy.data.objects[pair.highpoly].material_slots[0].material is None: self.report({'INFO'}, 'Object: '+bpy.data.objects[pair.highpoly].name+' has no Material!') return True return False

Były by super gdybyś wrzucił to do mastera. funkcję tą najlepiej wywołać w głównym operatorze MeltdownBakeOp zaraz na starcie funkcji execute:

def execute(self, context): if self.is_empty_mat(context): return {'CANCELLED'}

MadMinstrel commented 9 years ago

Skrypt powinien nie tyle wyświetlać komunikat i nazwe obiektu, co poradzić sobie niezależnie od tego czy jest materiał, czy nie. Jeśli nie ma, przypisać (tylko w scenie tymczasowej oczywiście).

JoseConseco commented 9 years ago

To ja jednak sobie zostawię to tak jak jest. Wolę wiedzieć, że obiekt nie miał materiału i przypisać mu ręcznie materiał z dobrym ID. Automat nie bedzie wiedział czy tu miało być drewno, metal czy coś innego. Swoją drogą super skrypt. Tylko wolno wypieka i wygląda jakby nie używał wszystkich rdzeni.