tripo_api/tasks/
image_to_model.rs1use serde::{Deserialize, Serialize};
4
5use crate::compress::CompressionMode;
6use crate::enums::{GeometryQuality, Orientation, TextureAlignment, TextureQuality};
7use crate::error::Result;
8use crate::image::ImageInput;
9
10#[derive(Debug, Clone, Serialize, Deserialize)]
12#[cfg_attr(feature = "schemars", derive(schemars::JsonSchema))]
13#[serde(deny_unknown_fields)]
14pub struct ImageToModelRequest {
15 #[serde(rename = "file")]
17 pub image: ImageInput,
18 #[serde(skip_serializing_if = "Option::is_none")]
20 pub model_version: Option<String>,
21 #[serde(skip_serializing_if = "Option::is_none")]
23 pub face_limit: Option<i32>,
24 #[serde(skip_serializing_if = "Option::is_none")]
26 pub texture: Option<bool>,
27 #[serde(skip_serializing_if = "Option::is_none")]
29 pub pbr: Option<bool>,
30 #[serde(skip_serializing_if = "Option::is_none")]
32 pub model_seed: Option<i32>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 pub texture_seed: Option<i32>,
36 #[serde(skip_serializing_if = "Option::is_none")]
38 pub texture_quality: Option<TextureQuality>,
39 #[serde(skip_serializing_if = "Option::is_none")]
41 pub geometry_quality: Option<GeometryQuality>,
42 #[serde(skip_serializing_if = "Option::is_none")]
44 pub texture_alignment: Option<TextureAlignment>,
45 #[serde(skip_serializing_if = "Option::is_none")]
47 pub auto_size: Option<bool>,
48 #[serde(skip_serializing_if = "Option::is_none")]
50 pub orientation: Option<Orientation>,
51 #[serde(skip_serializing_if = "Option::is_none")]
53 pub quad: Option<bool>,
54 #[serde(skip_serializing_if = "Option::is_none")]
56 pub compress: Option<CompressionMode>,
57 #[serde(skip_serializing_if = "Option::is_none")]
59 pub generate_parts: Option<bool>,
60 #[serde(skip_serializing_if = "Option::is_none")]
62 pub smart_low_poly: Option<bool>,
63}
64
65impl ImageToModelRequest {
66 pub(crate) fn validate(&self) -> Result<()> {
67 super::validate_p1_params(
68 self.model_version.as_deref(),
69 self.quad,
70 self.smart_low_poly,
71 self.generate_parts,
72 self.geometry_quality.as_ref(),
73 )
74 }
75}