from mmcm.utils.util import flatten from .attributes import BaseAttribute2Text from . import AttrRegister __all__ = ["Render"] RenderMap = { "Epic": "artstation, epic environment, highly detailed, 8k, HD", "HD": "8k, highly detailed", "EpicHD": "hyper detailed, beautiful lighting, epic environment, octane render, cinematic, 8k", "Digital": "detailed illustration, crisp lines, digital art, 8k, trending on artstation", "Unreal1": "artstation, concept art, smooth, sharp focus, illustration, unreal engine 5, 8k", "Unreal2": "concept art, octane render, artstation, epic environment, highly detailed, 8k", } @AttrRegister.register class Render(BaseAttribute2Text): name = "render" def __init__(self, name: str = None) -> None: super().__init__(name) def __call__(self, attributes: str) -> str: if attributes == "" or attributes is None: return "" attributes = attributes.split(",") render = [RenderMap[attr] for attr in attributes if attr in RenderMap] render = flatten(render, ignored_iterable_types=[str]) if len(render) == 1: render = render[0] return render