问题标签 [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 投票
0 回答
128 浏览

opengl - 雅可比逆运动学给出正确但尴尬的结果?

我正在尝试使用雅可比矩阵及其对我的人体骨骼模型的伪逆来解决 IK 问题,但我得到了非常尴尬的结果。但问题是,答案是对的!(即,足够接近目标位置和方向)例如,这是一个尴尬的结果。

在此处输入图像描述

这是我将其应用到他骨盆的整个上部时的 IK 结果。骨盆是这里的固定点。他将上半身向后靠在不需要的地方。

然而,这是当我固定他的肩膀位置时,只需将 IK 应用到他的手臂到相同的目标位置。 在此处输入图像描述

如您所见,您不需要将脊椎一直向后倾斜!

这是 Jacobian-IK 方法的已知问题吗?如果是这样,有什么方法可以让这更像人类吗?


JIC,我这样计算我的雅可比矩阵 在此处输入图像描述

0 投票
1 回答
877 浏览

android - 在 android 上渲染骨骼动画 FBX 3d 模型

我正在开发一个需要在应用程序上加载动画 fbx 模型的 android 本机项目,有没有办法实现这一点。

0 投票
1 回答
109 浏览

c++ - MD5动画和游戏循环

我已经使用骨骼动画实现了加载 MD5 模型,并且效果很好。现在我正在尝试增强游戏循环以流畅地播放所有内容并正确计时。我读到了不同的游戏循环,然后实现了我读到的最好的一个,它具有以下场景:

我实现了 CPU 骨骼动画,因此每帧更新所有顶点和法线。该updateGame(dt)方法根据骨架动画更新网格顶点,它应该花费一些时间并将其添加到更新顶点的动画时间。我的游戏循环实现中有一些问题,导致不同设备上的更新率不同。我在 Android 上使用 OpenGL 和 C++。

0 投票
2 回答
656 浏览

opengl - OpenGL - 骨骼动画 - 骨骼围绕原点旋转

我正在关注 Youtube ( https://www.youtube.com/watch?v=f3Cr8Yx3GGA ) 上关于骨骼动画的系列教程,但遇到了一个问题 - 一切正常,除非我旋转其中一个骨骼(或“关节”),它们围绕场景原点旋转,这意味着它们不会停留在原地而是被平移。下图说明了问题: 对象除了被旋转外还被移动

我怎样才能使翻译不会发生?我现在已经多次阅读教程系列,但无法确定哪个步骤可以防止这种情况发生。

代码很大,分成十几个文件,我不知道哪个部分可能导致问题,所以我认为在这里发布它没有太大意义(它应该与代码中的代码相似)教程,即使我在他使用 Java 时使用 C++。教​​程代码可以在这里找到:https ://github.com/TheThinMatrix/OpenGL-Animation )。如果您甚至可以就骨骼动画中通常如何解决此问题提供一般性建议,那么我希望至少可以确定错误的部分并尝试从那里移开。

0 投票
0 回答
346 浏览

unity3d - 如何使用具有固定肘部旋转的 2D IK 瞄准枪?

我正在使用带有 2 根骨头的 2D 骨骼角色 ArmUpper 和 ArmLower(手是固定的)做一个“瞄准鼠标”,我想我需要某种 IK 解算器。以下是参数:

  • ArmUpper:在肩部固定位置,但可以自由旋转
  • ArmLower:有一个固定的旋转(取决于武器类型),它的位置是通过旋转 ArmUpper 来设置的,它最终会在绿色圆圈中的某个位置

如何计算 ArmUpper 的旋转,使 ArmLower 的两端都指向目标标线?

我在 C# 中使用 Unity 进行此操作,但任何伪代码或公式都会有所帮助。

谢谢!

在此处输入图像描述

0 投票
1 回答
70 浏览

c++ - 如何在 CGAL 中迭代中观骨架?

我正在尝试使用 Meso_skeleton 类从 CGAL 的骨架化工具中获取中间骨架。
问题是我想迭代它的顶点和面,但我不明白迭代器是什么类,所以我得到编译错误(关键字 auto 似乎在迭代器中不起作用,给出编译错误因为编译器不能干扰类型)。

此外,CGAL 文档似乎缺少有关如何使用 Meso_skeleton 类的信息,所以如果有人知道我可以找到其他信息的地方会很棒。

我试图运行的代码是这样的:

此代码的目的是从 CGAL 的骨架化工具 (mean_curvature_flow_skeleton) 的中间步骤导出 meso_skeleton 的顶点和面。让我知道是否可以编写一个更好的解决方案(也许有一些我忽略的 CGAL 功能)。

谢谢

0 投票
0 回答
427 浏览

opengl - 计算骨骼动画的最终骨骼变换

我有一个简单的模型,我在搅拌机中制作了一个简单的骨架结构。这是它的外观:

图像

这是搅拌机中的层次结构:

图像

如您所见,它有两根骨头:一根在矩形框的中间(“骨头”),它是完全静止的。另一个从中间点到顶部的骨骼(“Bone.001”)旋转。

我使用 AssImpNet 导入了网格,并从动画节点通道中提取了旋转、缩放和位置键。当我将这些变换应用于网格时,我得到了这个结果(按骨骼重量着色):

图像

动作/动画似乎可以正确播放,所以我相信这部分可以正常工作。现在这是我的理解开始崩溃的地方,但我相信我缺少的关键部分是计算“反向绑定姿势”(我已经看到了一些名称),并将其应用于我的骨骼转换也输入我的着色器。但到目前为止,我还不能准确地找到我需要从 AssImp 的格式中提取的内容,并将它们相乘以获得正确的最终转换。我只找到了关于遍历节点树和从每个父节点“撤消”转换或其他内容的模糊解释。

这是我尝试过的,似乎不起作用:

然后按顺序将它们相乘。

我尝试实现这一点(现在对索引进行硬编码只是为了让事情正常运行),请注意它使用的是 C#/AssImpNet,因此命名约定与 C++/AssImp 有点不同:

GetTransformedFrame 返回一个 Matrix4,它结合了与当前时间相对应的帧的缩放、旋转和位置键,并且它自己给出了您可以在 gif 中看到的结果,其中框为红色/绿色。

所有这一切给我的是一个明显不正确的结果: 图像

所以我的问题是:我对如何计算最终骨骼转换的理解是否错误?如果是这样,正确的做法是什么?

0 投票
0 回答
301 浏览

assimp - Assimp - 如何访问与网格分开的电枢?

我正在使用 Assimp 导入动画 FBX 文件。我的问题是场景中的骨架独立于共享相同关节数据的 11 个单独的网格存在。到目前为止,我一直在遍历网格时检索骨骼数据,但在这种情况下,这不会发现完整的骨架。我能找到的所有学习材料都是这样做的。

这是文件中数据的概述。霰弹枪网格没有蒙皮到骨骼层次,而是具有被解释为骨骼的动画变换,因此它们不与手臂骨架共享任何骨骼。

如何使用 Assimp 访问完整的骨架来导入模型?

在此处输入图像描述

0 投票
1 回答
91 浏览

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

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

动画将是

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

关键帧_0

关键帧_1

关键帧_2

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

但是我在某个地方犯了一个错误,所以我得到了错误的动画。

动画得到

我哪里错了?

PS:应用是在PSP平台下写的,但是意思和到处做的没什么区别。您可以在此处找到完整的简单示例。

0 投票
3 回答
4562 浏览

unity3d - Unity 2D 游戏开发 - 无需 Photoshop 即可将 PSD 转换为 PSB

所以 Unity 中有一个功能支持将 PSB 文件导入为 2d 字符:

https://docs.unity3d.com/Packages/com.unity.2d.psdimporter@1.2/manual/index.html

(尽管它只适用于 PSB,但出于某种原因它被称为 PSD 导入器)

所以我在 Krita 中制作了一个简单的火柴人用于我的新游戏,然后我注意到 Krita 不允许我导出为 PSB!不仅如此,即使是 GIMP 也不支持 PSB!

我没有 Photoshop,那么有没有办法在没有 Photoshop 的情况下将我必须的 PSD 转换为 PSB?