trellis.2. unified 3d workflows
This commit is contained in:
+105
-14
@@ -43,6 +43,8 @@ export interface Project {
|
||||
created: number;
|
||||
/** батч, из которого картинка */
|
||||
batchId: number;
|
||||
/** откуда исходная картинка: сгенерирована (text — SDXL) или загружена */
|
||||
imageSource: 'text' | 'upload';
|
||||
/** исходная картинка */
|
||||
image: BatchImage;
|
||||
/** последняя очищенная картинка (история очисток не хранится) */
|
||||
@@ -54,26 +56,87 @@ export interface Project {
|
||||
cleanError?: string;
|
||||
/** положение идущей очистки в очереди ComfyUI */
|
||||
live?: LiveStatus;
|
||||
/** последняя 3D-модель из очищенной картинки: GLB и PNG-превью (история не хранится) */
|
||||
model: FileRef | null;
|
||||
modelPreview: FileRef | null;
|
||||
modelUpdated: number | null;
|
||||
/** число треугольников в GLB (null — неизвестно) */
|
||||
modelFaces: number | null;
|
||||
/**
|
||||
* 3D-модель без текстур (история не хранится). Генерирует её Hunyuan3D-2 mini или TRELLIS.2;
|
||||
* TRELLIS.2 заодно заполняет и texture.
|
||||
*/
|
||||
model: ModelArtifacts | null;
|
||||
/** идёт генерация модели: prompt_id в ComfyUI */
|
||||
modelJobId: string | null;
|
||||
modelError?: string;
|
||||
/** положение идущей генерации модели в очереди ComfyUI */
|
||||
/** положение идущей генерации в очереди ComfyUI */
|
||||
modelLive?: LiveStatus;
|
||||
/** текстурированная модель и её текстуры (от TRELLIS.2 или Hunyuan3D-2 Paint) */
|
||||
texture: TextureArtifacts | null;
|
||||
/** идёт текстурирование (Paint): prompt_id в ComfyUI */
|
||||
textureJobId: string | null;
|
||||
textureError?: string;
|
||||
textureLive?: LiveStatus;
|
||||
}
|
||||
|
||||
/** Чем сгенерирована 3D-модель. */
|
||||
export type ModelGenerator = 'hunyuan' | 'trellis';
|
||||
|
||||
export const GENERATOR_NAMES: Record<ModelGenerator, string> = { hunyuan: 'Hunyuan3D-2 mini', trellis: 'TRELLIS.2' };
|
||||
|
||||
/** Модель без текстур. */
|
||||
export interface ModelArtifacts {
|
||||
generator: ModelGenerator;
|
||||
glb: FileRef;
|
||||
/** PNG-превью (рендер без текстур) */
|
||||
preview: FileRef | null;
|
||||
/** число треугольников в GLB */
|
||||
faces: number | null;
|
||||
/** мс */
|
||||
updated: number;
|
||||
}
|
||||
|
||||
/** Откуда текстуры: вместе с моделью от TRELLIS.2 или отдельным текстурированием Hunyuan3D-2 Paint. */
|
||||
export type TextureSource = 'trellis' | 'paint';
|
||||
|
||||
/** Текстурированная модель и всё, что к ней относится; каких-то файлов может не быть (у Paint — metallic, roughness). */
|
||||
export interface TextureArtifacts {
|
||||
source: TextureSource;
|
||||
/** текстурированная модель */
|
||||
glb: FileRef | null;
|
||||
faces: number | null;
|
||||
baseColor: FileRef | null;
|
||||
/** металличность (канал B карты metallicRoughness glTF) в оттенках серого */
|
||||
metallic: FileRef | null;
|
||||
/** шероховатость (канал G карты metallicRoughness glTF) в оттенках серого */
|
||||
roughness: FileRef | null;
|
||||
/** изображение UV-развёртки */
|
||||
uv: FileRef | null;
|
||||
/** виды: у TRELLIS.2 — рендеры модели с 4 сторон, у Paint — 6 видов, нарисованных моделью */
|
||||
views: FileRef[];
|
||||
/** мс */
|
||||
updated: number;
|
||||
}
|
||||
|
||||
/** Генерация 3D-модели проекта. */
|
||||
export interface ProjectModelRequest {
|
||||
generator: ModelGenerator;
|
||||
/** Пусто — случайный. */
|
||||
seed: number | string;
|
||||
/** Hunyuan3D-2 mini */
|
||||
steps: number | string;
|
||||
octree: number | string;
|
||||
/** целевое число треугольников после упрощения */
|
||||
faces: number | string;
|
||||
/** TRELLIS.2: размер текстуры, px */
|
||||
textureSize: number | string;
|
||||
/** TRELLIS.2: металличность и шероховатость (карты metallic, roughness) в модели */
|
||||
pbr: boolean;
|
||||
}
|
||||
|
||||
/** Текстурирование модели проекта (Hunyuan3D-2 Paint). */
|
||||
export interface ProjectTextureRequest {
|
||||
/** Пусто — случайный. */
|
||||
seed: number | string;
|
||||
/** размер текстуры, px */
|
||||
textureSize: number | string;
|
||||
/** снимать блики и тени с картинки (Hunyuan3D Delight) */
|
||||
delight: boolean;
|
||||
}
|
||||
|
||||
interface BatchBase {
|
||||
@@ -130,7 +193,7 @@ export interface CleanupRequest {
|
||||
}
|
||||
|
||||
// ---------- задачи ComfyUI (таблица jobs; отслеживаются трекером) ----------
|
||||
export type JobType = 'text2img' | 'cleanup' | 'model';
|
||||
export type JobType = 'text2img' | 'cleanup' | 'model' | 'texture';
|
||||
export type JobState = 'pending' | 'done' | 'error';
|
||||
|
||||
/** Состояние незавершённой задачи в очереди ComfyUI (не хранится, считается сервером на лету). */
|
||||
@@ -161,10 +224,23 @@ export interface CleanupParams {
|
||||
export interface ModelParams {
|
||||
/** проект, к которому прикрепляется модель */
|
||||
projectId: number;
|
||||
generator: ModelGenerator;
|
||||
seed: number;
|
||||
steps: number;
|
||||
octree: number;
|
||||
faces: number;
|
||||
/** Hunyuan3D-2 mini */
|
||||
steps?: number;
|
||||
octree?: number;
|
||||
/** TRELLIS.2 */
|
||||
textureSize?: number;
|
||||
pbr?: boolean;
|
||||
}
|
||||
|
||||
export interface TextureParams {
|
||||
/** проект, к которому прикрепляется результат */
|
||||
projectId: number;
|
||||
seed: number;
|
||||
textureSize: number;
|
||||
delight: boolean;
|
||||
}
|
||||
|
||||
interface JobOf<T extends JobType, P> {
|
||||
@@ -180,7 +256,7 @@ interface JobOf<T extends JobType, P> {
|
||||
params: P;
|
||||
/** результаты-картинки (для model — PNG-превью) */
|
||||
images: FileRef[];
|
||||
/** GLB-файлы (только model) */
|
||||
/** GLB-файлы (model, texture) */
|
||||
models: FileRef[];
|
||||
live?: LiveStatus;
|
||||
}
|
||||
@@ -188,7 +264,8 @@ interface JobOf<T extends JobType, P> {
|
||||
export type Text2ImgJob = JobOf<'text2img', Text2ImgParams>;
|
||||
export type CleanupJob = JobOf<'cleanup', CleanupParams>;
|
||||
export type ModelJob = JobOf<'model', ModelParams>;
|
||||
export type Job = Text2ImgJob | CleanupJob | ModelJob;
|
||||
export type TextureJob = JobOf<'texture', TextureParams>;
|
||||
export type Job = Text2ImgJob | CleanupJob | ModelJob | TextureJob;
|
||||
|
||||
// ---------- значения полей форм (тоже в SQLite) ----------
|
||||
export interface Text2ImgSettings {
|
||||
@@ -209,17 +286,31 @@ export interface CleanupSettings {
|
||||
}
|
||||
|
||||
export interface ModelSettings {
|
||||
generator: ModelGenerator;
|
||||
seed: string;
|
||||
/** Hunyuan3D-2 mini */
|
||||
steps: string;
|
||||
octree: string;
|
||||
faces: string;
|
||||
/** TRELLIS.2 */
|
||||
trellisFaces: string;
|
||||
textureSize: string;
|
||||
trellisPbr: boolean;
|
||||
}
|
||||
|
||||
export type SettingsByPage = { text2img: Text2ImgSettings; cleanup: CleanupSettings; model: ModelSettings };
|
||||
export interface TextureSettings {
|
||||
seed: string;
|
||||
textureSize: string;
|
||||
delight: boolean;
|
||||
}
|
||||
|
||||
export type SettingsByPage = {
|
||||
text2img: Text2ImgSettings; cleanup: CleanupSettings; model: ModelSettings; texture: TextureSettings;
|
||||
};
|
||||
export type SettingsPage = keyof SettingsByPage;
|
||||
|
||||
// ---------- очередь ComfyUI ----------
|
||||
export type JobKind = 'генерация' | 'очистка фона' | '3D-модель' | 'другое';
|
||||
export type JobKind = 'генерация' | 'очистка фона' | '3D-модель' | 'текстура' | 'другое';
|
||||
|
||||
export interface QueueItem {
|
||||
id: string;
|
||||
|
||||
Reference in New Issue
Block a user