Spaces:
Configuration error
Configuration error
''' | |
Copyright 2015 Matthew Loper, Naureen Mahmood and the Max Planck Gesellschaft. All rights reserved. | |
This software is provided for research purposes only. | |
By using this software you agree to the terms of the SMPL Model license here http://smpl.is.tue.mpg.de/license | |
More information about SMPL is available here http://smpl.is.tue.mpg. | |
For comments or questions, please email us at: smpl@tuebingen.mpg.de | |
About this file: | |
================ | |
This module defines the mapping of joint-angles to pose-blendshapes. | |
Modules included: | |
- posemap: | |
computes the joint-to-pose blend shape mapping given a mapping type as input | |
''' | |
import chumpy as ch | |
import numpy as np | |
import cv2 | |
class Rodrigues(ch.Ch): | |
dterms = 'rt' | |
def compute_r(self): | |
return cv2.Rodrigues(self.rt.r)[0] | |
def compute_dr_wrt(self, wrt): | |
if wrt is self.rt: | |
return cv2.Rodrigues(self.rt.r)[1].T | |
def lrotmin(p): | |
if isinstance(p, np.ndarray): | |
p = p.ravel()[3:] | |
return np.concatenate([(cv2.Rodrigues(np.array(pp))[0]-np.eye(3)).ravel() for pp in p.reshape((-1,3))]).ravel() | |
if p.ndim != 2 or p.shape[1] != 3: | |
p = p.reshape((-1,3)) | |
p = p[1:] | |
return ch.concatenate([(Rodrigues(pp)-ch.eye(3)).ravel() for pp in p]).ravel() | |
def posemap(s): | |
if s == 'lrotmin': | |
return lrotmin | |
else: | |
raise Exception('Unknown posemapping: %s' % (str(s),)) | |