Documentation
¶
Overview ¶
包 threed 提供统一的 3D 模型生成接口,支持文本转 3D 和图像转 3D 两种模式, 并适配 Meshy 与 Tripo3D 两个主流服务商。
概述 ¶
本包为上层业务屏蔽不同 3D 生成服务商在 API 协议、任务轮询和输出格式上的差异, 对外暴露一致的请求/响应模型。典型使用场景包括:
- 通过文本描述生成 3D 模型(text-to-3D)。
- 通过单张或多视角图像生成 3D 模型(image-to-3D / multiview-to-3D)。
- 获取 GLB、FBX、OBJ、USDZ 等多种格式的模型文件。
核心接口 ¶
- ThreeDProvider — 3D 生成的统一抽象,包含 Name() 与 Generate() 方法。
- GenerateRequest — 生成请求,支持 prompt、image、format、quality 等参数。
- GenerateResponse — 生成响应,包含模型下载链接、缩略图与用量统计。
- ModelData — 单个生成模型的元数据(URL、格式、缩略图)。
主要能力 ¶
- Meshy 适配:通过 MeshyProvider 对接 Meshy API,支持 text-to-3D 与 image-to-3D,可选 preview / refine 质量等级。
- Tripo3D 适配:通过 TripoProvider 对接 Tripo3D API,支持 text-to-model、 image-to-model 与 multiview-to-model 三种任务类型。
- 异步轮询:两个 Provider 均内置任务状态轮询,调用方无需关心异步细节。
- 多格式输出:支持 GLB、FBX、OBJ、USDZ 格式选择。
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type GenerateRequest ¶
type GenerateRequest struct {
Prompt string `json:"prompt,omitempty"` // Text description
Image string `json:"image,omitempty"` // Base64 image for image-to-3D
ImageURL string `json:"image_url,omitempty"` // Image URL
Images []string `json:"images,omitempty"` // Multi-view images
Model string `json:"model,omitempty"` // Model to use
Format string `json:"format,omitempty"` // Output format (glb, fbx, obj, usdz)
Style string `json:"style,omitempty"` // Style preset
Quality string `json:"quality,omitempty"` // Quality level (draft, standard, high)
TextureSize int `json:"texture_size,omitempty"` // Texture resolution
}
生成请求代表一个 三维生成请求 。
type GenerateResponse ¶
type GenerateResponse struct {
Provider string `json:"provider"`
Model string `json:"model"`
Models []ModelData `json:"models"`
Usage ThreeDUsage `json:"usage"`
CreatedAt time.Time `json:"created_at"`
}
生成响应(Generate Response)代表3D生成响应.
type MeshyConfig ¶
type MeshyConfig struct {
APIKey string `json:"api_key" yaml:"api_key"`
BaseURL string `json:"base_url" yaml:"base_url"`
Model string `json:"model,omitempty" yaml:"model,omitempty"`
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}
MeshyConfig配置了 Meshy 3D提供者.
type MeshyProvider ¶
type MeshyProvider struct {
// contains filtered or unexported fields
}
MeshyProvider使用Meshy API执行3D生成.
func NewMeshyProvider ¶
func NewMeshyProvider(cfg MeshyConfig) *MeshyProvider
NewMeshyProvider 创建新的 Meshy 3D 提供者.
func (*MeshyProvider) Generate ¶
func (p *MeshyProvider) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
生成使用Messy API创建了3D模型.
func (*MeshyProvider) Name ¶
func (p *MeshyProvider) Name() string
type ModelData ¶
type ModelData struct {
ID string `json:"id,omitempty"`
URL string `json:"url,omitempty"` // Download URL
B64Data string `json:"b64_data,omitempty"` // Base64 encoded model
Format string `json:"format"` // File format
TextureURL string `json:"texture_url,omitempty"` // Texture download URL
ThumbnailURL string `json:"thumbnail_url,omitempty"` // Preview image
}
ModelData代表生成的3D模型.
type ThreeDProvider ¶
type ThreeDProvider interface {
Name() string
Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
}
ThreeDProvider为3D模型生成定义了接口.
type ThreeDUsage ¶
type ThreeDUsage struct {
ModelsGenerated int `json:"models_generated"`
Credits float64 `json:"credits,omitempty"`
}
3DUsage包含使用信息.
type TripoConfig ¶
type TripoConfig struct {
APIKey string `json:"api_key" yaml:"api_key"`
BaseURL string `json:"base_url" yaml:"base_url"`
Model string `json:"model,omitempty" yaml:"model,omitempty"`
Timeout time.Duration `json:"timeout,omitempty" yaml:"timeout,omitempty"`
}
TripoConfig 配置 Tripo3D 提供者 。
type TripoProvider ¶
type TripoProvider struct {
// contains filtered or unexported fields
}
Tripo Provider使用 Tripo3D API执行3D生成.
func NewTripoProvider ¶
func NewTripoProvider(cfg TripoConfig) *TripoProvider
NewTripoProvider 创建新的 Tripo3D 提供者.
func (*TripoProvider) Generate ¶
func (p *TripoProvider) Generate(ctx context.Context, req *GenerateRequest) (*GenerateResponse, error)
生成使用Tripo3D API创建了3D模型.
func (*TripoProvider) Name ¶
func (p *TripoProvider) Name() string
Click to show internal directories.
Click to hide internal directories.