3DDFA icon indicating copy to clipboard operation
3DDFA copied to clipboard

Bug in `write_obj_with_colors`

Open tetterl opened this issue 5 years ago • 3 comments

I'm testing main.py. It seems that the function write_obj_with_colors contains a bug. In particular the line:

s = 'v {:.4f} {:.4f} {:.4f} {} {} {}\n'.format(vertices[1, i], vertices[0, i], vertices[2, i], colors[i, 2],
                                               colors[i, 1], colors[i, 0])

We are writing yxz to the *.obj file instead of xyz.

*.ply file in meshlab: image

*.obj file with yxz in meshlab: image

If we simply change the indices: format(vertices[1, i], vertices[0, i], vertices[2, i], ... we don't get the correct vertex colors though (see white shirt of obama) *.obj file with xyz in meshlab: image

Original image: 0000

The 3 meshes don't seem to match in terms of the pose (and orientation). Is there a bug or anything I'm missing?

tetterl avatar Feb 12 '20 16:02 tetterl

Some of the mismatch might stem from the fact that the transformation in ddfa.py

# transform to image coordinate space
            vertex[1, :] = std_size + 1 - vertex[1, :]

transforms from the right-handed world coordinate system to the image coordinate system which then becomes a left-handed system.

The incorrect switching of axes in the *.obj generation inverts this again leading to a correct right handed coordinate system.

tetterl avatar Feb 13 '20 09:02 tetterl

I'm testing main.py. It seems that the function write_obj_with_colors contains a bug. In particular the line:

s = 'v {:.4f} {:.4f} {:.4f} {} {} {}\n'.format(vertices[1, i], vertices[0, i], vertices[2, i], colors[i, 2],
                                               colors[i, 1], colors[i, 0])

We are writing yxz to the *.obj file instead of xyz.

*.ply file in meshlab: image

*.obj file with yxz in meshlab: image

If we simply change the indices: format(vertices[1, i], vertices[0, i], vertices[2, i], ... we don't get the correct vertex colors though (see white shirt of obama) *.obj file with xyz in meshlab: image

Original image: 0000

The 3 meshes don't seem to match in terms of the pose (and orientation). Is there a bug or anything I'm missing?

How can you get the obj file with texture?Thank you.

Matthewli623 avatar Sep 16 '20 14:09 Matthewli623

@Matthewli623 Sampling the texture by position correspondence.

cleardusk avatar Sep 19 '20 15:09 cleardusk