Files
2025-03-01 23:06:32 +01:00

53 lines
1.7 KiB
Python

class OOPViewNode:
ANGLE_DESCRIPTIONS = [
"Normal", "High", "Low", "Upward", "Downward", "Side", "Tilted",
"Diagonal", "EyeLevel", "Bird's Eye", "Worm's Eye", "Dutch Angle", "Overhead"
]
# Predefined view types for consistency
VIEW_TYPES = [
"Closeup", "Portrait", "FullBody", "Landscape", "Panorama", "WideAngle",
"Macro", "MediumShot", "LongShot", "Establishing", "Aerial", "Profile",
"ActionShot", "Over-the-Shoulder", "Extreme Closeup"
]
def __init__(self):
self.name = "View"
@classmethod
def INPUT_TYPES(cls):
return {
"required": {
"angle": (cls.ANGLE_DESCRIPTIONS, {"default": "Normal"}),
"viewType": (cls.VIEW_TYPES, {"default": "Portrait"}),
"backgroundBlur": ("BOOLEAN", {"default": False}),
}
}
RETURN_TYPES = ("OOP_VIEW",)
FUNCTION = "generate_view"
CATEGORY = "Object-Oriented Prompting"
def generate_view(self, angle, viewType, backgroundBlur):
# Determine background color based on the boolean flag
background = "NoBlur"
if backgroundBlur:
background = "Blur"
# Return a formatted string summarizing the view properties
return (f"shot:{viewType}, angle:{angle}, background:{background}",)
@classmethod
def IS_CHANGED(cls, angle, viewType, backgroundBlur):
# Simple hash function to signal a change when any parameter changes
return hash((angle, viewType, backgroundBlur))
# Mapping the node class to a name key
NODE_CLASS_MAPPINGS = {
"OOPViewNode": OOPViewNode
}
# A friendly display name for the node
NODE_DISPLAY_NAME_MAPPINGS = {
"OOPViewNode": "OOP View 📐"
}