Files
2026-01-10 16:28:39 -05:00

51 lines
1.7 KiB
Python

from .angles import CAMERA_MAPS, get_qwen_prompt
# Node stable, version officielle
NODE_NAME = "QwenCameraSelector"
NODE_VERSION = "1.0.0"
class QwenCameraSelector:
CATEGORY = "Camera/Qwen"
RETURN_TYPES = ("STRING", "STRING")
RETURN_NAMES = ("prompt", "prompt_preview")
FUNCTION = "run"
OUTPUT_TOOLTIPS = (
"Prompt string for Qwen-Multiple-Angle camera settings",
"Preview of the full prompt (connect to Text Display node to see it)"
)
@classmethod
def INPUT_TYPES(cls):
required = {}
for key in ["azimuth", "elevation", "distance"]:
map_data = CAMERA_MAPS[key]["map"]
default = CAMERA_MAPS[key]["default"]
options = [str(k) for k in map_data.keys()]
# Tooltip “friendly”
if key in ["azimuth", "elevation"]:
tooltip_lines = [f"{k}° → {v}" for k, v in map_data.items()]
else: # distance
tooltip_lines = [f"{v} ({k})" for k, v in map_data.items()]
tooltip = "\n".join(tooltip_lines)
default_key = str([k for k, v in map_data.items() if v == default][0])
required[key] = (options, {"default": default_key, "tooltip": tooltip})
return {"required": required}
def run(self, azimuth, elevation, distance):
az = int(azimuth)
el = int(elevation)
dist = distance
camera_prompt = get_qwen_prompt(az, el, dist)
final_prompt = "<sks> " + camera_prompt
# Debug console (optionnel)
print("[QwenCameraSelector] Prompt:", final_prompt)
return (final_prompt, final_prompt)