From 62bf602fb1840fbd726b3bffc7b759b471cc2fdb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E5=BE=B7=E5=AE=87?= Date: Tue, 22 Sep 2026 16:48:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A4=9A=E8=A7=86=E5=9B=BE=E8=AF=B7=E6=B1=82?= =?UTF-8?q?=20DTO=20=E8=A1=A5=E9=BD=90=E5=AD=97=E6=AE=B5=E7=BA=A7=E8=AF=B4?= =?UTF-8?q?=E6=98=8E=E5=B9=B6=E9=87=8D=E7=94=9F=E6=88=90=E7=BB=91=E5=AE=9A?= =?UTF-8?q?=20-=20Model3dMultiviewToModelRequest=20=E6=AF=8F=E4=B8=AA?= =?UTF-8?q?=E5=AD=97=E6=AE=B5=E8=A1=A5=E4=B8=80=E8=A1=8C=E4=B8=AD=E6=96=87?= =?UTF-8?q?=E8=AF=AD=E4=B9=89=E8=AF=B4=E6=98=8E=E4=B8=8E=E5=8F=96=E5=80=BC?= =?UTF-8?q?=E8=8C=83=E5=9B=B4=20-=20=E7=BB=93=E6=9E=84=E4=BD=93=E8=A1=A5?= =?UTF-8?q?=E4=B8=A5=E6=A0=BC=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96=E4=B8=8E?= =?UTF-8?q?=E7=BB=84=E5=90=88=E6=A0=A1=E9=AA=8C=E5=BD=92=E5=B1=9E=E7=9A=84?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=20-=20=E9=87=8D=E6=96=B0=E7=94=9F=E6=88=90?= =?UTF-8?q?=20ts-rs=20TS=20=E7=BB=91=E5=AE=9A=EF=BC=8C=E6=B3=A8=E9=87=8A?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E8=BF=9B=20Model3dMultiviewToModelRequest.ts?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Model3dMultiviewToModelRequest.ts | 66 +++++++++++++++++++ .../src/model3d/multiview_to_model/request.rs | 24 +++++++ 2 files changed, 90 insertions(+) diff --git a/packages/shared/src/contracts/model3d/multiview-to-model/Model3dMultiviewToModelRequest.ts b/packages/shared/src/contracts/model3d/multiview-to-model/Model3dMultiviewToModelRequest.ts index f9fc93903..2d8727fd1 100644 --- a/packages/shared/src/contracts/model3d/multiview-to-model/Model3dMultiviewToModelRequest.ts +++ b/packages/shared/src/contracts/model3d/multiview-to-model/Model3dMultiviewToModelRequest.ts @@ -9,25 +9,91 @@ import type { Model3dTextureQuality } from '../common/Model3dTextureQuality'; import type { Model3dTextureVersion } from '../common/Model3dTextureVersion'; import type { Model3dMultiviewInputs } from './Model3dMultiviewInputs'; +/** + * 多视图生 3D 的请求:`inputs` 必填,其余生成参数可选。 + * + * 严格反序列化:顶层与 `inputs` 分支都不接受未知字段,字段取值非法在反序列化阶段即拒绝; + * 组合合法性(模型能力、参数互斥)由 provider 侧提交前统一校验。 + */ export type Model3dMultiviewToModelRequest = { + /** + * 视图输入:`views` 直接给多视图,`taskId` 复用已有任务的视图数据。 + */ inputs: Model3dMultiviewInputs; + /** + * 模型版本;决定模型家族与可用的生成能力。 + */ model: Model3dModelVersion; + /** + * 模型随机种子;固定后可复现同一几何体。 + */ modelSeed?: bigint | null; + /** + * 贴图随机种子;固定后可复现同一贴图。 + */ textureSeed?: bigint | null; + /** + * 是否生成贴图;`false` 时只产出白模几何体。 + */ texture?: boolean | null; + /** + * 是否生成 PBR 材质;依赖贴图,`generateParts=true` 时必须为 `false`。 + */ pbr?: boolean | null; + /** + * 贴图质量;`fast` 必须显式配 `textureVersion=v3.5-20260815`。 + */ textureQuality?: Model3dTextureQuality | null; + /** + * 贴图模型版本;SDK params 未命名该字段,由 provider 侧按 extra 透传。 + */ textureVersion?: Model3dTextureVersion | null; + /** + * 是否去除输入图光照;SDK params 未命名该字段,由 provider 侧按 extra 透传。 + */ delight?: boolean | null; + /** + * 几何质量;仅 v3.1 / v3.0 家族接受 `detailed`。 + */ geometryQuality?: Model3dGeometryQuality | null; + /** + * 贴图对齐方式:`originalImage` 保留输入图朝向,`geometry` 对齐到几何体。 + */ textureAlignment?: Model3dTextureAlignment | null; + /** + * 面数上限;允许区间随模型版本、`quad` 与 `smartLowPoly` 变化,取值不超过 2_000_000。 + */ faceLimit?: number | null; + /** + * 是否按真实尺度自动缩放输出;v2.5 家族不支持。 + */ autoSize?: boolean | null; + /** + * 输入视图的朝向口径;`alignImage` 按图片方向对齐。 + */ orientation?: Model3dInputOrientation | null; + /** + * 是否输出四边面网格;仅 v3.x 与 P2 家族支持。 + */ quad?: boolean | null; + /** + * 是否启用智能低模;仅 v3.x 家族支持。 + */ smartLowPoly?: boolean | null; + /** + * 是否拆分模型部件;要求 `texture=false`、`pbr=false`,且不能与 `quad` / `smartLowPoly` 同用。 + */ generateParts?: boolean | null; + /** + * 几何体压缩方式;仅 v3.x 家族支持。 + */ compress?: Model3dCompression | null; + /** + * 是否在产物里导出 UV。 + */ exportUv?: boolean | null; + /** + * 产物朝向,取值 `+x` / `-x` / `+y` / `-y`。 + */ exportOrientation?: Model3dExportOrientation | null; }; diff --git a/server-rs/crates/shared-contracts/src/model3d/multiview_to_model/request.rs b/server-rs/crates/shared-contracts/src/model3d/multiview_to_model/request.rs index 5196df866..3138644da 100644 --- a/server-rs/crates/shared-contracts/src/model3d/multiview_to_model/request.rs +++ b/server-rs/crates/shared-contracts/src/model3d/multiview_to_model/request.rs @@ -42,47 +42,71 @@ pub enum Model3dMultiviewInputs { #[serde(rename_all = "camelCase", deny_unknown_fields)] #[derive(ts_rs::TS)] #[ts(export, export_to = MODEL3D_TS_EXPORT_DIR)] +/// 多视图生 3D 的请求:`inputs` 必填,其余生成参数可选。 +/// +/// 严格反序列化:顶层与 `inputs` 分支都不接受未知字段,字段取值非法在反序列化阶段即拒绝; +/// 组合合法性(模型能力、参数互斥)由 provider 侧提交前统一校验。 pub struct Model3dMultiviewToModelRequest { + /// 视图输入:`views` 直接给多视图,`taskId` 复用已有任务的视图数据。 pub inputs: Model3dMultiviewInputs, + /// 模型版本;决定模型家族与可用的生成能力。 pub model: Model3dModelVersion, // seed 是 i64,JS `number` 表示不了全部取值,因此按 bigint 导出,避免静默舍入。 + /// 模型随机种子;固定后可复现同一几何体。 #[ts(type = "bigint | null")] #[ts(optional = nullable)] pub model_seed: Option, + /// 贴图随机种子;固定后可复现同一贴图。 #[ts(type = "bigint | null")] #[ts(optional = nullable)] pub texture_seed: Option, + /// 是否生成贴图;`false` 时只产出白模几何体。 #[ts(optional = nullable)] pub texture: Option, + /// 是否生成 PBR 材质;依赖贴图,`generateParts=true` 时必须为 `false`。 #[ts(optional = nullable)] pub pbr: Option, + /// 贴图质量;`fast` 必须显式配 `textureVersion=v3.5-20260815`。 #[ts(optional = nullable)] pub texture_quality: Option, + /// 贴图模型版本;SDK params 未命名该字段,由 provider 侧按 extra 透传。 #[ts(optional = nullable)] pub texture_version: Option, + /// 是否去除输入图光照;SDK params 未命名该字段,由 provider 侧按 extra 透传。 #[ts(optional = nullable)] pub delight: Option, + /// 几何质量;仅 v3.1 / v3.0 家族接受 `detailed`。 #[ts(optional = nullable)] pub geometry_quality: Option, + /// 贴图对齐方式:`originalImage` 保留输入图朝向,`geometry` 对齐到几何体。 #[ts(optional = nullable)] pub texture_alignment: Option, + /// 面数上限;允许区间随模型版本、`quad` 与 `smartLowPoly` 变化,取值不超过 2_000_000。 #[ts(type = "number | null")] #[ts(optional = nullable)] pub face_limit: Option, + /// 是否按真实尺度自动缩放输出;v2.5 家族不支持。 #[ts(optional = nullable)] pub auto_size: Option, + /// 输入视图的朝向口径;`alignImage` 按图片方向对齐。 #[ts(optional = nullable)] pub orientation: Option, + /// 是否输出四边面网格;仅 v3.x 与 P2 家族支持。 #[ts(optional = nullable)] pub quad: Option, + /// 是否启用智能低模;仅 v3.x 家族支持。 #[ts(optional = nullable)] pub smart_low_poly: Option, + /// 是否拆分模型部件;要求 `texture=false`、`pbr=false`,且不能与 `quad` / `smartLowPoly` 同用。 #[ts(optional = nullable)] pub generate_parts: Option, + /// 几何体压缩方式;仅 v3.x 家族支持。 #[ts(optional = nullable)] pub compress: Option, + /// 是否在产物里导出 UV。 #[ts(optional = nullable)] pub export_uv: Option, + /// 产物朝向,取值 `+x` / `-x` / `+y` / `-y`。 #[ts(optional = nullable)] pub export_orientation: Option, }