Refactor image handling and update foreground processing
- Changed the logic in `remove_background_faces` to keep only faces with all foreground vertices. - Updated background job to save foreground images with a new naming convention (`color.0001.png`). - Replaced `copy_frames` with `copy_color_images` in various jobs to ensure consistent image naming. - Introduced a new function `copy_color_images` to handle the copying of images with a specific naming format. - Updated the BEN2 model to save output images with a new prefix for better clarity. - Modified tests to reflect changes in image naming and processing logic. - Added a new shadeless node group for improved material handling in geometry nodes. - Enhanced validation scripts to check for new image naming conventions and ensure proper functionality.
This commit is contained in:
@@ -13,6 +13,8 @@ sys.path.insert(
|
||||
|
||||
from snapform.blender.depth_plane import (
|
||||
DEPTH_PLANE_MATERIAL_NODE_GROUP_NAME,
|
||||
MATERIAL_COLOR_SPACE,
|
||||
SHADELESS_NODE_GROUP_NAME,
|
||||
SURFACE_MATERIAL_NODE_GROUP_NAME,
|
||||
add_depth_plane_processing,
|
||||
create_material,
|
||||
@@ -133,7 +135,6 @@ def main():
|
||||
foreground,
|
||||
1.0,
|
||||
displacement_image=depth,
|
||||
foreground_image=foreground,
|
||||
)
|
||||
mesh.materials.append(material)
|
||||
material_group = bpy.data.node_groups[DEPTH_PLANE_MATERIAL_NODE_GROUP_NAME]
|
||||
@@ -232,6 +233,47 @@ def main():
|
||||
for node in material.node_tree.nodes
|
||||
if node.bl_idname == "ShaderNodeTexImage"
|
||||
)
|
||||
shadeless_material = create_material(
|
||||
"Shadeless",
|
||||
foreground,
|
||||
1.0,
|
||||
shadeless=True,
|
||||
)
|
||||
shadeless_group = bpy.data.node_groups[SHADELESS_NODE_GROUP_NAME]
|
||||
shadeless_nodes = [
|
||||
node
|
||||
for node in shadeless_material.node_tree.nodes
|
||||
if node.bl_idname == "ShaderNodeGroup"
|
||||
and node.node_tree == shadeless_group
|
||||
]
|
||||
assert len(shadeless_nodes) == 1
|
||||
assert not any(
|
||||
node.bl_idname == "ShaderNodeEmission"
|
||||
for node in shadeless_material.node_tree.nodes
|
||||
)
|
||||
assert [
|
||||
item.name
|
||||
for item in shadeless_group.interface.items_tree
|
||||
if item.item_type == "SOCKET" and item.in_out == "INPUT"
|
||||
] == ["Color"]
|
||||
assert [
|
||||
item.name
|
||||
for item in shadeless_group.interface.items_tree
|
||||
if item.item_type == "SOCKET" and item.in_out == "OUTPUT"
|
||||
] == ["Shader"]
|
||||
assert {
|
||||
node.label: node.operation
|
||||
for node in shadeless_group.nodes
|
||||
if node.bl_idname == "ShaderNodeMath"
|
||||
} == {
|
||||
"Bounce Count": "SUBTRACT",
|
||||
"Camera or Refracted": "SUBTRACT",
|
||||
"Limit Reflections": "SUBTRACT",
|
||||
"Camera Ray to Glossy": "MULTIPLY",
|
||||
"Shadow or Reflection?": "MAXIMUM",
|
||||
"Shadow, Reflect or Refract?": "MAXIMUM",
|
||||
}
|
||||
assert foreground.colorspace_settings.name == MATERIAL_COLOR_SPACE
|
||||
surface_material = create_material("Surface", foreground, 1.0)
|
||||
surface_group = bpy.data.node_groups[SURFACE_MATERIAL_NODE_GROUP_NAME]
|
||||
surface_group_nodes = [
|
||||
|
||||
Reference in New Issue
Block a user