Deep3DFaceReconstruction icon indicating copy to clipboard operation
Deep3DFaceReconstruction copied to clipboard

point_buf in BFM_model_front.mat ?

Open giracle opened this issue 3 years ago • 1 comments

This is a great job, but I have some questions. Can you help me answer them? 'point_buf' in 'BFM_ model_ front.mat', How to obtain the content of 'point_buf' and create the point_buf ?

giracle avatar Oct 29 '22 15:10 giracle

hi dear,i encountered the same issue and i solved it. point buffer holds the adjacent tri-faces id for each vertice. the default num of faces is 8,if not,fill in with len(tri). And the point buf only used for calculating v_norm in this function:

def Compute_norm(self, face_shape):

        face_id = self.tri.long()
        point_id = self.point_buf.long()
        shape = face_shape
        v1 = shape[:, face_id[:, 0], :]
        v2 = shape[:, face_id[:, 1], :]
        v3 = shape[:, face_id[:, 2], :]
        e1 = v1 - v2
        e2 = v2 - v3
        face_norm = e1.cross(e2)
        empty = torch.zeros((face_norm.size(0), 1, 3),
                            dtype=face_norm.dtype, device=face_norm.device)
        face_norm = torch.cat((face_norm, empty), 1)
        v_norm = face_norm[:, point_id, :].sum(2)
        v_norm = v_norm / v_norm.norm(dim=2).unsqueeze(2)

        return v_norm

HITKevin avatar Jan 10 '23 09:01 HITKevin