wildprompt
This commit is contained in:
parent
1bcbd6501b
commit
8a95f00c0f
|
|
@ -36,7 +36,7 @@ def worker():
|
|||
import extras.face_crop
|
||||
import fooocus_version
|
||||
|
||||
from modules.sdxl_styles import apply_style, apply_wildcards, fooocus_expansion
|
||||
from modules.sdxl_styles import apply_style, apply_wildcards, apply_wildprompts, get_all_wildprompts, fooocus_expansion
|
||||
from modules.private_logger import log
|
||||
from extras.expansion import safe_str
|
||||
from modules.util import remove_empty_str, HWC3, resize_image, \
|
||||
|
|
@ -121,6 +121,8 @@ def worker():
|
|||
|
||||
prompt = args.pop()
|
||||
negative_prompt = args.pop()
|
||||
wildprompt_selections = args.pop()
|
||||
wildprompt_generate_all = args.pop()
|
||||
style_selections = args.pop()
|
||||
performance_selection = args.pop()
|
||||
aspect_ratios_selection = args.pop()
|
||||
|
|
@ -153,6 +155,7 @@ def worker():
|
|||
outpaint_selections = [o.lower() for o in outpaint_selections]
|
||||
base_model_additional_loras = []
|
||||
raw_style_selections = copy.deepcopy(style_selections)
|
||||
raw_wildprompt_selections = copy.deepcopy(wildprompt_selections)
|
||||
uov_method = uov_method.lower()
|
||||
|
||||
if fooocus_expansion in style_selections:
|
||||
|
|
@ -162,6 +165,7 @@ def worker():
|
|||
use_expansion = False
|
||||
|
||||
use_style = len(style_selections) > 0
|
||||
use_wildprompt = len(wildprompt_selections) > 0
|
||||
|
||||
if base_model_name == refiner_model_name:
|
||||
print(f'Refiner disabled because base model and refiner are same.')
|
||||
|
|
@ -376,11 +380,35 @@ def worker():
|
|||
|
||||
progressbar(async_task, 3, 'Processing prompts ...')
|
||||
tasks = []
|
||||
for i in range(image_number):
|
||||
wildprompts = []
|
||||
wildprompt_count = len(wildprompt_selections)
|
||||
|
||||
# Get wildprompts if wildprompt_generate_all is enabled and there is only one wildprompt
|
||||
if wildprompt_generate_all and wildprompt_count == 1:
|
||||
wildprompts = get_all_wildprompts(wildprompt_selections)
|
||||
|
||||
if len(wildprompts) > 0:
|
||||
totalprompts = len(wildprompts) * image_number
|
||||
else:
|
||||
totalprompts = image_number
|
||||
|
||||
for i in range(totalprompts):
|
||||
task_seed = (seed + i) % (constants.MAX_SEED + 1) # randint is inclusive, % is not
|
||||
task_rng = random.Random(task_seed) # may bind to inpaint noise in the future
|
||||
|
||||
if len(wildprompts) > 0:
|
||||
wildprompt_prompt = wildprompts[i // image_number]
|
||||
else:
|
||||
wildprompt_prompt = apply_wildprompts(wildprompt_selections, task_rng) if use_wildprompt else ''
|
||||
|
||||
wildprompt_prompt = apply_wildcards(wildprompt_prompt, task_rng)
|
||||
task_prompt = apply_wildcards(prompt, task_rng)
|
||||
|
||||
if wildprompt_prompt and task_prompt:
|
||||
task_prompt = f"{wildprompt_prompt}, {task_prompt}"
|
||||
elif wildprompt_prompt:
|
||||
task_prompt = wildprompt_prompt
|
||||
|
||||
task_negative_prompt = apply_wildcards(negative_prompt, task_rng)
|
||||
task_extra_positive_prompts = [apply_wildcards(pmt, task_rng) for pmt in extra_positive_prompts]
|
||||
task_extra_negative_prompts = [apply_wildcards(pmt, task_rng) for pmt in extra_negative_prompts]
|
||||
|
|
@ -780,6 +808,7 @@ def worker():
|
|||
('Negative Prompt', task['log_negative_prompt']),
|
||||
('Fooocus V2 Expansion', task['expansion']),
|
||||
('Styles', str(raw_style_selections)),
|
||||
('Wildprompts', str(raw_wildprompt_selections)),
|
||||
('Performance', performance_selection),
|
||||
('Resolution', str((width, height))),
|
||||
('Sharpness', sharpness),
|
||||
|
|
@ -799,7 +828,7 @@ def worker():
|
|||
if n != 'None':
|
||||
d.append((f'LoRA {li + 1}', f'{n} : {w}'))
|
||||
d.append(('Version', 'v' + fooocus_version.version))
|
||||
log(x, d)
|
||||
log(x, d, str(wildprompt_selections).replace("'", ""))
|
||||
|
||||
yield_result(async_task, imgs, do_not_show_finished_images=len(tasks) == 1)
|
||||
except ldm_patched.modules.model_management.InterruptProcessingException as e:
|
||||
|
|
|
|||
|
|
@ -233,6 +233,11 @@ default_styles = get_config_item_or_set_default(
|
|||
],
|
||||
validator=lambda x: isinstance(x, list) and all(y in modules.sdxl_styles.legal_style_names for y in x)
|
||||
)
|
||||
default_wildprompts = get_config_item_or_set_default(
|
||||
key='default_wildprompts',
|
||||
default_value=[],
|
||||
validator=lambda x: isinstance(x, list) and all(y in modules.sdxl_styles.legal_wildprompt_names for y in x)
|
||||
)
|
||||
default_prompt_negative = get_config_item_or_set_default(
|
||||
key='default_prompt_negative',
|
||||
default_value='',
|
||||
|
|
|
|||
|
|
@ -12,20 +12,18 @@ log_cache = {}
|
|||
|
||||
|
||||
def get_current_html_path():
|
||||
date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs,
|
||||
extension='png')
|
||||
date_string, local_temp_filename, only_name, logpath = generate_temp_filename(folder=modules.config.path_outputs, extension='png')
|
||||
html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html')
|
||||
return html_name
|
||||
|
||||
|
||||
def log(img, dic):
|
||||
def log(img, dic, wildprompt=''):
|
||||
if args_manager.args.disable_image_log:
|
||||
return
|
||||
|
||||
date_string, local_temp_filename, only_name = generate_temp_filename(folder=modules.config.path_outputs, extension='png')
|
||||
date_string, local_temp_filename, only_name, logpath = generate_temp_filename(folder=modules.config.path_outputs, extension='png', wildprompt=wildprompt)
|
||||
os.makedirs(os.path.dirname(local_temp_filename), exist_ok=True)
|
||||
Image.fromarray(img).save(local_temp_filename)
|
||||
html_name = os.path.join(os.path.dirname(local_temp_filename), 'log.html')
|
||||
html_name = os.path.join(os.path.dirname(logpath), 'log.html')
|
||||
|
||||
css_styles = (
|
||||
"<style>"
|
||||
|
|
|
|||
|
|
@ -8,6 +8,7 @@ from modules.util import get_files_from_folder
|
|||
# cannot use modules.config - validators causing circular imports
|
||||
styles_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../sdxl_styles/'))
|
||||
wildcards_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../wildcards/'))
|
||||
wildprompts_path = os.path.abspath(os.path.join(os.path.dirname(__file__), '../wildprompts/'))
|
||||
wildcards_max_bfs_depth = 64
|
||||
|
||||
|
||||
|
|
@ -24,8 +25,14 @@ def normalize_key(k):
|
|||
|
||||
|
||||
styles = {}
|
||||
wildprompts = {}
|
||||
|
||||
styles_files = get_files_from_folder(styles_path, ['.json'])
|
||||
wildcards_files = get_files_from_folder(wildcards_path, ['.txt'])
|
||||
|
||||
def GetLegalWildpromptNames():
|
||||
wildprompts_files = get_files_from_folder(wildprompts_path, ['.txt'])
|
||||
return [os.path.splitext(file)[0] for file in wildprompts_files]
|
||||
|
||||
for x in ['sdxl_styles_fooocus.json',
|
||||
'sdxl_styles_sai.json',
|
||||
|
|
@ -52,7 +59,8 @@ for styles_file in styles_files:
|
|||
style_keys = list(styles.keys())
|
||||
fooocus_expansion = "Fooocus V2"
|
||||
legal_style_names = [fooocus_expansion] + style_keys
|
||||
|
||||
legal_wildcard_names = [os.path.splitext(file)[0] for file in wildcards_files]
|
||||
legal_wildprompt_names = GetLegalWildpromptNames()
|
||||
|
||||
def apply_style(style, positive):
|
||||
p, n = styles[style]
|
||||
|
|
@ -80,3 +88,30 @@ def apply_wildcards(wildcard_text, rng, directory=wildcards_path):
|
|||
|
||||
print(f'[Wildcards] BFS stack overflow. Current text: {wildcard_text}')
|
||||
return wildcard_text
|
||||
|
||||
def apply_wildprompts(wildprompt_selections, rng):
|
||||
prompts = []
|
||||
|
||||
for wildprompt_selection in wildprompt_selections:
|
||||
try:
|
||||
wildprompt_text = open(os.path.join(wildprompts_path, f'{wildprompt_selection}.txt'), encoding='utf-8').read().splitlines()
|
||||
wildprompt_text = [x for x in wildprompt_text if x != '']
|
||||
assert len(wildprompt_text) > 0
|
||||
prompts.append(rng.choice(wildprompt_text))
|
||||
except:
|
||||
print(f'[Wildprompts] Warning: {wildprompt_selection}.txt missing or empty. ')
|
||||
|
||||
return ', '.join(prompts)
|
||||
|
||||
def get_all_wildprompts(wildprompt_selections):
|
||||
prompts = []
|
||||
|
||||
try:
|
||||
wildprompt_text = open(os.path.join(wildprompts_path, f'{wildprompt_selections[0]}.txt'), encoding='utf-8').read().splitlines()
|
||||
wildprompt_text = [x for x in wildprompt_text if x != '']
|
||||
assert len(wildprompt_text) > 0
|
||||
prompts.extend(wildprompt_text)
|
||||
except:
|
||||
print(f'[Wildprompts] Warning: {wildprompt_selections[0]}.txt missing or empty. ')
|
||||
|
||||
return prompts
|
||||
|
|
@ -148,14 +148,19 @@ def join_prompts(*args, **kwargs):
|
|||
return ', '.join(prompts)
|
||||
|
||||
|
||||
def generate_temp_filename(folder='./outputs/', extension='png'):
|
||||
def generate_temp_filename(folder='./outputs/', extension='png', wildprompt=''):
|
||||
current_time = datetime.datetime.now()
|
||||
date_string = current_time.strftime("%Y-%m-%d")
|
||||
time_string = current_time.strftime("%Y-%m-%d_%H-%M-%S")
|
||||
random_number = random.randint(1000, 9999)
|
||||
filename = f"{time_string}_{random_number}.{extension}"
|
||||
result = os.path.join(folder, date_string, filename)
|
||||
return date_string, os.path.abspath(os.path.realpath(result)), filename
|
||||
wildprompt_string = '' if wildprompt == '[]' else str(wildprompt)
|
||||
fullpath = os.path.join(folder, date_string, wildprompt_string, filename)
|
||||
logpath = os.path.join(folder, date_string, filename)
|
||||
if wildprompt != '[]':
|
||||
filename = f"{wildprompt}/{filename}"
|
||||
print (f'filename = {filename}')
|
||||
return date_string, os.path.abspath(os.path.realpath(fullpath)), filename, logpath
|
||||
|
||||
|
||||
def get_files_from_folder(folder_path, exensions=None, name_filter=None):
|
||||
|
|
|
|||
|
|
@ -0,0 +1,39 @@
|
|||
import os
|
||||
import gradio as gr
|
||||
import modules.localization as localization
|
||||
import json
|
||||
import modules.sdxl_styles as sdxl_styles
|
||||
|
||||
all_wildprompts = []
|
||||
|
||||
def try_load_sorted_wildprompts():
|
||||
global all_wildprompts
|
||||
|
||||
all_wildprompts = sdxl_styles.GetLegalWildpromptNames()
|
||||
|
||||
return all_wildprompts
|
||||
|
||||
def sort_wildprompts(selected):
|
||||
global all_wildprompts
|
||||
unselected = [y for y in all_wildprompts if y not in selected]
|
||||
sorted_wildprompts = selected + unselected
|
||||
try:
|
||||
with open('sorted_wildprompt.json', 'wt', encoding='utf-8') as fp:
|
||||
json.dump(sorted_wildprompts, fp, indent=4)
|
||||
except Exception as e:
|
||||
print('Write wildprompt sorting failed.')
|
||||
print(e)
|
||||
all_wildprompts = sorted_wildprompts
|
||||
return gr.CheckboxGroup.update(choices=sorted_wildprompts)
|
||||
|
||||
|
||||
def localization_key(x):
|
||||
return x + localization.current_translation.get(x, '')
|
||||
|
||||
|
||||
def search_wildprompts(selected, query):
|
||||
unselected = [y for y in all_wildprompts if y not in selected]
|
||||
matched = [y for y in unselected if query.lower() in localization_key(y).lower()] if len(query.replace(' ', '')) > 0 else []
|
||||
unmatched = [y for y in unselected if y not in matched]
|
||||
sorted_wildprompts = matched + selected + unmatched
|
||||
return gr.CheckboxGroup.update(choices=sorted_wildprompts)
|
||||
|
|
@ -1,11 +1,11 @@
|
|||
{
|
||||
"default_model": "animaPencilXL_v100.safetensors",
|
||||
"default_refiner": "None",
|
||||
"default_refiner_switch": 0.5,
|
||||
"default_model": "Toon\\bluePencilXL_v300.safetensors",
|
||||
"default_refiner": "Toon\\DreamShaper_8_pruned.safetensors",
|
||||
"default_refiner_switch": 0.8,
|
||||
"default_loras": [
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
"sd_xl_offset_example-lora_1.0.safetensors",
|
||||
0.5
|
||||
],
|
||||
[
|
||||
"None",
|
||||
|
|
@ -29,18 +29,18 @@
|
|||
"default_sampler": "dpmpp_2m_sde_gpu",
|
||||
"default_scheduler": "karras",
|
||||
"default_performance": "Speed",
|
||||
"default_prompt": "1girl, ",
|
||||
"default_prompt_negative": "",
|
||||
"default_prompt": "",
|
||||
"default_prompt_negative": "(embedding:unaestheticXLv31:0.8), low quality, watermark",
|
||||
"default_styles": [
|
||||
"Fooocus V2",
|
||||
"Fooocus Negative",
|
||||
"Fooocus Masterpiece"
|
||||
"Fooocus Masterpiece",
|
||||
"SAI Anime",
|
||||
"SAI Digital Art",
|
||||
"SAI Enhance",
|
||||
"SAI Fantasy Art"
|
||||
],
|
||||
"default_aspect_ratio": "896*1152",
|
||||
"checkpoint_downloads": {
|
||||
"animaPencilXL_v100.safetensors": "https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/animaPencilXL_v100.safetensors"
|
||||
},
|
||||
"checkpoint_downloads": {},
|
||||
"embeddings_downloads": {},
|
||||
"lora_downloads": {},
|
||||
"previous_default_models": []
|
||||
"lora_downloads": {}
|
||||
}
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"default_model": "Toon\\bluePencilXL_v300.safetensors",
|
||||
"default_refiner": "",
|
||||
"default_refiner_switch": 1.0,
|
||||
"default_loras": [
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"default_cfg_scale": 7.0,
|
||||
"default_sample_sharpness": 2.0,
|
||||
"default_sampler": "dpmpp_2m_sde_gpu",
|
||||
"default_scheduler": "karras",
|
||||
"default_performance": "Extreme Speed",
|
||||
"default_prompt": "",
|
||||
"default_prompt_negative": "",
|
||||
"default_styles": [
|
||||
],
|
||||
"default_aspect_ratio": "1024*1024",
|
||||
"checkpoint_downloads": {},
|
||||
"embeddings_downloads": {},
|
||||
"lora_downloads": {},
|
||||
"default_image_number": 1
|
||||
}
|
||||
|
|
@ -0,0 +1,44 @@
|
|||
{
|
||||
"default_model": "Photo\\realisticFantasyMix_v20Vae.safetensors",
|
||||
"default_refiner": "Photo\\sdXL_v10RefinerVAEFix.safetensors",
|
||||
"default_refiner_switch": 0.8,
|
||||
"default_loras": [
|
||||
[
|
||||
"SDXL_FILM_PHOTOGRAPHY_STYLE_BetaV0.4.safetensors",
|
||||
0.25
|
||||
],
|
||||
[
|
||||
"momo\\momo3.safetensors",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
],
|
||||
[
|
||||
"None",
|
||||
1.0
|
||||
]
|
||||
],
|
||||
"default_cfg_scale": 3.0,
|
||||
"default_sample_sharpness": 2.0,
|
||||
"default_sampler": "dpmpp_2m_sde_gpu",
|
||||
"default_scheduler": "karras",
|
||||
"default_performance": "Quality",
|
||||
"default_prompt": "momo_shiina, 1girl",
|
||||
"default_prompt_negative": "unrealistic, saturated, high contrast, big nose, painting, drawing, sketch, cartoon, anime, manga, render, CG, 3d, watermark, signature, label",
|
||||
"default_styles": [
|
||||
"Fooocus V2",
|
||||
"Fooocus Photograph",
|
||||
"Fooocus Negative"
|
||||
],
|
||||
"default_aspect_ratio": "768*1280",
|
||||
"checkpoint_downloads": {},
|
||||
"embeddings_downloads": {},
|
||||
"lora_downloads": {},
|
||||
"default_image_number": 2
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
{
|
||||
"default_model": "realisticStockPhoto_v20.safetensors",
|
||||
"default_refiner": "",
|
||||
"default_refiner_switch": 0.5,
|
||||
"default_model": "Photo\\sdXL_v10VAEFix.safetensors",
|
||||
"default_refiner": "Photo\\sdXL_v10RefinerVAEFix.safetensors",
|
||||
"default_refiner_switch": 0.8,
|
||||
"default_loras": [
|
||||
[
|
||||
"SDXL_FILM_PHOTOGRAPHY_STYLE_BetaV0.4.safetensors",
|
||||
|
|
@ -37,12 +37,7 @@
|
|||
"Fooocus Negative"
|
||||
],
|
||||
"default_aspect_ratio": "896*1152",
|
||||
"checkpoint_downloads": {
|
||||
"realisticStockPhoto_v20.safetensors": "https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/realisticStockPhoto_v20.safetensors"
|
||||
},
|
||||
"checkpoint_downloads": {},
|
||||
"embeddings_downloads": {},
|
||||
"lora_downloads": {
|
||||
"SDXL_FILM_PHOTOGRAPHY_STYLE_BetaV0.4.safetensors": "https://huggingface.co/lllyasviel/fav_models/resolve/main/fav/SDXL_FILM_PHOTOGRAPHY_STYLE_BetaV0.4.safetensors"
|
||||
},
|
||||
"previous_default_models": ["realisticStockPhoto_v10.safetensors"]
|
||||
"lora_downloads": {}
|
||||
}
|
||||
48
webui.py
48
webui.py
|
|
@ -13,11 +13,13 @@ import modules.flags as flags
|
|||
import modules.gradio_hijack as grh
|
||||
import modules.advanced_parameters as advanced_parameters
|
||||
import modules.style_sorter as style_sorter
|
||||
import modules.wildprompt_sorter as wildprompt_sorter
|
||||
import modules.meta_parser
|
||||
import args_manager
|
||||
import copy
|
||||
|
||||
from modules.sdxl_styles import legal_style_names
|
||||
from modules.sdxl_styles import legal_wildprompt_names
|
||||
from modules.private_logger import get_current_html_path
|
||||
from modules.ui_gradio_extensions import reload_javascript
|
||||
from modules.auth import auth_enabled, check_auth
|
||||
|
|
@ -290,6 +292,48 @@ with shared.gradio_root:
|
|||
queue=False,
|
||||
show_progress=False).then(
|
||||
lambda: None, _js='()=>{refresh_style_localization();}')
|
||||
|
||||
with gr.Tab(label='Wildprompt'):
|
||||
wildprompt_sorter.try_load_sorted_wildprompts()
|
||||
|
||||
wildprompt_generate_all = gr.Checkbox(label='Generate All Wildprompts', value=False, container=False, elem_classes='min_check', interactive=True)
|
||||
|
||||
wildprompt_search_bar = gr.Textbox(show_label=False, container=False,
|
||||
placeholder="\U0001F50E Type here to search wildprompts ...",
|
||||
value="",
|
||||
label='Search Wildprompts')
|
||||
wildprompt_selections = gr.CheckboxGroup(show_label=False, container=False,
|
||||
choices=copy.deepcopy(wildprompt_sorter.all_wildprompts),
|
||||
value=copy.deepcopy(modules.config.default_wildprompts),
|
||||
label='Selected Wildprompts',
|
||||
elem_classes=['wildprompt_selections'])
|
||||
gradio_receiver_wildprompt_selections = gr.Textbox(elem_id='gradio_receiver_wildprompt_selections', visible=False)
|
||||
|
||||
shared.gradio_root.load(lambda: gr.update(choices=copy.deepcopy(wildprompt_sorter.all_wildprompts)),
|
||||
outputs=wildprompt_selections)
|
||||
|
||||
wildprompt_search_bar.change(wildprompt_sorter.search_wildprompts,
|
||||
inputs=[wildprompt_selections, wildprompt_search_bar],
|
||||
outputs=wildprompt_selections,
|
||||
queue=False,
|
||||
show_progress=False).then(
|
||||
lambda: None, _js='()=>{refresh_wildprompt_localization();}')
|
||||
|
||||
gradio_receiver_wildprompt_selections.input(wildprompt_sorter.sort_wildprompts,
|
||||
inputs=wildprompt_selections,
|
||||
outputs=wildprompt_selections,
|
||||
queue=False,
|
||||
show_progress=False).then(
|
||||
lambda: None, _js='()=>{refresh_wildprompt_localization();}')
|
||||
|
||||
wildprompt_refresh = gr.Button(label='Refresh', value='\U0001f504 Refresh All Wildprompts', variant='secondary', elem_classes='refresh_button')
|
||||
|
||||
def handle_refresh_click():
|
||||
results = gr.update(choices=wildprompt_sorter.try_load_sorted_wildprompts())
|
||||
return results
|
||||
|
||||
wildprompt_refresh.click(handle_refresh_click, [], wildprompt_selections,
|
||||
queue=False, show_progress=False)
|
||||
|
||||
with gr.Tab(label='Model'):
|
||||
with gr.Group():
|
||||
|
|
@ -520,7 +564,7 @@ with shared.gradio_root:
|
|||
], show_progress=False, queue=False)
|
||||
|
||||
ctrls = [
|
||||
prompt, negative_prompt, style_selections,
|
||||
prompt, negative_prompt, wildprompt_selections, wildprompt_generate_all, style_selections,
|
||||
performance_selection, aspect_ratios_selection, image_number, image_seed, sharpness, guidance_scale
|
||||
]
|
||||
|
||||
|
|
@ -558,6 +602,8 @@ with shared.gradio_root:
|
|||
image_number,
|
||||
prompt,
|
||||
negative_prompt,
|
||||
wildprompt_selections,
|
||||
wildprompt_generate_all,
|
||||
style_selections,
|
||||
performance_selection,
|
||||
aspect_ratios_selection,
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
wizard
|
||||
sorcerer
|
||||
warlock
|
||||
bard
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
fighter
|
||||
rogue
|
||||
archer
|
||||
monk
|
||||
paladin
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
human
|
||||
elf
|
||||
halfling
|
||||
dwarf
|
||||
celestial
|
||||
orc
|
||||
goliath
|
||||
|
|
@ -0,0 +1,29 @@
|
|||
A girl sitting at a sleek modern office desk, dressed in professional business attire with a laptop and cityscape in the background, surrounded by tall glass buildings
|
||||
A student studying in a university library, wearing casual yet studious attire with a backpack, piles of books, and shelves filled with academic resources in the background
|
||||
A chef in a bustling restaurant kitchen, donned in chef whites and wielding cooking utensils, surrounded by stainless steel surfaces, pots, and pans
|
||||
A fitness enthusiast working out in a gym, dressed in athletic wear with gym equipment and weights in the background, surrounded by a vibrant and energetic atmosphere
|
||||
A scientist conducting experiments in a laboratory, wearing a lab coat and safety goggles, with scientific equipment and colorful chemicals on lab benches
|
||||
A girl enjoying a coffee break in a cozy cafe, dressed in comfortable cafe attire with a cup of coffee, pastries, and warm ambient lighting
|
||||
A musician playing guitar in a street performance, wearing eclectic street musician attire with a guitar case open for tips, in a lively urban setting with pedestrians
|
||||
A artist working in a studio surrounded by canvases and art supplies, wearing paint-splattered clothing and holding brushes, with vibrant artworks on display
|
||||
A medical professional in a hospital setting, wearing scrubs and a stethoscope, with medical equipment and hospital beds in the background
|
||||
A fashion designer sketching designs in a creative studio, dressed in stylish designer clothing, with fabric swatches and mannequins around
|
||||
A girl attending a music festival, wearing festival attire with colorful accessories, surrounded by a crowd, stages, and vibrant lights
|
||||
A tech enthusiast in a high-tech lab or startup office, dressed in casual tech-savvy attire with futuristic gadgets and computer screens in the background
|
||||
A yoga instructor leading a class in a peaceful studio, dressed in yoga attire with mats and serene decor, surrounded by a tranquil atmosphere
|
||||
A journalist working in a newsroom, dressed in professional journalism attire with newspapers, computer screens, and writing tools in the background
|
||||
A traveler exploring a bustling market in a foreign city, wearing comfortable travel attire with a backpack, surrounded by stalls, people, and exotic goods
|
||||
A girl at a beachside cafe, wearing beach casual attire with sunglasses, a hat, and flip-flops, with the beach and ocean in the background
|
||||
A librarian in a traditional library, dressed in librarian attire with shelves of books, reading nooks, and a cozy atmosphere
|
||||
A farmer working in a sunlit field, dressed in practical farm attire with crops, a barn, and farm equipment in the background
|
||||
A girl attending a vibrant street carnival, wearing colorful carnival attire with rides, games, and festive decorations
|
||||
A tech entrepreneur in a startup office, wearing modern business casual attire with laptops, whiteboards, and a collaborative work environment
|
||||
A photographer capturing moments in a scenic park, dressed in comfortable photography attire with a camera, tripod, and picturesque landscapes
|
||||
A florist arranging flowers in a flower shop, wearing floral-inspired attire with colorful blooms, vases, and greenery in the background
|
||||
A fitness trainer leading a group exercise class in a park, dressed in sporty fitness attire with mats and participants in the open air
|
||||
A girl at a bustling street market, wearing casual market-goer attire with bags, stalls, and diverse goods in the background
|
||||
A teacher in a classroom setting, dressed in professional teaching attire with a chalkboard, desks, and educational materials in the background
|
||||
A tech support specialist working at a helpdesk, wearing business casual attire with computer monitors, headsets, and a tech-oriented workspace
|
||||
A girl enjoying a picnic in a peaceful park, dressed in comfortable picnic attire with a blanket, basket, and natural surroundings
|
||||
A makeup artist at a beauty salon, dressed in stylish salon attire with makeup products, mirrors, and a glamorous beauty environment
|
||||
A hiker exploring a scenic trail in the mountains, dressed in outdoor adventure attire with a backpack, hiking poles, and breathtaking mountain views
|
||||
|
|
@ -0,0 +1,27 @@
|
|||
A dazzling flapper dress reminiscent of the Roaring Twenties, adorned with fringe and intricate beadwork
|
||||
An ethereal ball gown inspired by the Victorian era, featuring layers of tulle, lace, and delicate embroidery
|
||||
A sleek and modern red carpet gown with a dramatic high slit and intricate sequin detailing
|
||||
A whimsical fairy-tale-inspired gown with layers of flowing chiffon and floral embellishments
|
||||
A regal Renaissance-inspired dress with rich velvet, elaborate sleeves, and gold embroidery
|
||||
A sultry Latin dance dress with vibrant colors, ruffles, and a form-fitting silhouette
|
||||
A vintage Hollywood-inspired gown with Old Hollywood glamour, featuring satin, draping, and a daring neckline
|
||||
A Moulin Rouge-inspired cabaret dress with frills, feathers, and a corseted bodice
|
||||
A futuristic avant-garde dress with metallic accents, asymmetrical lines, and bold geometric shapes
|
||||
An opulent Renaissance-inspired gown with brocade patterns, billowing sleeves, and a corseted bodice
|
||||
A celestial-themed dress adorned with shimmering sequins and celestial motifs, capturing the magic of the night sky
|
||||
An Art Deco-inspired cocktail dress with geometric patterns, fringe detailing, and a hint of Gatsby-esque flair
|
||||
A modern bohemian maxi dress with flowing silhouettes, floral prints, and a touch of whimsical elegance
|
||||
A futuristic space-themed gown with metallic fabrics, holographic accents, and a sleek, streamlined design
|
||||
A Victorian Gothic-inspired dress featuring lace, velvet, and dramatic sleeves for an air of dark romance
|
||||
A flamenco-style dress with bold ruffles, vibrant patterns, and a fitted bodice, capturing the spirit of Spanish dance
|
||||
An ancient Greek-inspired draped gown with a one-shoulder design, invoking classical elegance
|
||||
A sleek and sophisticated Hollywood-inspired gown with a figure-hugging silhouette, red carpet-ready for any glamorous event
|
||||
A regal Marie Antoinette-inspired dress with intricate lace, pastel colors, and a lavish silhouette
|
||||
A boho-chic festival dress adorned with fringe, tie-dye, and eclectic patterns for a carefree and playful vibe
|
||||
A Victorian steampunk-inspired dress with corsets, gears, and industrial elements, combining vintage and futuristic aesthetics
|
||||
A Japanese kimono-inspired evening gown with traditional silk fabric, intricate embroidery, and a graceful silhouette
|
||||
A disco-era inspired dress with metallic fabrics, bold patterns, and a touch of glamour for a night on the dance floor
|
||||
A celestial fairy-inspired dress with ethereal fabrics, twinkling lights, and a magical, otherworldly feel
|
||||
A futuristic cyberpunk-inspired dress with neon accents, sleek lines, and a high-tech edge
|
||||
A 1950s-inspired tea-length dress with a full skirt, polka dots, and a cinched waist for a retro-chic look
|
||||
A whimsical fantasy forest-inspired gown with floral appliques, earthy tones, and a flowing, enchanted design
|
||||
|
|
@ -0,0 +1,35 @@
|
|||
A girl standing on the edge of a crystalline precipice, overlooking a city suspended in the clouds, wearing an ethereal gown that shimmers in the moonlight
|
||||
A mysterious girl reclining on a bed of floating flowers in a bioluminescent forest, adorned in a gown woven from the threads of glowing spider silk, surrounded by fluttering luminescent insects
|
||||
A lone figure perched on the back of a cosmic whale, sailing through the stars in a cosmic sea, donning a flowing cloak made of galaxies, with constellations twinkling in the background
|
||||
A girl sitting on a giant floating lily pad in a surreal marshland, wearing a dress made of mist and illuminated by the mystical glow of fireflies, as the sun sets in a sky of swirling hues
|
||||
An enigmatic girl standing in the doorway of a clockwork palace, adorned in a steampunk-inspired attire, with gears and cogs visible in the intricate architecture of the surroundings
|
||||
A whimsical girl swinging from the crescent moon on a giant swing, dressed in a fantastical attire that mirrors the phases of the moon, in a surreal dreamscape filled with floating clouds
|
||||
A girl lounging on a levitating rock amidst a field of levitating crystals, wearing a robe that changes color based on her emotions, surrounded by floating islands in the sky
|
||||
A lone wanderer sitting on the back of a mechanical dragon in a futuristic wasteland, dressed in post-apocalyptic attire with neon accents, as the sun sets over the desolate landscape
|
||||
A girl striking a pose on the back of a giant mechanical beetle in a cyberpunk cityscape, wearing a futuristic outfit with holographic patterns, with towering skyscrapers and neon signs in the background
|
||||
A girl standing on a giant floating daisy in an otherworldly garden, dressed in a gown woven from vines and flowers, as the petals create a vibrant carpet beneath her feet
|
||||
An adventurer perched on a giant floating crystal in a crystal cavern, wearing enchanted armor that glows with a soft radiance, surrounded by stalactites and stalagmites
|
||||
A girl reclining on a crescent-shaped hammock suspended between two floating islands in a sky filled with floating landmasses, dressed in an outfit that reflects the colors of the sunset
|
||||
A girl standing on the back of a mythical creature resembling a mix of a unicorn and a phoenix, wearing armor adorned with elemental gems, in a landscape of floating islands and waterfalls
|
||||
A mystical girl posing on the back of a giant moth in a vibrant jungle, wearing a dress made of leaves and vines, with bioluminescent insects illuminating the lush foliage
|
||||
A girl striking a dynamic pose on the back of a giant mechanical spider in a steampunk city, dressed in an outfit adorned with gears and copper accents, with steam rising in the background
|
||||
An otherworldly girl sitting on a throne of interwoven vines and flowers, wearing a regal gown made of shimmering moonlight, in the heart of a magical forest
|
||||
A girl standing on a levitating platform in a futuristic cityscape, wearing high-tech armor with holographic displays, surrounded by skyscrapers and flying vehicles
|
||||
A mysterious girl lounging on a bed of floating books in a library suspended in the sky, wearing a cloak adorned with swirling constellations, with galaxies visible through the windows
|
||||
A girl perched on the back of a mythical creature resembling a mix of a lion and a griffin, wearing armor inspired by ancient civilizations, in a fantastical desert landscape with floating islands
|
||||
A lone wanderer standing on a giant crystal in an alien landscape, wearing a space-traveler suit with luminescent elements, surrounded by strange rock formations and alien flora
|
||||
A girl striking a pose on the back of a giant seashell in an underwater kingdom, dressed in a flowing gown made of seaweed and pearls, with colorful aquatic creatures swimming around
|
||||
A girl standing on a levitating iceberg in an icy realm, wearing an elegant frost-themed gown, with the northern lights painting the sky in vibrant hues
|
||||
A warrior girl posing on the back of a mythical creature resembling a mix of a tiger and a dragon, wearing battle armor with intricate designs, in a fantastical jungle filled with exotic flora
|
||||
A girl standing on the edge of a floating island in a world of floating islands, wearing a celestial-themed gown that glows with starlight, with other islands and planets visible in the sky
|
||||
A girl sitting on a giant floating sunflower in a surreal garden, dressed in a vibrant gown made of petals, as the sun sets in a sky filled with surreal colors
|
||||
A celestial girl striking a pose on the back of a giant cosmic turtle in the vastness of space, wearing a gown made of stardust and constellations, with galaxies swirling in the background
|
||||
A girl standing on a floating tapestry in a dimension where reality is shaped by art, wearing a dress made of living paint strokes, with surreal landscapes forming around her
|
||||
A girl lounging on a bed of floating musical notes in a symphonic realm, wearing an outfit composed of instruments and sheet music, with melodies resonating in the air
|
||||
A fairy queen perched on a mossy tree branch, her delicate wings fluttering in the gentle breeze
|
||||
An enchantress summoning a swirling vortex of magical energy around herself, her eyes ablaze with power
|
||||
A maiden wandering through a mystic forest, her hair adorned with flowers and leaves
|
||||
A sorceress casting a spell beneath a full moon, her voice rising in a chorus of ancient words
|
||||
A warrior fighting off a pack of fierce wolves, her sword gleaming in the sunlight
|
||||
A faerie dancing in a field of wildflowers, her wings sparkling with dewdrops
|
||||
A witch brewing a potion in her cauldron, her spells whispering in the air
|
||||
|
|
@ -0,0 +1,10 @@
|
|||
A __rpg-race__ lone female adventurer, armed with a sword, standing before the entrance of a mysterious, ancient dungeon, a torch illuminating the dark cavern.
|
||||
A __rpg-race__ powerful female __caster__, surrounded by magical energies, casting a spell to summon a mythical creature and aid them in a magical battle.
|
||||
A __rpg-race__ stealthy female __melee__, expertly disarming a trap in an elaborate treasure-filled chamber, surrounded by glittering gold and jewels.
|
||||
A __rpg-race__ mighty female __melee__, clad in armor, facing off against a colossal dragon, their weapon clashing against the scales in a rocky mountain pass.
|
||||
A __rpg-race__ female __melee__, perched on a treetop, aiming an enchanted bow at unseen enemies in a mystical forest.
|
||||
A __rpg-race__ female __caster__, healing their own wounds in the aftermath of a fierce battle, their glowing hands emanating divine light.
|
||||
A __rpg-race__ lone female adventurer, navigating a bustling fantasy city market filled with merchants, creatures, and diverse characters.
|
||||
A __rpg-race__ female captain of a magical airship sailing through stormy skies, a determined look on their face as they lead a crew on a quest for hidden treasure.
|
||||
A __rpg-race__ female adventurer, exploring a haunted castle atop a desolate hill shrouded in mist, encountering ghostly apparitions in its crumbling halls.
|
||||
A __rpg-race__ female __caster__, practicing spells in a magical academy courtyard, surrounded by floating books and mystical artifacts.
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
An astronaut exploring the surface of a distant alien planet, her suit reflecting the colorful glow of alien flora
|
||||
A cyberpunk hacker navigating a futuristic cityscape, holographic data streams illuminating her determined expression
|
||||
A space engineer repairing a high-tech spaceship in the depths of outer space, surrounded by a field of distant stars
|
||||
A scientist conducting experiments in a state-of-the-art laboratory, surrounded by advanced technology and holographic displays
|
||||
A futuristic bounty hunter tracking down intergalactic criminals, her energy weapon at the ready against the backdrop of a cosmic nebula
|
||||
An android girl with artificial intelligence pondering her existence against a backdrop of futuristic city lights
|
||||
A bioengineered pilot flying a sleek spacecraft through a vibrant asteroid belt, her eyes focused on the cosmic horizon
|
||||
An interstellar diplomat negotiating peace between alien species, her holographic translator projecting intricate symbols
|
||||
A virtual reality gamer immersed in a futuristic gaming environment, her expressions mirroring the intensity of the virtual battle
|
||||
A geneticist in a bioluminescent forest, studying alien flora that reacts to her touch with mesmerizing light patterns
|
||||
An AI developer fine-tuning the emotions of a humanoid robot companion, surrounded by circuits and holographic interfaces
|
||||
A stealthy operative infiltrating a high-security facility on a distant planet, using advanced cloaking technology
|
||||
A space archaeologist excavating ancient artifacts on an abandoned space station, uncovering mysteries from a bygone era
|
||||
An engineer constructing a massive space habitat, overseeing the construction with a blueprint in hand
|
||||
A telepathic explorer communicating with extraterrestrial beings, her mind connecting with their collective consciousness
|
||||
An eco-scientist on a terraforming mission, tending to genetically modified plants that sustain life on a barren exoplanet
|
||||
A zero-gravity acrobat performing intricate maneuvers in a space station's gravity-free chamber
|
||||
A quantum physicist experimenting with reality-bending technologies, surrounded by swirling portals and energy fields
|
||||
A space medic attending to injured crew members on a spaceship, her medical scanner glowing with vital signs
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
A cowgirl, clad in Western attire, races against a stampede, dust flying as she expertly maneuvers through the thundering herd on horseback
|
||||
A sharpshooter, embodying the spirit of the Old West, engages in a quickdraw duel at high noon, the tension palpable as the town holds its breath
|
||||
A rancher's daughter, in classic Western fashion, leaps onto the back of a wild mustang, attempting to break it in the midst of a swirling dust storm
|
||||
A saloon singer, amidst a Western-style gunfight, belts out a song while evading bullets, shattered bottles and splintered wood adding chaos to the scene
|
||||
A bounty hunter, clad in Western gear, leaps from a rooftop onto a speeding train, determined to apprehend a notorious outlaw
|
||||
A lone wanderer, fitting the Western archetype, narrowly escapes a bandit ambush, her horse galloping through gunfire as she returns fire
|
||||
A Native American guide, reflecting the Old West, skillfully navigates a river rapids, the pioneer girl clinging to the canoe amidst swirling waters
|
||||
A sharp-witted gambler, embodying Western gambling culture, reveals a winning hand with a sly smile, her opponents realizing they've been outplayed in the intense poker game
|
||||
A sheriff's deputy, donned in traditional Western attire, dives behind cover during a shootout on the town's main street, bullets kicking up dust as she returns fire
|
||||
A gold prospector, in classic Western style, discovers a hidden mine, her excitement contagious as she unearths a vein of precious gold
|
||||
A stagecoach driver, reflecting the heyday of the Old West, expertly evades a gang of outlaws in a high-speed chase through rocky canyons
|
||||
A medicine woman, embodying Western frontier life, concocts a healing potion amidst a raid on her camp, defending herself with both medicine and grit
|
||||
A trailblazer, in the spirit of Old West exploration, outruns a deadly dust storm, her silhouette barely visible against the swirling clouds
|
||||
A schoolteacher, fitting the Western frontier setting, leads children to safety during a sudden attack on the frontier town, her quick thinking protecting the young ones
|
||||
A bandit queen, donned in classic Western attire, executes a daring escape plan after a train robbery, her gang dispersing amidst gunfire and chaos
|
||||
A barmaid, reflecting the Wild West saloon atmosphere, expertly slides a tray of drinks to a customer while ducking behind the bar during a violent barroom brawl
|
||||
A photographer, capturing the essence of the Old West, takes a breathtaking shot of a lightning storm over the prairie, risking it all for the perfect image
|
||||
A Native American warrior princess, in Western fashion, engages in a fast-paced archery battle against rival tribes, arrows flying through the air
|
||||
A mysterious drifter, in classic Western style, unveils her deadly skills in a fast-paced saloon showdown, her past hinted at through every bullet dodged
|
||||
A pioneer woman, donned in traditional Western clothing, defends her homestead from a band of raiders, firing a rifle with determination and grit
|
||||
Loading…
Reference in New Issue