基于Leap Motion+openGL的三维手重建
解决方案:
- Model-3ds max建模+MilkShape 3D骨骼绑定(关键)
- ms3d模型文件格式研究和读取
- View-OpenGL骨骼动画实现
- 骨骼关节矩阵变换
- 顶点变换
- Control-Leap Motion SDK
- 从动作帧构造当前矩阵
关键算法:
- 关节矩阵变换
- 第一步,构造关节的初始局部矩阵
- 不同的数据帧有不同的方式,这里要注意OpenGL图形引擎中定义的变换矩阵是以列为主序,因此存储矩阵时要取相应矩阵的转置。
- 第二步,求关节初始全局矩阵。
-
关节初始全局矩阵 = 父关节初始全局矩阵 * 关节初始局部矩阵
-
- 第三步,求关节当前局部矩阵。
- 关节当前局部矩阵= 关节初始局部矩阵* 动作矩阵
- 第四步,求关节当前全局矩阵。
- 关节当前全局矩阵 = 父关节当前全局矩阵* 关节当前局部矩阵
- 第一步,构造关节的初始局部矩阵
- 顶点变换
- 第一步,求顶点相对于关节的初始相对坐标。
- 顶点初始全局坐标 = 顶点初始相对坐标 * 关节初始全局矩阵
- 第二步,求动作帧中的顶点全局坐标。
-
顶点当前全局坐标 = 顶点相对坐标 * 关节当前全局矩阵
-
- 第一步,求顶点相对于关节的初始相对坐标。