def apply_delta_c(self, z, c, truncation_psi=1, truncation_cutoff=None, update_emas=False):
        '''
        Input:
        z: latent code z
        c: latent code c

        Output:
        c_new: latent code c after adding the delta
        delta_c: delta_c from z and c_cam
        '''
        if self.rendering_kwargs['c_gen_conditioning_zero']:
            c = torch.zeros_like(c)
        delta_c = self.t_mapping(z, c * self.rendering_kwargs.get('c_scale', 0), truncation_psi=truncation_psi, truncation_cutoff=truncation_cutoff, update_emas=update_emas)
        delta_c = torch.squeeze(delta_c, 1)
        # delta_c = delta_c * 0.1 # scale for better initialization
        # index 3, 7, 11 are the translation index in extrinsic
        c_new = c.clone()
        c_new[:,3] += delta_c[:,0]
        c_new[:,7] += delta_c[:,1]
        c_new[:,11] += delta_c[:,2]

        return c_new, delta_c

        Input:
        z: latent code z
        c: latent code c

        Output:
        c_new: latent code c after adding the delta
        delta_c: delta_c from z and c_cam
        
training/triplane.py