Add lightmapping props to object, register lightmapper

This commit is contained in:
Alexander 2020-08-24 22:12:31 +02:00
parent 5d914b3bf5
commit 495d485f39
3 changed files with 108 additions and 1 deletions

View file

@ -14,7 +14,8 @@ def bake():
if obj.TLM_ObjectProperties.tlm_mesh_lightmap_use:
iterNum = iterNum + 1
iterNum = iterNum - 1
if iterNum > 1:
iterNum = iterNum - 1
for obj in bpy.data.objects:
if obj.type == 'MESH':

View file

@ -3,6 +3,7 @@ import arm.assets
import bpy
from bpy.types import Menu, Panel, UIList
from bpy.props import *
from arm.lightmapper import operators, panels, properties, preferences, utility, keymap
class ArmBakeListItem(bpy.types.PropertyGroup):
obj: PointerProperty(type=bpy.types.Object, description="The object to bake")
@ -351,6 +352,19 @@ def register():
('Smart UV Project', 'Smart UV Project', 'Smart UV Project')],
name = "UV Unwrap", default='Smart UV Project')
#Register lightmapper
bpy.types.Scene.arm_bakemode = EnumProperty(
items = [('Static Map', 'Static Map', 'Static Map'),
('Lightmap', 'Lightmap', 'Lightmap')],
name = "Bake mode", default='Static Map')
operators.register()
properties.register()
preferences.register()
panels.register()
keymap.register()
def unregister():
bpy.utils.unregister_class(ArmBakeListItem)
bpy.utils.unregister_class(ARM_UL_BakeList)
@ -364,3 +378,11 @@ def unregister():
bpy.utils.unregister_class(ArmBakeAddSelectedButton)
bpy.utils.unregister_class(ArmBakeClearAllButton)
bpy.utils.unregister_class(ArmBakeRemoveBakedMaterialsButton)
#Unregister lightmapper
operators.unregister()
properties.unregister()
preferences.unregister()
panels.unregister()
keymap.unregister()

View file

@ -14,6 +14,7 @@ import arm.utils
from arm.lightmapper.utility import icon
from arm.lightmapper.properties.denoiser import oidn, optix
import importlib
# Menu in object region
class ARM_PT_ObjectPropsPanel(bpy.types.Panel):
@ -53,6 +54,49 @@ class ARM_PT_ObjectPropsPanel(bpy.types.Panel):
# Properties list
arm.props_properties.draw_properties(layout, obj)
# Lightmapping props
if obj.type == "MESH":
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_lightmap_use")
if obj.TLM_ObjectProperties.tlm_mesh_lightmap_use:
row = layout.row()
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_lightmap_resolution")
row = layout.row()
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_lightmap_unwrap_mode")
row = layout.row()
if obj.TLM_ObjectProperties.tlm_mesh_lightmap_unwrap_mode == "AtlasGroup":
pass
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_unwrap_margin")
row = layout.row()
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filter_override")
row = layout.row()
if obj.TLM_ObjectProperties.tlm_mesh_filter_override:
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_mode")
row = layout.row(align=True)
if obj.TLM_ObjectProperties.tlm_mesh_filtering_mode == "Gaussian":
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_gaussian_strength")
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_iterations")
elif obj.TLM_ObjectProperties.tlm_mesh_filtering_mode == "Box":
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_box_strength")
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_iterations")
elif obj.TLM_ObjectProperties.tlm_mesh_filtering_mode == "Bilateral":
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_bilateral_diameter")
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_bilateral_color_deviation")
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_bilateral_coordinate_deviation")
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_iterations")
else:
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_median_kernel", expand=True)
row = layout.row(align=True)
row.prop(obj.TLM_ObjectProperties, "tlm_mesh_filtering_iterations")
class ARM_PT_ModifiersPropsPanel(bpy.types.Panel):
bl_label = "Armory Props"
bl_space_type = "PROPERTIES"
@ -1300,6 +1344,46 @@ class ARM_PT_BakePanel(bpy.types.Panel):
row = layout.row(align=True)
row.operator("tlm.remove_uv_selection")
row = layout.row(align=True)
##################
#SELECTION OPERATORS!
row = layout.row(align=True)
row.label(text="Selection Operators")
row = layout.row(align=True)
row = layout.row(align=True)
row.operator("tlm.enable_selection")
row = layout.row(align=True)
row.operator("tlm.disable_selection")
row = layout.row(align=True)
row.prop(sceneProperties, "tlm_override_object_settings")
if sceneProperties.tlm_override_object_settings:
row = layout.row(align=True)
row = layout.row()
row.prop(sceneProperties, "tlm_mesh_lightmap_unwrap_mode")
row = layout.row()
if sceneProperties.tlm_mesh_lightmap_unwrap_mode == "AtlasGroup":
if scene.TLM_AtlasList_index >= 0 and len(scene.TLM_AtlasList) > 0:
row = layout.row()
item = scene.TLM_AtlasList[scene.TLM_AtlasList_index]
row.prop_search(sceneProperties, "tlm_atlas_pointer", scene, "TLM_AtlasList", text='Atlas Group')
else:
row = layout.label(text="Add Atlas Groups from the scene lightmapping settings.")
else:
row.prop(sceneProperties, "tlm_mesh_lightmap_resolution")
row = layout.row()
row.prop(sceneProperties, "tlm_mesh_unwrap_margin")
row = layout.row(align=True)
row.operator("tlm.remove_uv_selection")
row = layout.row(align=True)
class ArmGenLodButton(bpy.types.Operator):