问题标签 [skeletal-animation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
185 浏览

animation - Blender 和 UE4 - Noob:使用带有动画的模型

我很抱歉,但我试着到处找,我找不到答案。我在 blender 中制作了一个模型,并将其导出为 .fbx 文件,将其导入 UE4 第三人称默认项目。我尝试了有无自定义项目。我需要帮助让我的网格进入蓝图动画。在此处输入图像描述

简而言之,如何让我在blender中制作的角色替换默认的角色蓝图。

0 投票
1 回答
322 浏览

blender - Collada 中的节点额外技术是什么?

我正在解析 1.4.1 Collada(从 Blender 导出),我注意到在library_visual_scenes部分下,一些节点有额外的 技术部分。

在网上看,并不清楚这些是用来做什么的,或者我如何使用它们。我想它们是用来改变骨头的……但我不确定。为什么甚至需要这个!?为什么它只是不烤入骨基质本身?

例子:

谢谢!

0 投票
2 回答
1502 浏览

merge - 不幸的是,我无法将两个骨架网格物体合并在一起

我有一个来自搅拌机的手枪模型,它由两部分组成:幻灯片和枪的其余部分,这样更容易为幻灯片制作动画。我将带有工作骨骼(幻灯片)的模型导出为 fbx,然后仅将一个静态网格导入虚幻引擎,得到 2 个静态网格,因为它是搅拌机文件中的 2 个对象。我能够合并静态网格的演员。但是,当我去导入骨架网格物体时,我得到了所有的骨架资源,并且网格物体看起来与静态网格物体相同,但是,当我尝试合并骨架网格物体时,它无法这样做,说“找到用于合并的网格组件不足”。我在互联网上搜索了所有内容,但没有找到任何有类似问题的人。

0 投票
1 回答
555 浏览

opengl - GPU 骨骼动画和法线。有没有快速的方法来获得转置(逆(m))?

为我的游戏编写硬件蒙皮,也需要为法线设置动画。从这篇文章中我了解到,通常要转换法线,你需要这样的东西:

我无法通过制服将第二组预先计算的转置(逆(骨骼))传递给着色器,因为我没有足够的制服。所以我必须在顶点着色器中计算这个 transpose(inverse(bone[i])) (一次又一次地为每一个数千个顶点计算),不是吗?有没有更快的方法来做到这一点?这个操作的一些廉价和肮脏的近似?

编辑:找到这个很酷的解决方案https://stackoverflow.com/a/46518010/9173149

0 投票
1 回答
1384 浏览

animation - 如何将 bvh 文件解析为用 OpenGL 制作的骨架模型?

我正在尝试将 bvh 数据解析为我已经使用 OpenGL 开发的骨架。关于数据解析,我对一件事感到好奇。

Bvh 数据有两部分,即 HIERARCHY 和 MOTION。HIERARCHY 指定树结构和 OFFSET 数据,用于推断父骨骼的长度。MOTION 指定根骨骼的位置和每个骨骼的关节配置。

我已经用 HIERARCHY 中提到的骨骼制作了我的模型。我也在 HIERARCHY 中提到的相同树结构下制作了我的模型。(当然骨骼之间的长度是我任意设置的,因为模型是在解析文件数据之前制作的。所以建模骨骼的长度实际上与OFFSET数据有点不同。)

由于我已经制作了我想要动画的模型,这是否意味着我可以忽略 HIERARCHY(=OFFSET) 部分,而只需读取 MOTION 数据部分以获得每个关节的关节配置?

我觉得这是一个非常明显的问题,但感觉有些不对劲,因为这意味着我可以忽略文件的前半部分(HIERARCHY),而只为它的后半部分制作一个解析器。

文件的前半部分是否有任何我可能遗漏的细节?

0 投票
1 回答
418 浏览

c++ - 如何减慢从 BVH 文件读取的 opengl 动画?

使用 GLFW3,我目前制作了一个 bvh 文件解析器,它读取文件并将其转换为我在 opengl 中制作的人体模型。但是,每当我启动它时,它的移动速度都非常快,以至于眼睛看不到动画。所以我想把动画速度调低一点。这是我的渲染循环

if 语句bvh.setMotionPerFrame(bvh.root, 0)中的函数是动画读取文件中每帧数据的关节配置的地方,并相应地设置每个关节的旋转矩阵和平移矩阵。(moveFlag并且resetMatrices是分别按下空格键和 r 按钮时设置的标志)

由于在每个渲染循环中读取每帧的通道数据是不可更改的,因此我想提出一种可以降低渲染循环速度本身的方法。有什么建议么?

0 投票
0 回答
200 浏览

3d - 球窝关节的雅可比矩阵?

我正在尝试将其中一种 IK 方法应用到我在 OpenGL 中制作的人体骨骼上,该方法使用雅可比矩阵的伪逆矩阵。我一直在使用以下链接, https://www.math.ucsd.edu/~sbuss/ResearchWeb/ikmethods/iksurvey.pdf

我了解到雅可比矩阵条目的计算非常简单(链接的第 5 页),使用等式

在此处输入图像描述

但是,这个方程只适用于有一个自由度,旋转轴为 v_j 的情况。对于像球窝关节这样的3个自由度的情况,如何设置雅可比矩阵的条目?

任何帮助,将不胜感激!

0 投票
1 回答
71 浏览

inverse-kinematics - IK 的雅可比矩阵的两个伪逆矩阵之间的区别?

嗨,我正在尝试在我的骨架系统中实现 IK,并且正在在线阅读一些文章,其中一种方法是使用雅可比矩阵的伪逆矩阵。但是,我已经看到了伪逆的 2 种形式,我想知道这两种表示的区别是什么。

第一种形式是 J+ = ((Jt*J).inverse()) * Jt

第二种形式是 J+ = Jt * ((J*Jt).inverse())

老实说,我什至不确定他们是如何得到第二种形式的,我目前只能推导出第一种形式。

任何帮助,将不胜感激!

0 投票
1 回答
653 浏览

c++ - 雅可比矩阵的 5 DOF 逆运动学

我正在尝试将 IK 应用于我的人体骨骼的手臂,肩部位置固定,只有手臂在移动。

手臂的FK是这样的

这是我的 IK 解算器功能

我认为问题出在setOrientation(Q_desired);功能上。Q_desired = Q_desired + deltaQ更新每个循环中的自由度角度,因此我相应地更新每个关节的旋转矩阵。这是setOrientation(Q_desired)功能。

我很好奇是否应该在那些旋转轴上应用角度旋转(应该是全局轴,而不是局部轴?)我没有发布 getJacobian() 方法,因为我认为它是正确的,但如果这段代码没有缺陷。任何帮助,将不胜感激。提前致谢!


编辑 这就是我获得手臂的雅可比矩阵的方式。请注意,只有肩部是球窝关节,其余只是基于局部 x 轴的旋转关节。

我对雅可比矩阵的每一列都使用了这个方程。轴应该在全局坐标中计算,所以这就是我在代码中所做的。

在此处输入图像描述

0 投票
1 回答
1164 浏览

opengl - 具有末端执行器方向的反向运动学?

我正在尝试实现逆运动学求解器,但这次即使使用末端执行器的方向。当末端执行器只需要该位置时,我成功了。

我了解到,在这种情况下,您可以像这样构造雅可比矩阵,其中 w_i 是全局空间中的第 i 个旋转轴,p_i 是从第 i 个轴到目标位置的向量。 在此处输入图像描述

问题是当我必须在下面的等式中计算 x_dot 时。

在此处输入图像描述

当 x_dot 只考虑位置并且没有方向时,这非常简单。但是现在当 x_dot 需要 6 个条目(位置、方向)时,我不知道应该为方向部分做什么。我一直在使用欧拉角来表示我的程序中的方向。

我现在的想法只是用目标的偏航、俯仰和滚动减去当前末端执行器的偏航、俯仰和滚动,然后将每个结果除以 100。但这似乎有点复杂。有没有更好的方法来解决这个问题?任何想法将不胜感激!