mirror of
https://github.com/comfyanonymous/ComfyUI.git
synced 2026-01-16 01:00:49 +08:00
161 lines
4.8 KiB
Python
161 lines
4.8 KiB
Python
from typing import TypedDict
|
|
|
|
from pydantic import BaseModel, Field
|
|
|
|
from comfy_api.latest import Input
|
|
|
|
|
|
class InputShouldRemesh(TypedDict):
|
|
should_remesh: str
|
|
topology: str
|
|
target_polycount: int
|
|
|
|
|
|
class InputShouldTexture(TypedDict):
|
|
should_texture: str
|
|
enable_pbr: bool
|
|
texture_prompt: str
|
|
texture_image: Input.Image | None
|
|
|
|
|
|
class MeshyTaskResponse(BaseModel):
|
|
result: str = Field(...)
|
|
|
|
|
|
class MeshyTextToModelRequest(BaseModel):
|
|
mode: str = Field("preview")
|
|
prompt: str = Field(..., max_length=600)
|
|
art_style: str = Field(..., description="'realistic' or 'sculpture'")
|
|
ai_model: str = Field(...)
|
|
topology: str | None = Field(..., description="'quad' or 'triangle'")
|
|
target_polycount: int | None = Field(..., ge=100, le=300000)
|
|
should_remesh: bool = Field(
|
|
True,
|
|
description="False returns the original mesh, ignoring topology and polycount.",
|
|
)
|
|
symmetry_mode: str = Field(..., description="'auto', 'off' or 'on'")
|
|
pose_mode: str = Field(...)
|
|
seed: int = Field(...)
|
|
moderation: bool = Field(False)
|
|
|
|
|
|
class MeshyRefineTask(BaseModel):
|
|
mode: str = Field("refine")
|
|
preview_task_id: str = Field(...)
|
|
enable_pbr: bool | None = Field(...)
|
|
texture_prompt: str | None = Field(...)
|
|
texture_image_url: str | None = Field(...)
|
|
ai_model: str = Field(...)
|
|
moderation: bool = Field(False)
|
|
|
|
|
|
class MeshyImageToModelRequest(BaseModel):
|
|
image_url: str = Field(...)
|
|
ai_model: str = Field(...)
|
|
topology: str | None = Field(..., description="'quad' or 'triangle'")
|
|
target_polycount: int | None = Field(..., ge=100, le=300000)
|
|
symmetry_mode: str = Field(..., description="'auto', 'off' or 'on'")
|
|
should_remesh: bool = Field(
|
|
True,
|
|
description="False returns the original mesh, ignoring topology and polycount.",
|
|
)
|
|
should_texture: bool = Field(...)
|
|
enable_pbr: bool | None = Field(...)
|
|
pose_mode: str = Field(...)
|
|
texture_prompt: str | None = Field(None, max_length=600)
|
|
texture_image_url: str | None = Field(None)
|
|
seed: int = Field(...)
|
|
moderation: bool = Field(False)
|
|
|
|
|
|
class MeshyMultiImageToModelRequest(BaseModel):
|
|
image_urls: list[str] = Field(...)
|
|
ai_model: str = Field(...)
|
|
topology: str | None = Field(..., description="'quad' or 'triangle'")
|
|
target_polycount: int | None = Field(..., ge=100, le=300000)
|
|
symmetry_mode: str = Field(..., description="'auto', 'off' or 'on'")
|
|
should_remesh: bool = Field(
|
|
True,
|
|
description="False returns the original mesh, ignoring topology and polycount.",
|
|
)
|
|
should_texture: bool = Field(...)
|
|
enable_pbr: bool | None = Field(...)
|
|
pose_mode: str = Field(...)
|
|
texture_prompt: str | None = Field(None, max_length=600)
|
|
texture_image_url: str | None = Field(None)
|
|
seed: int = Field(...)
|
|
moderation: bool = Field(False)
|
|
|
|
|
|
class MeshyRiggingRequest(BaseModel):
|
|
input_task_id: str = Field(...)
|
|
height_meters: float = Field(...)
|
|
texture_image_url: str | None = Field(...)
|
|
|
|
|
|
class MeshyAnimationRequest(BaseModel):
|
|
rig_task_id: str = Field(...)
|
|
action_id: int = Field(...)
|
|
|
|
|
|
class MeshyTextureRequest(BaseModel):
|
|
input_task_id: str = Field(...)
|
|
ai_model: str = Field(...)
|
|
enable_original_uv: bool = Field(...)
|
|
enable_pbr: bool = Field(...)
|
|
text_style_prompt: str | None = Field(...)
|
|
image_style_url: str | None = Field(...)
|
|
|
|
|
|
class MeshyModelsUrls(BaseModel):
|
|
glb: str = Field("")
|
|
|
|
|
|
class MeshyRiggedModelsUrls(BaseModel):
|
|
rigged_character_glb_url: str = Field("")
|
|
|
|
|
|
class MeshyAnimatedModelsUrls(BaseModel):
|
|
animation_glb_url: str = Field("")
|
|
|
|
|
|
class MeshyResultTextureUrls(BaseModel):
|
|
base_color: str = Field(...)
|
|
metallic: str | None = Field(None)
|
|
normal: str | None = Field(None)
|
|
roughness: str | None = Field(None)
|
|
|
|
|
|
class MeshyTaskError(BaseModel):
|
|
message: str | None = Field(None)
|
|
|
|
|
|
class MeshyModelResult(BaseModel):
|
|
id: str = Field(...)
|
|
type: str = Field(...)
|
|
model_urls: MeshyModelsUrls = Field(MeshyModelsUrls())
|
|
thumbnail_url: str = Field(...)
|
|
video_url: str | None = Field(None)
|
|
status: str = Field(...)
|
|
progress: int = Field(0)
|
|
texture_urls: list[MeshyResultTextureUrls] | None = Field([])
|
|
task_error: MeshyTaskError | None = Field(None)
|
|
|
|
|
|
class MeshyRiggedResult(BaseModel):
|
|
id: str = Field(...)
|
|
type: str = Field(...)
|
|
status: str = Field(...)
|
|
progress: int = Field(0)
|
|
result: MeshyRiggedModelsUrls = Field(MeshyRiggedModelsUrls())
|
|
task_error: MeshyTaskError | None = Field(None)
|
|
|
|
|
|
class MeshyAnimationResult(BaseModel):
|
|
id: str = Field(...)
|
|
type: str = Field(...)
|
|
status: str = Field(...)
|
|
progress: int = Field(0)
|
|
result: MeshyAnimatedModelsUrls = Field(MeshyAnimatedModelsUrls())
|
|
task_error: MeshyTaskError | None = Field(None)
|