File size: 2,204 Bytes
736dcf7
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/bin/bash

echo "Starting Puppeteer rigging pipeline..."

mkdir -p results

# skeleton
echo "Running skeleton generation..."
cd skeleton
python demo.py \
    --input_dir ../examples \
    --pretrained_weights skeleton_ckpts/puppeteer_skeleton_w_diverse_pose.pth \
    --output_dir ../results/ --save_name skel_results --input_pc_num 8192 \
    --save_render --apply_marching_cubes --joint_token --seq_shuffle

echo "Skeleton generation completed."

# If you found the results not satisfactory, try the model trained with bone-based tokenization:
# echo "Running skeleton with bone tokenization..."
# python demo.py \
#     --input_dir ../examples \
#     --pretrained_weights skeleton_ckpts/puppeteer_skeleton_w_diverse_pose_bone_token.pth \
#     --output_dir ../results/ --save_name skel_results --input_pc_num 8192 \
#     --save_render --apply_marching_cubes --hier_order --seq_shuffle


# Copy generated rig files to skeletons for following skinning
echo "Copying generated rig files..."
mkdir -p ../results/skeletons/
cd ../results/skel_results/
for file in *_pred.txt; do
    if [ -f "$file" ]; then
        new_name=$(echo "$file" | sed 's/_pred\.txt$/.txt/')
        cp "$file" "../skeletons/$new_name"
    fi
done
cd ../../skeleton
echo "Rig files copied to results/skeletons/"


# skinning
# Note that meshes with complex topology may require more data processing time.
echo "Running skinning..."
cd ../skinning
CUDA_VISIBLE_DEVICES=0 torchrun \
    --nproc_per_node=1 \
    --master_port=10009 \
    main.py \
    --num_workers 1 --batch_size 1 --generate --save_skin_npy \
    --pretrained_weights skinning_ckpts/puppeteer_skin_w_diverse_pose_depth1.pth \
    --input_skel_folder ../results/skeletons \
    --mesh_folder ../examples \
    --post_filter --depth 1 --save_folder ../results/skin_results

echo "Skinning completed."


echo "Copying generated skin files..."
mkdir -p ../results/final_rigging/
cd ../results/skin_results/generate/
for file in *_skin.txt; do
    if [ -f "$file" ]; then
        new_name=$(echo "$file" | sed 's/_skin\.txt$/.txt/')
        cp "$file" "../../final_rigging/$new_name"
    fi
done
cd ../../../
echo "Final rig files copied to results/final_rigging/"