SegviGen / data_toolkit /example_interactive_seg.py
fenghora's picture
git init
84bb8a3
import os
import sys
ROOT_DIR = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
if ROOT_DIR not in sys.path:
sys.path.insert(0, ROOT_DIR)
from trellis2 import models
from color_glb import color_glb
from glb_to_vxz import glb_to_vxz
from vxz_to_slat import vxz_to_slat
from img_to_cond import img_to_cond
from glb_to_parts import glb_to_parts
from bpy_render import render_from_transforms
from trellis2.pipelines.rembg import BiRefNet
from trellis2.modules.image_feature_extractor import DinoV3FeatureExtractor
rembg_model = BiRefNet(model_name="/root/autodl-tmp/RMBG-2.0")
rembg_model.cuda()
image_cond_model = DinoV3FeatureExtractor(model_name="/root/autodl-tmp/dinov3-vitl16-pretrain-lvd1689m")
image_cond_model.cuda()
shape_encoder = models.from_pretrained("/root/autodl-tmp/TRELLIS.2-4B/ckpts/shape_enc_next_dc_f16c32_fp16").cuda().eval()
tex_encoder = models.from_pretrained("/root/autodl-tmp/TRELLIS.2-4B/ckpts/tex_enc_next_dc_f16c32_fp16").cuda().eval()
glb = "./assets/example.glb"
input_vxz = "./assets/input.vxz"
parts_path = "./assets/parts"
interactive_seg_path = "./assets/interactive_seg"
interactive = True
transforms = "transforms.json"
img = "./assets/img.png"
cond = "./assets/cond.pth"
glb_to_vxz(glb, input_vxz)
glb_to_parts(glb, parts_path)
color_glb(parts_path, interactive_seg_path, interactive)
render_from_transforms(glb, transforms, img)
img_to_cond(rembg_model, image_cond_model, img, cond)
for part_name in sorted(os.listdir(interactive_seg_path)):
part_path = os.path.join(interactive_seg_path, part_name)
output_glb_path = os.path.join(part_path, "output.glb")
output_vxz_path = os.path.join(part_path, "output.vxz")
glb_to_vxz(output_glb_path, output_vxz_path)
vxz_to_slat(shape_encoder, tex_encoder, input_vxz, output_vxz_path, part_path, interactive)