运行
创建data文件夹,将temp.npz,landmark_embedding.npz置于此文件夹下
-
main.py
读取视频,并将调用dll,将bs系数存储为n * 51的bs.npy文件。
-
c++/optim.cpp
c++程序入口--fit(doubleres, double landmark)的输入为(指向bs数据的double指针, 指向2*68的landmark的double指针),函数返回值为指向bs数据的double指针,包括模型创建,初始化和计算过程,具体细节可参考代码注释,
-
c++/AvatarModel.cpp
模型构建和初始化
-
c++/AvatarOptimize.cpp
求解问题--optimize(double* res)函数的输入为指向2*68的landmark的double指针,在函数内部完成bs参数优化。
bs基的顺序
['browDownLeft.obj', 'browDownRight.obj', 'browInnerUp.obj', 'browOuterUpLeft.obj',
'browOuterUpRight.obj',
'eyeBlinkLeft.obj', 'eyeBlinkRight.obj', 'eyeLookDownLeft.obj', 'eyeLookDownRight.obj',
'eyeLookInLeft.obj', 'eyeLookInRight.obj', 'eyeLookOutLeft.obj', 'eyeLookOutRight.obj',
'eyeLookUpLeft.obj', 'eyeLookUpRight.obj', 'eyeSquintLeft.obj', 'eyeSquintRight.obj',
'eyeWideLeft.obj', 'eyeWideRight.obj',
'jawForward.obj', 'jawLeft.obj','cheekPuff.obj', 'cheekSquintLeft.obj', 'cheekSquintRight.obj',
'jawOpen.obj', 'jawRight.obj', 'mouthClose.obj', 'mouthDimpleLeft.obj', 'mouthDimpleRight.obj',
'mouthFrownLeft.obj', 'mouthFrownRight.obj', 'mouthFunnel.obj', 'mouthLeft.obj',
'mouthLowerDownLeft.obj', 'mouthLowerDownRight.obj', 'mouthPressLeft.obj', 'mouthPressRight.obj',
'mouthPucker.obj', 'mouthRight.obj', 'mouthRollLower.obj', 'mouthRollUpper.obj', 'mouthShrugLower.obj',
'mouthShrugUpper.obj', 'mouthSmileLeft.obj', 'mouthSmileRight.obj', 'mouthStretchLeft.obj',
'mouthStretchRight.obj', 'mouthUpperUpLeft.obj', 'mouthUpperUpRight.obj', 'noseSneerLeft.obj',
'noseSneerRight.obj']
文件下载
temp.npz
链接: https://pan.baidu.com/s/1T9BWbKGSg7aK7DH23bZw1g?pwd=rqah 提取码: rqah
landmark_embedding.npz
链接: https://pan.baidu.com/s/1jzYtO7-0FzkMab60n8U1vw?pwd=aacj 提取码: aacj