92 lines
2.7 KiB
Python
92 lines
2.7 KiB
Python
import bpy
|
|
from bpy.app.handlers import persistent
|
|
|
|
|
|
def update_pbr_button(self,context):
|
|
self["lightmap_bake"] = False
|
|
self["ao_bake"] = False
|
|
|
|
def update_lightmap_button(self,context):
|
|
self["pbr_bake"] = False
|
|
self["ao_bake"] = False
|
|
update_active_element_in_bake_list()
|
|
|
|
def update_ao_button(self,context):
|
|
self["lightmap_bake"] = False
|
|
self["pbr_bake"] = False
|
|
update_active_element_in_bake_list()
|
|
|
|
|
|
# ----------------------- UPDATE BAKE IMAGE NAME / ENUM--------------------#
|
|
|
|
last_selection = []
|
|
|
|
@persistent
|
|
def update_on_selection(scene):
|
|
C = bpy.context
|
|
global last_selection
|
|
object = getattr(C,"object",None)
|
|
if object is None:
|
|
return
|
|
|
|
if C.selected_objects != last_selection:
|
|
last_selection = C.selected_objects
|
|
update_active_element_in_bake_list()
|
|
|
|
def update_bake_list(bake_settings,context):
|
|
|
|
bake_textures_set = set()
|
|
|
|
for obj in bpy.data.objects:
|
|
if bake_settings.lightmap_bake:
|
|
if obj.get("lightmap_name"):
|
|
bake_textures_set.add((obj.lightmap_name, obj.lightmap_name, "Baked Texture Name"))
|
|
if bake_settings.ao_bake:
|
|
if obj.get("ao_map_name"):
|
|
bake_textures_set.add((obj.ao_map_name, obj.ao_map_name, "Baked Texture Name"))
|
|
|
|
if len(bake_textures_set) == 0:
|
|
bake_textures_set.add(("-- Baking Groups --","-- Baking Groups --","No Lightmap baked yet"))
|
|
|
|
return list(bake_textures_set)
|
|
|
|
|
|
def update_active_element_in_bake_list():
|
|
C = bpy.context
|
|
active_object = C.active_object
|
|
bake_settings = C.scene.bake_settings
|
|
new_bake_image_name = ""
|
|
|
|
if bake_settings.lightmap_bake:
|
|
new_bake_image_name = active_object.get("lightmap_name")
|
|
if new_bake_image_name is None:
|
|
new_bake_image_name = "Lightmap " + active_object.name
|
|
if bake_settings.ao_bake:
|
|
new_bake_image_name = active_object.get("ao_map_name")
|
|
if new_bake_image_name is None:
|
|
new_bake_image_name = "AO " + active_object.name
|
|
|
|
enum_items = bake_settings.get_baked_lightmaps()
|
|
keys = [key[0] for key in enum_items]
|
|
if new_bake_image_name in keys:
|
|
bake_settings.bake_image_name = new_bake_image_name
|
|
bake_settings.baking_groups = new_bake_image_name
|
|
else:
|
|
if active_object.type == "MESH":
|
|
bake_settings.bake_image_name = new_bake_image_name
|
|
|
|
|
|
def headline(layout,*valueList):
|
|
box = layout.box()
|
|
row = box.row()
|
|
|
|
split = row.split()
|
|
for pair in valueList:
|
|
split = split.split(factor=pair[0])
|
|
split.label(text=pair[1])
|
|
|
|
@persistent
|
|
def init_values(self,context):
|
|
bpy.context.scene.world.light_settings.distance = 1
|
|
|