zycliao / skeleton-free-pose-transfer

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

after downsampling my own smpl mesh file to meet the size, the results are bad #4

Closed visonpon closed 2 years ago

visonpon commented 2 years ago

Hi @zycliao . thanks for sharing this wonderful work. I have tried to downsampling my own smpl mesh file and use it as the src data, but the results are bad.[I use meshlab to downsampling as you mentioned in this issue]. but when I use downsampled mesh as dst and use the src file your provided, the results are normal.

So how to prepare the pose file for src ? I guess it's becuase the betas parameters of mine smpl files are not the same as your src file?

I wonder if there exist other details that I ignored? hope you can help, thanks~

twowwj commented 2 years ago

Did you run the demo.py?

zycliao commented 2 years ago

Could you provide your mesh?

visonpon commented 2 years ago

I'm sorry it's not convenient for me to upload the mesh file. I use the blender smpl add-ons to produce the mesh with setting different pose and shape, and use meshlab to downsampling. it's strange that those mesh can only use as dst.

zycliao commented 2 years ago

Can you check if the body is facing +Z and the head is pointing to +Y in Meshlab (Blender might change the coordinate system)?

visonpon commented 2 years ago

my processed mesh look like below 2001488824

zycliao commented 2 years ago

Can you turn on the axes and take the screenshot again? image

visonpon commented 2 years ago

1746964817

zycliao commented 2 years ago

Can you also show what your rest.obj looks like?

zycliao commented 2 years ago

Can you also post what your final results look like?

visonpon commented 2 years ago

1982528860

my input and result looks like above, you can see that even T-pose doesn't trans right. it seems the root coordinates are zero for your src file but mine's are not constrained, does this matters?

zycliao commented 2 years ago

In the latest commit, I updated a script demo_smpl.py, which uses randomly generated SMPL shapes. And the result is as follows. You can check what's the difference between this script and your models. image

zycliao commented 2 years ago

Oh, by the way. If you do downsampling, src mesh and rest mesh of src (rest.obj) should have the same triangulation. You can't downsample them separately.

visonpon commented 2 years ago

@zycliao ,thanks for your patient responce, I have tried as you mentioned above, when the src and dst are all from smpl, the results are normal, but when the src from smpl and dst from others like you provided[arissa.obj], the result still looks bad 1613103659 what's more the dst1's surface also have some problem.

zycliao commented 2 years ago

You can try changing use_smooth in the code.

jinnan-chen commented 2 years ago

Oh, by the way. If you do downsampling, src mesh and rest mesh of src (rest.obj) should have the same triangulation. You can't downsample them separately.

Hi, how to downsample them together with meshlab? It seems the transformation matrix cannot be obtained.

zycliao commented 2 years ago

Hi @jinmelo. You can take a look at this https://github.com/zycliao/skeleton-free-pose-transfer/blob/main/utils/mesh_res_mapper.py First, you downsample one of the meshes, and pass the mesh before and after downsampling to the __init__ function (v=high res mesh, orig_v=downsampled mesh). Then pass the other high-res mesh to upsample(), it will return the downsampled mesh.

jinnan-chen commented 2 years ago

Hi @jinmelo. You can take a look at this https://github.com/zycliao/skeleton-free-pose-transfer/blob/main/utils/mesh_res_mapper.py First, you downsample one of the meshes, and pass the mesh before and after downsampling to the __init__ function (v=high res mesh, orig_v=downsampled mesh). Then pass the other high-res mesh to upsample(), it will return the downsampled mesh.

Thanks for your quick reply!

jinnan-chen commented 2 years ago

I just tried with Mixamo data, so all the downsampled meshes should share the same faces with the first downsampled mesh, right? But the resulting other downsampled meshes seem to have wrong faces like this(before and after downsampled):

image image