- Added ai_host.py to handle AI tasks with FastAPI integration. - Introduced HostState and ModelCache classes for managing client connections and model loading. - Implemented job submission and cancellation endpoints in the AI host. - Enhanced tests for AI host functionality, including client tracking and job cancellation. - Updated existing tests to accommodate changes in the operator and command structure. - Refactored runtime commands to use request-based architecture instead of command-line arguments. - Improved model loading logic to handle CUDA memory management and reuse models efficiently.
72 lines
1.7 KiB
Python
72 lines
1.7 KiB
Python
import bpy
|
|
|
|
from . import runtime
|
|
from .image_depth import (
|
|
ApplyRemovedBackground,
|
|
BuildDepthPlane,
|
|
BuildOriginalDepthPlane,
|
|
ConvertImageToDepthPlane,
|
|
RemoveImageBackground,
|
|
draw_image_context_menu,
|
|
)
|
|
from .operators import (
|
|
CancelJob,
|
|
ControlHost,
|
|
RunJob,
|
|
cancel_active_job,
|
|
close_active_job,
|
|
)
|
|
from .panel import (
|
|
Ben2DebugPanel,
|
|
Da3DebugPanel,
|
|
DebugPanel,
|
|
HostPanel,
|
|
ModelsPanel,
|
|
)
|
|
from .preferences import SnapFormPreferences
|
|
from .properties import SnapFormSettings
|
|
from .status_bar import draw_status_bar
|
|
|
|
|
|
CLASSES = (
|
|
SnapFormPreferences,
|
|
SnapFormSettings,
|
|
RunJob,
|
|
CancelJob,
|
|
ControlHost,
|
|
ApplyRemovedBackground,
|
|
RemoveImageBackground,
|
|
BuildDepthPlane,
|
|
BuildOriginalDepthPlane,
|
|
ConvertImageToDepthPlane,
|
|
HostPanel,
|
|
ModelsPanel,
|
|
DebugPanel,
|
|
Da3DebugPanel,
|
|
Ben2DebugPanel,
|
|
)
|
|
|
|
|
|
def register():
|
|
for class_type in CLASSES:
|
|
bpy.utils.register_class(class_type)
|
|
bpy.types.Scene.snapform_settings = bpy.props.PointerProperty(
|
|
type=SnapFormSettings,
|
|
)
|
|
bpy.types.STATUSBAR_HT_header.append(draw_status_bar)
|
|
bpy.types.VIEW3D_MT_object_context_menu.append(draw_image_context_menu)
|
|
runtime.schedule_host_start()
|
|
|
|
|
|
def unregister():
|
|
cancel_active_job()
|
|
close_active_job()
|
|
runtime.unschedule_host()
|
|
runtime.detach_host_client()
|
|
bpy.types.VIEW3D_MT_object_context_menu.remove(draw_image_context_menu)
|
|
bpy.types.STATUSBAR_HT_header.remove(draw_status_bar)
|
|
if hasattr(bpy.types.Scene, "snapform_settings"):
|
|
del bpy.types.Scene.snapform_settings
|
|
for class_type in reversed(CLASSES):
|
|
bpy.utils.unregister_class(class_type)
|