add use_simplify toggle in simplify check panel
This commit is contained in:
+103
-94
@@ -7,6 +7,102 @@ from bpy.props import (BoolProperty,
|
||||
CollectionProperty,
|
||||
StringProperty)
|
||||
|
||||
def list_simplify_affected_objects(context):
|
||||
ob_list = []
|
||||
# Get simplify settings
|
||||
render = context.scene.render
|
||||
simplify_viewport = render.simplify_subdivision
|
||||
simplify_render = render.simplify_subdivision_render
|
||||
max_child_particles = min(render.simplify_child_particles, render.simplify_child_particles_render)
|
||||
volume_limit_resolution = render.simplify_volumes
|
||||
|
||||
for obj in context.scene.objects:
|
||||
affected_data = []
|
||||
|
||||
if hasattr(obj, 'modifiers'):
|
||||
# Check subdivision surface modifiers
|
||||
for modifier in obj.modifiers:
|
||||
if modifier.type == 'SUBSURF':
|
||||
viewport_limited = modifier.levels > simplify_viewport
|
||||
render_limited = modifier.render_levels > simplify_render
|
||||
|
||||
if viewport_limited or render_limited:
|
||||
affected_data.append({
|
||||
'type': 'SUBSURF',
|
||||
'modifier': modifier,
|
||||
'viewport_current': modifier.levels,
|
||||
'viewport_limited': min(modifier.levels, simplify_viewport),
|
||||
'render_current': modifier.render_levels,
|
||||
'render_limited': min(modifier.render_levels, simplify_render),
|
||||
'is_limited': viewport_limited or render_limited
|
||||
})
|
||||
|
||||
# Check multires modifiers
|
||||
if modifier.type == 'MULTIRES':
|
||||
viewport_limited = modifier.levels > simplify_viewport
|
||||
render_limited = modifier.render_levels > simplify_render
|
||||
|
||||
if viewport_limited or render_limited:
|
||||
affected_data.append({
|
||||
'type': 'MULTIRES',
|
||||
'modifier': modifier,
|
||||
'viewport_current': modifier.levels,
|
||||
'viewport_limited': min(modifier.levels, simplify_viewport),
|
||||
'render_current': modifier.render_levels,
|
||||
'render_limited': min(modifier.render_levels, simplify_render),
|
||||
'is_limited': viewport_limited or render_limited
|
||||
})
|
||||
|
||||
# # Check particle systems
|
||||
if hasattr(obj, 'particle_systems') and len(obj.particle_systems) > 0 and max_child_particles < 1.0:
|
||||
for psys in obj.particle_systems:
|
||||
if psys.settings.type in ['EMITTER', 'HAIR']:
|
||||
affected_data.append({
|
||||
'type': 'PARTICLE',
|
||||
'particle_system': psys,
|
||||
'particle_type': psys.settings.type,
|
||||
'count': psys.settings.count
|
||||
})
|
||||
|
||||
# Check materials for subsurface scattering and volumes
|
||||
# material_affected = False
|
||||
# if obj.material_slots:
|
||||
# for slot in obj.material_slots:
|
||||
# if slot.material and slot.material.node_tree:
|
||||
# nodes = slot.material.node_tree.nodes
|
||||
# for node in nodes:
|
||||
# if node.type == 'BSDF_PRINCIPLED':
|
||||
# if hasattr(node.inputs['Subsurface'], 'default_value'):
|
||||
# if node.inputs['Subsurface'].default_value > 0:
|
||||
# affected_data.append({
|
||||
# 'type': 'SUBSURFACE',
|
||||
# 'material': slot.material,
|
||||
# 'subsurface_value': node.inputs['Subsurface'].default_value
|
||||
# })
|
||||
# material_affected = True
|
||||
# break
|
||||
# elif node.type == 'VOLUME_PRINCIPLED':
|
||||
# affected_data.append({
|
||||
# 'type': 'VOLUME_MAT',
|
||||
# 'material': slot.material
|
||||
# })
|
||||
# material_affected = True
|
||||
# break
|
||||
# if material_affected:
|
||||
# break
|
||||
|
||||
# Check for volume objects
|
||||
if obj.type == 'VOLUME' and volume_limit_resolution < 1.0:
|
||||
affected_data.append({
|
||||
'type': 'VOLUME_OBJ'
|
||||
})
|
||||
|
||||
# If object has affected data, add it to the list
|
||||
if affected_data:
|
||||
ob_list.append([obj, affected_data, "OUTLINER_OB_" + obj.type])
|
||||
|
||||
return ob_list
|
||||
|
||||
class RT_OT_list_object_affected_by_simplify(Operator):
|
||||
bl_idname = "rt.list_object_affected_by_simplify"
|
||||
bl_label = "List Objects Affected By Simplify"
|
||||
@@ -14,100 +110,8 @@ class RT_OT_list_object_affected_by_simplify(Operator):
|
||||
bl_options = {"REGISTER"}
|
||||
|
||||
def invoke(self, context, event):
|
||||
self.ob_list = []
|
||||
|
||||
# Get simplify settings
|
||||
render = context.scene.render
|
||||
simplify_viewport = render.simplify_subdivision
|
||||
simplify_render = render.simplify_subdivision_render
|
||||
max_child_particles = min(render.simplify_child_particles, render.simplify_child_particles_render)
|
||||
volume_limit_resolution = render.simplify_volumes
|
||||
|
||||
for obj in context.scene.objects:
|
||||
affected_data = []
|
||||
|
||||
if hasattr(obj, 'modifiers'):
|
||||
# Check subdivision surface modifiers
|
||||
for modifier in obj.modifiers:
|
||||
if modifier.type == 'SUBSURF':
|
||||
viewport_limited = modifier.levels > simplify_viewport
|
||||
render_limited = modifier.render_levels > simplify_render
|
||||
|
||||
if viewport_limited or render_limited:
|
||||
affected_data.append({
|
||||
'type': 'SUBSURF',
|
||||
'modifier': modifier,
|
||||
'viewport_current': modifier.levels,
|
||||
'viewport_limited': min(modifier.levels, simplify_viewport),
|
||||
'render_current': modifier.render_levels,
|
||||
'render_limited': min(modifier.render_levels, simplify_render),
|
||||
'is_limited': viewport_limited or render_limited
|
||||
})
|
||||
|
||||
# Check multires modifiers
|
||||
if modifier.type == 'MULTIRES':
|
||||
viewport_limited = modifier.levels > simplify_viewport
|
||||
render_limited = modifier.render_levels > simplify_render
|
||||
|
||||
if viewport_limited or render_limited:
|
||||
affected_data.append({
|
||||
'type': 'MULTIRES',
|
||||
'modifier': modifier,
|
||||
'viewport_current': modifier.levels,
|
||||
'viewport_limited': min(modifier.levels, simplify_viewport),
|
||||
'render_current': modifier.render_levels,
|
||||
'render_limited': min(modifier.render_levels, simplify_render),
|
||||
'is_limited': viewport_limited or render_limited
|
||||
})
|
||||
|
||||
# # Check particle systems
|
||||
if hasattr(obj, 'particle_systems') and len(obj.particle_systems) > 0 and max_child_particles < 1.0:
|
||||
for psys in obj.particle_systems:
|
||||
if psys.settings.type in ['EMITTER', 'HAIR']:
|
||||
affected_data.append({
|
||||
'type': 'PARTICLE',
|
||||
'particle_system': psys,
|
||||
'particle_type': psys.settings.type,
|
||||
'count': psys.settings.count
|
||||
})
|
||||
|
||||
# Check materials for subsurface scattering and volumes
|
||||
# material_affected = False
|
||||
# if obj.material_slots:
|
||||
# for slot in obj.material_slots:
|
||||
# if slot.material and slot.material.node_tree:
|
||||
# nodes = slot.material.node_tree.nodes
|
||||
# for node in nodes:
|
||||
# if node.type == 'BSDF_PRINCIPLED':
|
||||
# if hasattr(node.inputs['Subsurface'], 'default_value'):
|
||||
# if node.inputs['Subsurface'].default_value > 0:
|
||||
# affected_data.append({
|
||||
# 'type': 'SUBSURFACE',
|
||||
# 'material': slot.material,
|
||||
# 'subsurface_value': node.inputs['Subsurface'].default_value
|
||||
# })
|
||||
# material_affected = True
|
||||
# break
|
||||
# elif node.type == 'VOLUME_PRINCIPLED':
|
||||
# affected_data.append({
|
||||
# 'type': 'VOLUME_MAT',
|
||||
# 'material': slot.material
|
||||
# })
|
||||
# material_affected = True
|
||||
# break
|
||||
# if material_affected:
|
||||
# break
|
||||
|
||||
# Check for volume objects
|
||||
if obj.type == 'VOLUME' and volume_limit_resolution < 1.0:
|
||||
affected_data.append({
|
||||
'type': 'VOLUME_OBJ'
|
||||
})
|
||||
|
||||
# If object has affected data, add it to the list
|
||||
if affected_data:
|
||||
self.ob_list.append([obj, affected_data, "OUTLINER_OB_" + obj.type])
|
||||
|
||||
# self.ob_list = []
|
||||
self.ob_list = list_simplify_affected_objects(context)
|
||||
# Sort by object type, then by name
|
||||
self.ob_list.sort(key=lambda x: (x[2], x[0].name))
|
||||
|
||||
@@ -119,6 +123,11 @@ class RT_OT_list_object_affected_by_simplify(Operator):
|
||||
layout.use_property_split = True
|
||||
render = context.scene.render
|
||||
|
||||
row = layout.row()
|
||||
row.prop(render, "use_simplify", text="Use Simplify")
|
||||
if not render.use_simplify:
|
||||
row.label(text="Simplify is Disabled", icon='INFO')
|
||||
|
||||
# Get current simplify settings
|
||||
simplify_viewport = render.simplify_subdivision
|
||||
simplify_render = render.simplify_subdivision_render
|
||||
|
||||
Reference in New Issue
Block a user