zycliao / skeleton-free-pose-transfer

[ECCV 2022] Skeleton-free Pose Transfer for Stylized 3D Characters
Other
193 stars 12 forks source link

about vertics of obj #2

Closed twowwj closed 2 years ago

twowwj commented 2 years ago

Hi,

I found that the number of vertices of all the objects you provided is around 2500, did you preprocess them? If I use the normal object with 6890 vertices, what can I do?

thx

zycliao commented 2 years ago

Yes, we make all data have around 5K faces during training, because of the GPU memory limitation. Meshes with other resolutions might also work because our model doesn't have constraints on it, but we haven't tested it. So I still suggest preprocessing the mesh.

To get the pose transfer/skinning results on your original resolution, you can use interpolation as in this script . I'll integrate it into the demo later.

twowwj commented 2 years ago

Following your description, do I need to downsample the normal object with 6890 vertices to around 2500 vertices? I want to know how to try my own data. By the way, in the train.py, what is the "simplify.npz"? Is this a part of SMPL?

zycliao commented 2 years ago

Yeah, it suggested doing so. For example, you can use Meshlab to apply quadric edge collapse decimation for downsampling.

Yes, simplify.npz saves the downsampling information of SMPL, but since we haven't prepared all the training data, it is not in the repo now.

twowwj commented 2 years ago

Thanks for your reply! Yes, I guess your proportion ratio is 0.4, right? Is the same problem with “geodesic_simplify.npz” specifically for the seq dataset?

If I want to retrain the model with Amass dataset, can I downsample all the Amass data in advance and train it like the Maximo dataset? Because I noticed that there is no simplification operation in other datasets. Can you give me some advice?

Another place I'm confused about is the upsampled function in mesh_res_mapper.py, which is the same as the simplify in the SMPL2Mesh function in networks. Is this upsampling or downsampling as determined by the face and vertex?

zycliao commented 2 years ago

Hi, geodesic_simplify.npz saves the geodesic information for simplified version of SMPL. But since we don't use geodesic information in the final version. Related parts have been removed.

I've updated the data processing codes. You can check it out. We did downsampling for AMASS and Mixamo. RigNet dataset is already downsampled, so no need to do it again.

In mesh_res_mapper.py, two meshes with different resolutions are given. We compute the barycentric coordinates of every vertex of orig_m with respect to its closest triangle on m. upsample() utilizes this barycentric coordinates, so that when the pose of m is changed, we can compute orig_m with the new pose.

twowwj commented 2 years ago

Thanks for your reply!

sunshineatnoon commented 2 years ago

Hi @zycliao Could you please elaborate more about how to get simplefy.npz? I suppose I can run data_proc/smpl_simplify.py, but I'm not sure how to get lres_up_male.obj and simplify.obj. Also, is this simplify information only needs to be run once for all AMASS data?