资源简介
人体骨骼运动FORWARD KINEMATICS,利用opengl,c++实现,visual studio 平台
代码片段和文件信息
#include
#include
#include
#include “display.h“
#include “transform.h“
#include
#include
using namespace std;
Display::Display()
{
m_Skeleton = NULL;
m_Motion = NULL;
boneIndex = 0;
scaleBone = 0;
}
Display::~Display()
{
if(m_Skeleton != NULL) delete m_Skeleton;
if(m_Motion != NULL) delete m_Motion;
}
void Display::computeLocal2GlobalT()//从根节点层层计算TRANSLATION达到每个点
{
for(int i=0;i<3;i++)
m_Local2GlobalT[0].l2gt[i] = 0;//for root joint
for(int i=1;i {
float vec[3] = {000};
//cout< int self=i;
while(self!=0)
{
int parent=m_Skeleton->m_pBoneList[self].parent_idx;
v3_add(m_Skeleton->m_pBoneList[parent].tranvecvec);
self = parent;
}
v3_assign(vecm_Local2GlobalT[i].l2gt);
//cout<
}
}
void Display::computeChild2Parent()
{
computeLocal2GlobalT();//??用处
float idenM[4][4]={{1000}{0100}{0010}{0001}};
matrix_assign(idenMm_Child2Parent[0].c2p);
float temp1[4][4]temp4[3];
for(int i=1;i {
int parent = m_Skeleton->m_pBoneList[i].parent_idx;
matrix_mult(m_Skeleton->m_pBoneList[parent].rot_global_localm_Skeleton->m_pBoneList[i].rot_local_globaltemp1);
//v3_minus(m_Local2GlobalT[i].l2gtm_Local2GlobalT[parent].l2gttemp3);
matrix_transform_affine(m_Skeleton->m_pBoneList[parent].rot_global_localm_Skeleton->m_pBoneList[parent].trantemp4);
temp1[0][3] = temp4[0];
temp1[1][3] = temp4[1];
temp1[2][3] = temp4[2];
matrix_assign(temp1m_Child2Parent[i].c2p);
}
}
void Display::computeLocalRot(Motionframe * p_Motion)
{
p_MotionRot = new MotionRot;
for(int i=0;i<3;i++)
rootPos[i]=p_Motion->frame[i];
float rxryrz;
int count = 3;
for(int i=0;i {
rx=0;
ry=0;
rz=0;
if(m_Skeleton->m_pBoneList[i].dofx==1)
{
rx = p_Motion->frame[count];//frame[62]
count++;
}
if(m_Skeleton->m_pBoneList[i].dofy==1)
{
ry = p_Motion->frame[count];
count++;
}
if(m_Skeleton->m_pBoneList[i].dofz==1)
{
rz = p_Motion->frame[count];
count++;
}
rotationZYX(p_MotionRot->bRotList[i].bRot rz ry rx);
}
}
void Display::CGlobalPos(int numframe)
{
computeChild2Parent();
m_Pos[numframe] = new Pos;
float glPos[3]temp[3];
computeLocalRot(m_Motion->m_pMotion[numframe]);
for(int i=0;i<3;i++)
m_Pos[numframe]->globalPos[0][i] = rootPos[i];
for(int i=1;i {
int self = i;
v3_assign(m_Skeleton->m_pBoneList[self].loc_posglPos);
while(self!=0)
{
int parent = m_Skeleton->m_pBoneList[self].parent_idx;
//v3_assign(glPostemp);
matrix_transform_affine(p_MotionRot->bRotList[self].bRotglPostemp);
matrix_transform_affine(m_Child2Parent[self].c2ptemp
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 81408 2009-10-26 22:27 Human Motion_FK\debug\Human Motion_FK.exe
文件 557972 2009-10-26 22:27 Human Motion_FK\debug\Human Motion_FK.ilk
文件 633856 2009-10-26 22:27 Human Motion_FK\debug\Human Motion_FK.pdb
文件 7270 2008-01-11 19:49 Human Motion_FK\debug\male.ASF
文件 163436 2005-01-08 04:26 Human Motion_FK\debug\male2.running.AMC
文件 515347 2008-01-11 21:35 Human Motion_FK\debug\male_walk10.AMC
文件 235 2008-11-24 19:03 Human Motion_FK\Human Motion_FK\constant.h
文件 6694 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\BuildLog.htm
文件 56575 2009-10-26 20:37 Human Motion_FK\Human Motion_FK\Debug\display.obj
文件 621 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\Human Motion_FK.exe.intermediate.manifest
文件 53475 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\main.obj
文件 47381 2009-10-25 21:03 Human Motion_FK\Human Motion_FK\Debug\motion.obj
文件 67 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\mt.dep
文件 68973 2009-10-25 21:03 Human Motion_FK\Human Motion_FK\Debug\skeleton.obj
文件 45323 2009-10-25 21:03 Human Motion_FK\Human Motion_FK\Debug\transform.obj
文件 265216 2008-12-04 16:30 Human Motion_FK\Human Motion_FK\Debug\vc80.idb
文件 208896 2008-12-04 16:30 Human Motion_FK\Human Motion_FK\Debug\vc80.pdb
文件 265216 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\vc90.idb
文件 233472 2009-10-26 22:27 Human Motion_FK\Human Motion_FK\Debug\vc90.pdb
文件 10945 2009-10-25 21:24 Human Motion_FK\Human Motion_FK\display.cpp
文件 1497 2009-10-25 14:50 Human Motion_FK\Human Motion_FK\display.h
文件 1084 2008-04-08 11:34 Human Motion_FK\Human Motion_FK\GL\glut.h
文件 4352 2009-10-26 22:23 Human Motion_FK\Human Motion_FK\Human Motion_FK.vcproj
文件 1427 2009-10-26 22:28 Human Motion_FK\Human Motion_FK\Human Motion_FK.vcproj.LENOVO-D01793DE.YveStar.user
文件 8037 2009-10-26 20:45 Human Motion_FK\Human Motion_FK\main.cpp
文件 7270 2008-01-11 19:49 Human Motion_FK\Human Motion_FK\male.ASF
文件 163436 2005-01-08 04:26 Human Motion_FK\Human Motion_FK\male2.running.AMC
文件 515347 2008-01-11 21:35 Human Motion_FK\Human Motion_FK\male_walk10.AMC
文件 2440 2008-11-24 11:10 Human Motion_FK\Human Motion_FK\motion.cpp
文件 982 2008-11-24 02:29 Human Motion_FK\Human Motion_FK\motion.h
............此处省略15个文件信息
相关资源
- VC++编写的科学计算器
- C++网络编程文件之第七章 网络层协议
- C++ Primer第四版中文高清非扫描版
- 谭浩强c++第二章例题
- c++FTP上传程序源代码
- KNN分类算法C++实现十次十倍交叉验证
- 图书管理系统C++数据结构
- 用C++编写的翻牌类游戏
- C++中国象棋人机对弈的实现
- accelerate c++ 英文版
- visual c++程序设计与应用教程课后操作
- 基于MFC的UDP通信实现
- opengl VisualC++
- 计算器 C++源码实现+-*\\()
- C++课程设计计算器
- 毕业设计-C++俄罗斯方块
- Opengl VC++演示六轴机械手
- c与c++嵌入式系统编程.pdf
- 基于网格的坡度滤波C++程序
- MiniSQL 用C++实现100166
- 南京理工大学c++课程设计6.2日期格式
- C++ 防火墙代码
- C++ Socket网络聊天
- vc++6.0 MFC 写的贪吃蛇工程源码
- C++Primer中文版(第4版)
- 用C++实现远程控制
- 遗传算法解决背包问题(C++版本)
- C++编程100例
- bmp24位彩色图像转8位灰度图像纯C++
- MFC平台下的电子词典
评论
共有 条评论