mirror of
https://github.com/H-uru/korman.git
synced 2025-07-15 10:54:18 +00:00
Don't bake shadows for objects with no drawables
I fail to understand why Blender thinks this is legit, but oh well... Also, as a bonus, we no longer clobber values in the GoodNeighbor tracker. I wonder how many bugs this will fix?
This commit is contained in:
@ -163,7 +163,10 @@ class LightBaker:
|
|||||||
return None
|
return None
|
||||||
|
|
||||||
def _has_valid_material(self, bo):
|
def _has_valid_material(self, bo):
|
||||||
for material in bo.data.materials:
|
data = bo.data
|
||||||
|
if data is None or not isinstance(data, bpy.types.Mesh):
|
||||||
|
return False
|
||||||
|
for material in data.materials:
|
||||||
if material is not None:
|
if material is not None:
|
||||||
return True
|
return True
|
||||||
return False
|
return False
|
||||||
@ -318,11 +321,15 @@ class LightBaker:
|
|||||||
toggle.track(objs, "hide_render", False)
|
toggle.track(objs, "hide_render", False)
|
||||||
for i in bpy.data.objects:
|
for i in bpy.data.objects:
|
||||||
i.select = i == objs
|
i.select = i == objs
|
||||||
|
if not self._has_valid_material(i):
|
||||||
|
toggle.track(i, "hide_render", True)
|
||||||
else:
|
else:
|
||||||
for i in bpy.data.objects:
|
for i in bpy.data.objects:
|
||||||
value = i in objs
|
value = i in objs
|
||||||
if value:
|
if value:
|
||||||
toggle.track(i, "hide_render", False)
|
toggle.track(i, "hide_render", False)
|
||||||
|
elif not self._has_valid_material(i):
|
||||||
|
toggle.track(i, "hide_render", True)
|
||||||
i.select = value
|
i.select = value
|
||||||
|
|
||||||
@persistent
|
@persistent
|
||||||
|
@ -24,6 +24,7 @@ class GoodNeighbor:
|
|||||||
return self
|
return self
|
||||||
|
|
||||||
def track(self, cls, attr, value):
|
def track(self, cls, attr, value):
|
||||||
|
if (cls, attr) not in self._tracking:
|
||||||
self._tracking[(cls, attr)] = getattr(cls, attr)
|
self._tracking[(cls, attr)] = getattr(cls, attr)
|
||||||
setattr(cls, attr, value)
|
setattr(cls, attr, value)
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user