import gradio as gr import modules.scripts as scripts from modules import script_callbacks from modules import shared from modules.shared import opts from modules import extensions import os class Script(scripts.Script): def __init__(self) -> None: super().__init__() def title(self): return "3D Model&Pose Loader" def show(self, is_img2img): return scripts.AlwaysVisible def ui(self, is_img2img): return () def on_ui_tabs(): with gr.Blocks(analytics_enabled=False) as threeDModel_loader: with gr.Row(): gr.HTML('
') import_id = 'WebGL-output-3dmodel-import' ext = get_self_extension() try: control_net_num = opts.control_net_max_models_num except: control_net_num = 0 gr.HTML(f'', visible=False) if ext is None: return [] js_ = [f'{x.path}?{os.path.getmtime(x.path)}' for x in ext.list_files('javascript/lazyload', '.js')] js_.insert(0, ext.path) gr.HTML(value='\n'.join(js_), elem_id=import_id, visible=False) return [(threeDModel_loader, "3D Model&Pose Loader", "3dmodel_loador")] def get_self_extension(): if '__file__' in globals(): filepath = __file__ else: import inspect filepath = inspect.getfile(lambda: None) for ext in extensions.active(): if ext.path in filepath: return ext def on_ui_settings(): section = ('3dmodel', "3D Model&Pose") shared.opts.add_option("threeDmodel_bg_color", shared.OptionInfo( "#ffffff", "Canvas Background Color", gr.ColorPicker, {"interactive": True}, section=section)) shared.opts.add_option("threeDmodel_ground_color", shared.OptionInfo( "#ffffff", "Canvas Ground Color", gr.ColorPicker, {"interactive": True}, section=section)) shared.opts.add_option("threeDmodel_canvas_width", shared.OptionInfo( 512, "Canvas Width", gr.Slider, {"minimum": 64, "maximum": 2048, "step": 64, "interactive": True}, section=section)) shared.opts.add_option("threeDmodel_canvas_height", shared.OptionInfo( 512, "Canvas Height", gr.Slider, {"minimum": 64, "maximum": 2048, "step": 64, "interactive": True}, section=section)) shared.opts.add_option("threeDmodel_has_ground", shared.OptionInfo( True, "Show Ground", gr.Checkbox, {"interactive": True}, section=section)) shared.opts.add_option("threeDmodel_has_ground_grid", shared.OptionInfo( True, "Show Grid", gr.Checkbox, {"interactive": True}, section=section)) shared.opts.add_option("threeDmodel_has_axis", shared.OptionInfo( True, "Show Axis", gr.Checkbox, {"interactive": True}, section=section)) script_callbacks.on_ui_tabs(on_ui_tabs) script_callbacks.on_ui_settings(on_ui_settings)