Closed visonpon closed 2 years ago
Did you run the demo.py?
Could you provide your mesh?
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.
Can you check if the body is facing +Z and the head is pointing to +Y in Meshlab (Blender might change the coordinate system)?
my processed mesh look like below
Can you turn on the axes and take the screenshot again?
Can you also show what your rest.obj
looks like?
Can you also post what your final results look like?
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?
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.
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.
@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 what's more the dst1's surface also have some problem.
You can try changing use_smooth
in the code.
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.
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.
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 toupsample()
, it will return the downsampled mesh.
Thanks for your quick reply!
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):
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~