获取骨骼矩阵的位置以将单独的网格渲染到该位置?

时间:2019-06-17 11:11:53

标签: java animation math matrix vector

我有一个骨骼动画系统,可以使用多种来源拼凑而成。我想知道的是如何获取骨骼位置并为该骨骼位置渲染单独的网格/项目,例如选择项目后,将剑握在玩家手上。

我尝试过的是取一个Vector4f(0,0,0,1)并使用LWJGL2 Matrix4f.trandform(mat,vector4f,dest),其中mat是从动画文件中提取的矩阵,而vector4f是一个陈述的矩阵上面然后dest是它产生的一个新Vector,这就是我正在使用的。

在使用GL11绘图工具时,它可以将线条和点数渲染到正确的位置[请参见GIF 1 https://imgur.com/a/z19R264]。我注意到的一件事是我必须将x,y,z值除以16将其设置为正确的尺寸,否则将尺寸设置为大尺寸(这是正常的)。

它确实渲染武器并且武器随动画一起移动,但是它没有渲染到正确的位置以及动画,例如头部左右移动时,物品在移动时也会像弓形图案一样轻微地上下移动。

 screenPos = new Vector4f(0,0,0,1);

 Matrix4f mat  = ((ModelSMDBase)getMainModel()).theModel.body.currentAnim.frames.get(((ModelSMDBase)getMainModel()).theModel.body.currentAnim.currentFrameIndex).transforms.get(child.ID);

Matrix4f.transform(mat, screenPos, screenPos);

float x2 = screenPos.getX()/16,
 y2 = screenPos.getY()/16,
 z2 = screenPos.getZ()/16;

预计该项目将渲染到骨骼的位置,并且在动画提供后没有问题,实际上结果是该项目在错误的位置渲染。

0 个答案:

没有答案