You are currently viewing HairDeck biến một ảnh nhân vật thành hair card có xương để animate

HairDeck biến một ảnh nhân vật thành hair card có xương để animate

Dựng tóc cho nhân vật 3D là phần tốn thời gian nhất trong pipeline làm game hoặc VTuber. Bạn có ảnh concept, muốn có mesh tóc, lại còn phải rig để tóc bay khi nhân vật quay đầu. HairDeck nhận vào một ảnh và trả ra cả hai thứ đó.

Cụ thể, repo tạo ra stylized hair card (kiểu tóc dựng bằng các tấm card xếp lớp, cách phổ biến trong game anime) kèm luôn chuỗi spring-bone điều khiển chúng. Mỗi card được biểu diễn bằng một token, và một set diffusion transformer sinh toàn bộ kiểu tóc cùng lúc thay vì từng card rời rạc. Kết quả xuất được dưới dạng GLB mesh, hoặc gắn lên avatar rồi xuất VRM.

README nói rõ ba điểm kỹ thuật. Card VAE encode từng card, conditional set diffusion sinh cả kiểu tóc như một tập hợp. Output giữ được từng card riêng lẻ và có UV coordinate cho mỗi card. Còn phần animation thì có chain diffusion model sinh xương, kèm skinning và export VRM.

Vì sao repo này đang được chú ý

646 sao sau hai ngày thành lập repo. Con số đó không quá lớn, nhưng tốc độ thì đáng để ý: repo tạo ngày 29/10/2026, cập nhật 31/10/2026. Đây là kiểu repo research vừa release, dân làm 3D và technical artist đang thử.

Vấn đề nó giải quyết khá cụ thể. Làm tóc card thủ công thì một bộ tóc stylized có thể mất vài giờ đến cả ngày cho một nhân vật, chưa tính rig. HairDeck gộp bước sinh hình và bước sinh xương vào cùng pipeline. Tác giả đến từ Đại học Thanh Hoa, Carnegie Mellon và CUHK, có paper kèm theo (phần citation trong README), nên đây là nghiên cứu chứ không phải side project.

Điểm khác biệt so với các tool text-to-3D hay image-to-3D nói chung: nó không sinh một khối tóc liền. Nó sinh đúng cấu trúc hair card mà pipeline game đang dùng, có UV, có xương. Đó là lý do nó hữu ích cho artist chứ không chỉ để xem demo đẹp.

Cài đặt và chạy thử

Yêu cầu khá cứng: Linux x86-64, Python 3.12, một GPU NVIDIA CUDA. Bản release test với PyTorch 2.8 và CUDA 12.8. Video preview cần ffmpeg trong PATH.

git clone https://github.com/hyz317/HairDeck.git
cd HairDeck

python -m pip install -r requirements.txt
python -m pip install --no-deps pyrender==0.1.45 # without its old PyOpenGL pin

Tải weight thì cần login Hugging Face trước, vì SAM 3 và DINOv3 là gated model. Phải accept license trên trang facebook/sam3 và facebook/dinov3-vitl16-pretrain-lvd1689m rồi mới chạy được:

hf auth login
export HAIRDECK_ROOT=/path/to/workspace # checkpoints, data, third-party weights and outputs
python scripts/setup/download_weights.py

Script này tự setup checkpoint, weight cho preprocessing và image encoder, data phụ trợ, và tải luôn Blender 4.2 LTS kèm VRM Add-on. Nếu bạn đã có Blender 4.2 LTS với VRM Add-on bật sẵn thì set biến HAIRDECK_BLENDER trỏ tới command của nó, đỡ phải tải thêm.

Sinh thử 4 variation từ một ảnh nhân vật, rồi export variation 0 thành VRM và video quay đầu:

python scripts/image_to_hair.py character.png --out results/my_character --n 4
python -m hairdeck.vrm.export results/my_character/character 0

--n nhận 1 đến 4 variation, --seed đặt seed đầu tiên. Muốn chỉ sinh card không sinh xương thì thêm --no-chains.

HairDeck biến một ảnh nhân vật thành hair card có xương để animate - ảnh 1
Ảnh: github.com/hyz317/HairDeck

Có demo local bằng Gradio, chạy ở cổng 7860:

python -m pip install -r requirements-demo.txt
python demo/app.py --port 7860

Output chính cho seed 0 gồm cards_seed0.json (geometry của hair card), chains_seed0.json (chuỗi spring-bone), hair_seed0.glb (có head proxy, per-card UV và màu tóc), bản hair_seed0_nohead.glb không kèm head proxy, cùng avatar_seed0.vrm và turn_seed0.mp4 nếu bạn chạy thêm bước export.

Ai nên dùng, dùng vào việc gì

Indie dev làm game stylized cần tóc cho NPC hàng loạt. Technical artist muốn có base mesh nhanh để chỉnh tay thay vì dựng từ số 0. Người làm VTuber muốn có file VRM gắn lên avatar mà không phải mở Blender rig từng sợi. Cả ba nhóm này đều hưởng lợi trực tiếp vì output đã ở đúng định dạng pipeline của họ.

Nhóm không nên dùng: ai cần tóc realistic, tóc dài simulation vật lý chính xác, hay chạy trên máy không có GPU NVIDIA. Repo không nhắm tới mấy case đó.

Còn một điểm đáng thử: bước evaluation có sẵn, chạy point-cloud và chain test, sample seed 0, 1, 2 rồi in metric theo paper ra eval.json. Nếu bạn muốn kiểm chứng trước khi tin, đây là cách làm.

python scripts/setup/download_weights.py --only test_data charm_test_pc dora
python scripts/test.py pointcloud
python scripts/test.py chains # On the artists' cards

Ưu điểm và những chỗ cần cân nhắc

Ưu điểm rõ nhất là output dùng được ngay, không phải mesh trang trí. Có per-card UV, có xương, có VRM export. Apache-2.0, dùng thương mại được. Có script train từ đầu nếu bạn có dataset riêng, dù README nói rõ phần restyled-render pool dùng cho image model release không được đưa vào bản này, nên train lại y hệt kết quả công bố là không chắc.

Hạn chế thì phải nói thẳng. Setup nặng: GPU CUDA, Python 3.12, PyTorch 2.8, CUDA 12.8, cộng Blender 4.2 LTS và mấy weight gated phải xin quyền. Đây là repo hai ngày tuổi, chưa có cộng đồng, chưa có issue nào để tham khảo khi kẹt. Tài liệu đủ để chạy quick start nhưng chưa sâu, ví dụ muốn hiểu rõ tham số chain diffusion hay tune chất lượng thì phải đọc code.

License Apache-2.0 áp cho code repo. Nhưng weight của SAM 3, DINOv3, BiRefNet có license riêng, phải tự đọc trước khi deploy thương mại. Đừng thấy Apache-2.0 ở repo rồi tưởng cả pipeline thoải mái.

Kết luận

Nếu bạn làm 3D stylized và đang có GPU NVIDIA, đáng bỏ một buổi chiều cài thử để xem output có khớp style dự án không. Không khớp thì mất buổi chiều, khớp thì tiết kiệm được cả đống giờ dựng tóc. Repo ở đây: hyz317/HairDeck.

Chia sẻ bài này

TelegramXFacebookZalo
Đăng ngày 02/11/2026
Giang Na
Về tác giả: Giang Na
Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.

Giang Na

Người lập ra blog từ 2015 với những bài về Blogspot. Giờ tập trung vào cách đưa AI vào việc thường ngày, theo hướng thực dụng và dễ làm theo.