69 lines
2.3 KiB
Python
69 lines
2.3 KiB
Python
import bpy
|
|
from ..Bake import bake_manager
|
|
from .. Functions import gui_functions
|
|
|
|
|
|
class GTT_BakeOperator(bpy.types.Operator):
|
|
"""Bake all attached Textures"""
|
|
bl_idname = "object.gtt_bake_operator"
|
|
bl_label = "Simple Object Operator"
|
|
|
|
@classmethod
|
|
def poll(cls, context):
|
|
if len(context.selected_objects) < 1:
|
|
return False
|
|
else:
|
|
return True
|
|
|
|
def deselect_everything_but_mesh(self,selected_objects):
|
|
for obj in selected_objects:
|
|
if obj.type != 'MESH':
|
|
obj.select_set(False)
|
|
|
|
|
|
def execute(self,context):
|
|
|
|
# ----------------------- VAR --------------------#
|
|
selected_objects = context.selected_objects
|
|
bake_settings = context.scene.bake_settings
|
|
texture_settings = context.scene.texture_settings
|
|
self.deselect_everything_but_mesh(selected_objects)
|
|
|
|
# ----------------------- CHECK SELECTION --------------------#
|
|
for obj in selected_objects:
|
|
if obj.type != 'MESH':
|
|
obj.select_set(False)
|
|
|
|
if len(obj.material_slots) == 0:
|
|
self.report({'INFO'}, 'No Material on ' + obj.name)
|
|
|
|
context.view_layer.objects.active = context.selected_objects[0]
|
|
# ----------------------- SET VISIBLITY TO MATERIAL --------------------#
|
|
texture_settings.preview_bake_texture = False
|
|
|
|
# ----------------------- LIGHTMAP / AO --------------------#
|
|
if bake_settings.lightmap_bake or bake_settings.ao_bake:
|
|
bake_manager.bake_texture(self,selected_objects,bake_settings)
|
|
|
|
if bake_settings.show_texture_after_bake and bake_settings.denoise:
|
|
texture_settings.preview_bake_texture = True
|
|
|
|
for obj in selected_objects:
|
|
if bake_settings.ao_bake:
|
|
obj.ao_map_name = bake_settings.bake_image_name
|
|
if bake_settings.lightmap_bake:
|
|
obj.lightmap_name = bake_settings.bake_image_name
|
|
|
|
gui_functions.update_active_element_in_bake_list()
|
|
|
|
# ----------------------- PBR Texture --------------------#
|
|
if bake_settings.pbr_bake:
|
|
bake_manager.bake_on_plane(self,selected_objects,bake_settings)
|
|
|
|
|
|
return {'FINISHED'}
|
|
|
|
|
|
|
|
|