Fluxo: Text2D (texto → imagem) → unload → Hunyuan3DDiTFlowMatchingPipeline (imagem → trimesh.Trimesh).
from text3d import HunyuanTextTo3DGenerator, defaults
from text3d.utils import save_meshTextura e PBR no GLB não fazem parte deste pacote: usa o projeto Paint3D (paint3d texture — saída PBR com Hunyuan3D-Paint 2.1). Ver Paint3D/README.md, Paint3D/docs/PAINT_SETUP.md e PBR_MATERIALIZE.md (GLB vs textura difusa).
Padrões de qualidade/memória: módulo text3d.defaults (perfil ~6GB; HUNYUAN_HQ_* para GPU grande). O dicionário defaults.PRESET_HUNYUAN espelha o CLI --preset fast|balanced|hq.
gen = HunyuanTextTo3DGenerator(
device=None, # "cuda" | "cpu" | auto
low_vram_mode=False, # True + CUDA: Hunyuan em CPU (lento)
verbose=False,
cache_dir=None,
hunyuan_model_id="tencent/Hunyuan3D-2.1",
hunyuan_subfolder="hunyuan3d-dit-v2-1",
)Text-to-3D completo.
| Parâmetro | Padrão | Descrição |
|---|---|---|
t2d_width, t2d_height |
defaults.DEFAULT_T2D_* (768) |
Text2D; 1024 em GPU grande |
t2d_steps |
defaults.DEFAULT_T2D_STEPS (8) |
Passos Text2D (8 steps melhora aderência ao prompt de iluminação) |
t2d_guidance |
defaults.DEFAULT_T2D_GUIDANCE (1.0) |
Guidance Text2D (SDNQ ~1.0) |
text2d_model_id |
None | Override HF Text2D |
t2d_seed |
None | Seed Text2D |
num_inference_steps |
defaults.DEFAULT_HY_STEPS (24) |
Passos Hunyuan; HQ: HUNYUAN_HQ_STEPS |
guidance_scale |
defaults.DEFAULT_HY_GUIDANCE (5.0) |
Guidance Hunyuan |
octree_resolution |
defaults.DEFAULT_OCTREE_RESOLUTION (128) |
HQ: HUNYUAN_HQ_OCTREE |
num_chunks |
defaults.DEFAULT_NUM_CHUNKS (4096) |
HQ: HUNYUAN_HQ_NUM_CHUNKS |
hy_seed |
None | Seed Hunyuan |
mc_level |
defaults.DEFAULT_MC_LEVEL (0.0) |
Nível marching cubes |
t2d_full_gpu |
False | Se True, FLUX inteiro na GPU (só em máquinas com muita VRAM) |
return_reference_image |
False | Se True, devolve (mesh, pil_image) para usar depois com Paint3D |
Por defeito t2d_full_gpu=False combina com defaults.DEFAULT_T2D_CPU_OFFLOAD (offload no Text2D em CUDA).
Retorno: trimesh.Trimesh, ou (trimesh.Trimesh, PIL.Image) se return_reference_image=True (malha bruta; o CLI aplica repair_mesh antes de gravar).
Depois de generate ou generate_from_image, grava o GLB e chama o CLI ou a API do pacote Paint3D:
paint3d texture mesh.glb -i ref.png -o mesh_tex.glbO ficheiro de saída inclui material PBR do pipeline 2.1. Para mapas PBR a partir de uma imagem difusa, usa o CLI Materialize (não o fluxo GLB).
Pré-requisitos do Paint: código Hunyuan3D-2.1 (hy3dpaint), rasterizador GPU, Real-ESRGAN — ver Paint3D/docs/PAINT_SETUP.md.
Em código Python, após generate / generate_from_image, podes alinhar ao CLI:
from text3d.utils import repair_mesh, save_mesh
mesh = gen.generate("prompt")
mesh = repair_mesh(mesh, smooth_iterations=0) # ou 1–2 para suavizar
save_mesh(mesh, "out.glb")repair_mesh faz merge de vértices, mantém a maior componente conexa (remove ilhas pequenas) e, se smooth_iterations > 0, suavização Laplaciana. Isto não fecha buracos nem “cola” pés ao chão: geometria fina e desconexões vêm sobretudo do modelo e dos parâmetros Hunyuan (octree_resolution, num_chunks, num_inference_steps).
Apenas Hunyuan (caminho, Path ou PIL.Image).
with HunyuanTextTo3DGenerator() as gen:
mesh = gen.generate("prompt")Aceita trimesh.Trimesh (Hunyuan) ou array numpy (legado diffusers).
save_mesh(mesh, "out.glb", format="glb")Ver src/text3d/utils/export.py.
text3d.utils.memory: get_system_info, get_gpu_info, format_bytes.
- Hunyuan3D-2.1 (shape:
hunyuan3d-dit-v2-1, SDNQ INT4) - Código Hunyuan3D-2.1