Fixed debug data, points in right direction

Matrix::m 0 index based, not math def
This commit is contained in:
lanariel 2014-02-04 15:06:50 +01:00
parent 97a3792bff
commit e13410dced
1 changed files with 10 additions and 7 deletions

View File

@ -82,15 +82,16 @@ namespace Oyster
Definitions::AnimationData am; //final Definitions::AnimationData am; //final
if(info->Animated && models[i].AnimationPlaying != -1) if(info->Animated && models[i].AnimationPlaying != -1)
{ {
cube->WorldMatrix == Math::Matrix::identity;
//store inverse absolut transform //store inverse absolut transform
Math::Matrix* SkinTransform = new Math::Matrix[info->BoneCount]; Math::Matrix* SkinTransform = new Math::Matrix[info->BoneCount];
Math::Matrix* BoneAnimated = new Math::Matrix[info->BoneCount]; Math::Matrix* BoneAnimated = new Math::Matrix[info->BoneCount];
Math::Matrix* BoneAbsAnimated = new Math::Matrix[info->BoneCount]; Math::Matrix* BoneAbsAnimated = new Math::Matrix[info->BoneCount];
Math::Matrix Scale = Math::Matrix::identity; Math::Matrix Scale = Math::Matrix::identity;
Scale.m[0][0] = 0.1f;
Scale.m[1][1] = 0.1f; Scale.m[1][1] = 0.1f;
Scale.m[2][2] = 0.1f; Scale.m[2][2] = 1;
Scale.m[3][3] = 2;
for(int b = 0; b <info->BoneCount; ++b) for(int b = 0; b <info->BoneCount; ++b)
{ {
@ -98,6 +99,11 @@ namespace Oyster
SkinTransform[b] = Bone.Absolute.GetInverse(); SkinTransform[b] = Bone.Absolute.GetInverse();
BoneAnimated[b] = Bone.Relative; BoneAnimated[b] = Bone.Relative;
BoneAbsAnimated[b] = Bone.Absolute; BoneAbsAnimated[b] = Bone.Absolute;
cube2->WorldMatrix = Scale * info->bones[b].Absolute;
cube2->WorldMatrix.v[3] = info->bones[b].Absolute.v[3];
Basic::RenderScene(cube2,1, View, Projection);
} }
//for each bone in animation //for each bone in animation
//HACK use first bone //HACK use first bone
@ -124,18 +130,15 @@ namespace Oyster
for(int b = 0; b < info->BoneCount; ++b) for(int b = 0; b < info->BoneCount; ++b)
{ {
BoneAbsAnimated[b] = BoneAbsAnimated[info->bones[b].Parent] * BoneAnimated[b]; BoneAbsAnimated[b] = BoneAbsAnimated[info->bones[b].Parent] * BoneAnimated[b];
cube->WorldMatrix = BoneAbsAnimated[b] * Scale; cube->WorldMatrix = Scale * BoneAbsAnimated[b];
cube->WorldMatrix.v[3] = BoneAbsAnimated[b].v[3]; cube->WorldMatrix.v[3] = BoneAbsAnimated[b].v[3];
//Basic::RenderScene(cube,1,View,Projection); Basic::RenderScene(cube,1,View,Projection);
} }
//write data to am //write data to am
for(int b = 0; b < info->BoneCount; ++b) for(int b = 0; b < info->BoneCount; ++b)
{ {
am.animatedData[b] = BoneAbsAnimated[b] * SkinTransform[b]; am.animatedData[b] = BoneAbsAnimated[b] * SkinTransform[b];
cube2->WorldMatrix = Scale;
cube2->WorldMatrix.v[3] = info->bones[b].Absolute.v[3];
Basic::RenderScene(cube2,1,View,Projection);
} }
//retore to draw animated model //retore to draw animated model