Add cutout shell and volume node assets for depth volume processing

- Implemented `cutout_shell.py` to build front normals and shell positions for balloon geometry.
- Created `cutout_volume.py` to establish smooth center fields and manage balloon surface attributes.
- Introduced `pisa_sr_export.py` for exporting PiSA-SR components with dependencies and asset finalization.
This commit is contained in:
2026-09-08 17:18:03 +08:00
parent 7dec3b7ca4
commit 196b964efc
71 changed files with 3440 additions and 1988 deletions

View File

@@ -10,10 +10,12 @@ def node_asset_path():
return Path(__file__).resolve().parents[1] / "assets" / NODE_ASSET_NAME
def load_node_group(group_name):
def load_node_group(group_name, *, asset_revision=None):
existing = bpy.data.node_groups.get(group_name)
if existing is not None:
return existing
if asset_revision is None or existing.get("anyimage_asset_revision") == asset_revision:
return existing
existing.name = group_name + " (Saved)"
asset_path = node_asset_path()
if not asset_path.is_file():

View File

@@ -3,11 +3,11 @@
import bpy
def modifier_input_identifier(node_group, name):
def modifier_input_identifier(node_group, name, *, subtype=None):
for item in node_group.interface.items_tree:
if item.item_type != "SOCKET" or item.in_out != "INPUT":
continue
if item.name == name:
if item.name == name and (subtype is None or getattr(item, "subtype", None) == subtype):
return item.identifier
raise RuntimeError(f"Geometry Nodes input is missing: {name}")