Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 骨骼动画:变换矩阵之间的插值(collada)_C++_3d_Skeletal Animation - Fatal编程技术网

C++ 骨骼动画:变换矩阵之间的插值(collada)

C++ 骨骼动画:变换矩阵之间的插值(collada),c++,3d,skeletal-animation,C++,3d,Skeletal Animation,下午好。我想实现骨骼动画。我在Blender中创建了一个简单的示例,并通过collada将其导出 因为这对我来说是全新的,所以我使用了规范并通过关键帧重新创建了网格 然后我尝试在变换矩阵之间插值,以获得完整的动画 Vector32BITF*顶点=(Vector32BITF*)calloc(CubeDAE::verticesCount,sizeof(Vector32BITF)); SceUShort16*指数=(SceUShort16*)calloc(立方:指数计数,大小(SceUShor

下午好。我想实现骨骼动画。我在Blender中创建了一个简单的示例,并通过collada将其导出

因为这对我来说是全新的,所以我使用了规范并通过关键帧重新创建了网格

然后我尝试在变换矩阵之间插值,以获得完整的动画

Vector32BITF*顶点=(Vector32BITF*)calloc(CubeDAE::verticesCount,sizeof(Vector32BITF));
SceUShort16*指数=(SceUShort16*)calloc(立方:指数计数,大小(SceUShort16));
对于(无符号整数i=0;iPreUpdate();
关键帧a_i=((int)计时器)%CubeDAE::关键帧计数;
关键帧B_i=((int)计时器)+1)%CubeDAE::关键帧计数;
lerpFact=PSPFUFRAC(定时器);
//关键帧ea_i=0;
//b_i=1;
//lerpFact=0.8;
for(无符号int-bone_i=0;bone_i顶点[vertices_i].color=(0xff经过长时间的问题搜索,我终于找到了它

主要错误出现在函数Mathf::Matrix::fromRotationTranslation()

void from旋转平移(SCEPSFMATRIX4*结果,常数SCEPSFVECTOR 4*四元数,常数SCEPSFVECTOR 3*平移)
{
//四元数数学
浮动x=四元数->x,y=四元数->y,z=四元数->z,w=四元数->w,
x2=x+x,
y2=y+y,
z2=z+z,
xx=x*x2,
xy=x*y2,
xz=x*z2,
yy=y*y2,
yz=y*z2,
zz=z*z2,
wx=w*x2,
wy=w*y2,
wz=w*z2;
结果->x.x=1-(yy+zz);
结果->x.y=xy+wz;
结果->x.z=xz-wy;
结果->x.w=0;
结果->y.x=xy-wz;
结果->y.y=1-(xx+zz);
结果->y.z=yz+wx;
结果->y.w=0;
结果->z.x=xz+wy;
结果->z.y=yz-wx;
结果->z.z=1-(xx+yy);
结果->z.w=0;
结果->w.x=翻译->x;
结果->w.y=翻译->y;
结果->w.z=翻译->z;
结果->w.w=1;
}
我现在有

void from旋转平移(SCEPSFMATRIX4*结果,常数SCEPSFVECTOR 4*四元数,常数SCEPSFVECTOR 3*平移)
{
//四元数数学
浮动x=四元数->x,y=四元数->y,z=四元数->z,w=四元数->w,
xx=x*x,
xy=x*y,
xz=x*z,
xw=x*w,
yy=y*y,
yz=y*z,
yw=y*w,
zz=z*z,
zw=z*w;
结果->x.x=1-2*(yy+zz);
结果->x.y=2*(xy-zw);
结果->x.z=2*(xz+yw);
结果->y.x=2*(xy+zw);
结果->y.y=1-2*(xx+zz);
结果->y.z=2*(yz-xw);
结果->z.x=2*(xz-yw);
结果->z.y=2*(yz+xw);
结果->z.z=1-2*(xx+yy);
结果->x.w=翻译->x;
结果->y.w=翻译->y;
结果->z.w=翻译->z;
结果->w.x=结果->w.y=结果->w.z=0;
结果->w.w=1;
}

附言:非常有帮助