mirror of https://github.com/H-uru/korman.git
Browse Source
This allows the artist to control what happens with lightmaps more easily when there are lots of lightmapped objects in the age. Fixes #118pull/122/head
Adam Johnson
6 years ago
7 changed files with 145 additions and 5 deletions
@ -0,0 +1,46 @@ |
|||||||
|
# This file is part of Korman. |
||||||
|
# |
||||||
|
# Korman is free software: you can redistribute it and/or modify |
||||||
|
# it under the terms of the GNU General Public License as published by |
||||||
|
# the Free Software Foundation, either version 3 of the License, or |
||||||
|
# (at your option) any later version. |
||||||
|
# |
||||||
|
# Korman is distributed in the hope that it will be useful, |
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
# GNU General Public License for more details. |
||||||
|
# |
||||||
|
# You should have received a copy of the GNU General Public License |
||||||
|
# along with Korman. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
|
import bpy |
||||||
|
from bpy.props import * |
||||||
|
|
||||||
|
from ..exporter.etlight import _NUM_RENDER_LAYERS |
||||||
|
|
||||||
|
class PlasmaBakePass(bpy.types.PropertyGroup): |
||||||
|
def _get_display_name(self): |
||||||
|
return self.name |
||||||
|
def _set_display_name(self, value): |
||||||
|
for i in bpy.data.objects: |
||||||
|
lm = i.plasma_modifiers.lightmap |
||||||
|
if lm.bake_pass_name == self.name: |
||||||
|
lm.bake_pass_name = value |
||||||
|
self.name = value |
||||||
|
|
||||||
|
display_name = StringProperty(name="Pass Name", |
||||||
|
get=_get_display_name, |
||||||
|
set=_set_display_name, |
||||||
|
options=set()) |
||||||
|
|
||||||
|
render_layers = BoolVectorProperty(name="Layers to Bake", |
||||||
|
description="Render layers to use for baking", |
||||||
|
options=set(), |
||||||
|
subtype="LAYER", |
||||||
|
size=_NUM_RENDER_LAYERS, |
||||||
|
default=((True,) * _NUM_RENDER_LAYERS)) |
||||||
|
|
||||||
|
|
||||||
|
class PlasmaScene(bpy.types.PropertyGroup): |
||||||
|
bake_passes = CollectionProperty(type=PlasmaBakePass) |
||||||
|
active_pass_index = IntProperty(options={"HIDDEN"}) |
@ -0,0 +1,53 @@ |
|||||||
|
# This file is part of Korman. |
||||||
|
# |
||||||
|
# Korman is free software: you can redistribute it and/or modify |
||||||
|
# it under the terms of the GNU General Public License as published by |
||||||
|
# the Free Software Foundation, either version 3 of the License, or |
||||||
|
# (at your option) any later version. |
||||||
|
# |
||||||
|
# Korman is distributed in the hope that it will be useful, |
||||||
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
||||||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
||||||
|
# GNU General Public License for more details. |
||||||
|
# |
||||||
|
# You should have received a copy of the GNU General Public License |
||||||
|
# along with Korman. If not, see <http://www.gnu.org/licenses/>. |
||||||
|
|
||||||
|
import bpy |
||||||
|
from . import ui_list |
||||||
|
|
||||||
|
class RenderLayerButtonsPanel: |
||||||
|
bl_space_type = "PROPERTIES" |
||||||
|
bl_region_type = "WINDOW" |
||||||
|
bl_context = "render_layer" |
||||||
|
|
||||||
|
@classmethod |
||||||
|
def poll(cls, context): |
||||||
|
return context.scene.render.engine == "PLASMA_GAME" |
||||||
|
|
||||||
|
|
||||||
|
class BakePassUI(bpy.types.UIList): |
||||||
|
def draw_item(self, context, layout, data, item, icon, active_data, active_property, index=0, flt_flag=0): |
||||||
|
layout.prop(item, "display_name", emboss=False, text="", icon="RENDERLAYERS") |
||||||
|
|
||||||
|
|
||||||
|
class PlasmaBakePassPanel(RenderLayerButtonsPanel, bpy.types.Panel): |
||||||
|
bl_label = "Plasma Bake Passes" |
||||||
|
|
||||||
|
def draw(self, context): |
||||||
|
layout = self.layout |
||||||
|
scene = context.scene.plasma_scene |
||||||
|
|
||||||
|
ui_list.draw_list(layout, "BakePassUI", "scene", scene, "bake_passes", |
||||||
|
"active_pass_index", name_prefix="Pass", |
||||||
|
name_prop="display_name", rows=3, maxrows=3) |
||||||
|
|
||||||
|
active_pass_index = scene.active_pass_index |
||||||
|
try: |
||||||
|
bake_pass = scene.bake_passes[active_pass_index] |
||||||
|
except: |
||||||
|
pass |
||||||
|
else: |
||||||
|
box = layout.box() |
||||||
|
box.prop(bake_pass, "display_name") |
||||||
|
box.prop(bake_pass, "render_layers") |
Loading…
Reference in new issue