Spaces:
Runtime error
Runtime error
# Open Source Model Licensed under the Apache License Version 2.0 | |
# and Other Licenses of the Third-Party Components therein: | |
# The below Model in this distribution may have been modified by THL A29 Limited | |
# ("Tencent Modifications"). All Tencent Modifications are Copyright (C) 2024 THL A29 Limited. | |
import torch | |
from PIL import Image | |
import os | |
from hy3dgen.rembg import BackgroundRemover | |
from hy3dgen.shapegen import Hunyuan3DDiTFlowMatchingPipeline, FaceReducer, FloaterRemover, DegenerateFaceRemover | |
from hy3dgen.text2image import HunyuanDiTPipeline | |
def image_to_3d(image_path='assets/demo.png'): | |
rembg = BackgroundRemover() | |
model_path = 'tencent/Hunyuan3D-2' # Use Hugging Face model path | |
image = Image.open(image_path) | |
image = image.resize((1024, 1024)) | |
if image.mode == 'RGB': | |
image = rembg(image) | |
pipeline = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained(model_path) | |
mesh = pipeline(image=image, num_inference_steps=30, mc_algo='mc', | |
generator=torch.manual_seed(2025))[0] | |
mesh = FloaterRemover()(mesh) | |
mesh = DegenerateFaceRemover()(mesh) | |
mesh = FaceReducer()(mesh) | |
mesh.export('mesh.glb') | |
try: | |
from hy3dgen.texgen import Hunyuan3DPaintPipeline | |
pipeline = Hunyuan3DPaintPipeline.from_pretrained(model_path) | |
mesh = pipeline(mesh, image=image) | |
mesh.export('texture.glb') | |
except Exception as e: | |
print(e) | |
print('Please try to install requirements by following README.md') | |
def text_to_3d(prompt='a car'): | |
rembg = BackgroundRemover() | |
t2i = HunyuanDiTPipeline('Tencent-Hunyuan--HunyuanDiT-v1.1-Diffusers-Distilled') | |
model_path = 'tencent/Hunyuan3D-2' # Use Hugging Face model path | |
i23d = Hunyuan3DDiTFlowMatchingPipeline.from_pretrained(model_path) | |
image = t2i(prompt) | |
image = rembg(image) | |
mesh = i23d(image, num_inference_steps=30, mc_algo='mc')[0] | |
mesh = FloaterRemover()(mesh) | |
mesh = DegenerateFaceRemover()(mesh) | |
mesh = FaceReducer()(mesh) | |
mesh.export('t2i_demo.glb') | |
if __name__ == '__main__': | |
image_to_3d() | |
# text_to_3d() | |