Skip to main content

tripo_api/tasks/
convert_model.rs

1//! `convert_model` task variant.
2
3use serde::{Deserialize, Serialize};
4
5use crate::enums::{ExportOrientation, FbxPreset, OutputFormat, TextureFormat};
6
7/// Request body for `convert_model`. Wire `type`: `convert_model`.
8#[derive(Debug, Clone, Serialize, Deserialize)]
9#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
10#[serde(deny_unknown_fields)]
11pub struct ConvertModelRequest {
12    /// Source task id.
13    pub original_model_task_id: String,
14    /// Target mesh format.
15    pub format: OutputFormat,
16    /// Quad output.
17    #[serde(skip_serializing_if = "Option::is_none")]
18    pub quad: Option<bool>,
19    /// Mirror symmetry enforcement.
20    #[serde(skip_serializing_if = "Option::is_none")]
21    pub force_symmetry: Option<bool>,
22    /// Face count limit.
23    #[serde(skip_serializing_if = "Option::is_none")]
24    pub face_limit: Option<i32>,
25    /// Flatten the model bottom.
26    #[serde(skip_serializing_if = "Option::is_none")]
27    pub flatten_bottom: Option<bool>,
28    /// Flatten threshold (meters).
29    #[serde(skip_serializing_if = "Option::is_none")]
30    pub flatten_bottom_threshold: Option<f64>,
31    /// Texture resolution (pixels per side).
32    #[serde(skip_serializing_if = "Option::is_none")]
33    pub texture_size: Option<i32>,
34    /// Texture format.
35    #[serde(skip_serializing_if = "Option::is_none")]
36    pub texture_format: Option<TextureFormat>,
37    /// Uniform scale factor.
38    #[serde(skip_serializing_if = "Option::is_none")]
39    pub scale_factor: Option<f64>,
40    /// Reset pivot to the bottom-center of the bounding box.
41    #[serde(skip_serializing_if = "Option::is_none")]
42    pub pivot_to_center_bottom: Option<bool>,
43    /// Include animation data.
44    #[serde(skip_serializing_if = "Option::is_none")]
45    pub with_animation: Option<bool>,
46    /// Pack UVs.
47    #[serde(skip_serializing_if = "Option::is_none")]
48    pub pack_uv: Option<bool>,
49    /// Bake textures.
50    #[serde(skip_serializing_if = "Option::is_none")]
51    pub bake: Option<bool>,
52    /// Restrict to named parts.
53    #[serde(skip_serializing_if = "Option::is_none")]
54    pub part_names: Option<Vec<String>>,
55    /// Export per-vertex colors.
56    #[serde(skip_serializing_if = "Option::is_none")]
57    pub export_vertex_colors: Option<bool>,
58    /// FBX target preset (Blender/Mixamo/3DsMax).
59    #[serde(skip_serializing_if = "Option::is_none")]
60    pub fbx_preset: Option<FbxPreset>,
61    /// Output axis orientation (e.g. `+y`).
62    #[serde(skip_serializing_if = "Option::is_none")]
63    pub export_orientation: Option<ExportOrientation>,
64    /// Keep animated character in place.
65    #[serde(skip_serializing_if = "Option::is_none")]
66    pub animate_in_place: Option<bool>,
67}