问题标签 [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 回答
46 浏览

opengl - 改变节点坐标系,不携带改变

我正在从多种格式加载 3D 模型,每种格式都可能有自己的坐标系。

转换它们以使它们都在同一个坐标系中很容易。

问题是当我尝试将一个模型附加到另一个模型时,两者的格式相同。因为它们已经在同一个坐标系中,所以将它们更改为任何共享坐标系的转换将两次应用于子级。

我可以为每种格式制作特定的代码,并且每次我想将某些东西附加到另一种东西时,检查格式,然后 ughhhh。

我现在的节点结构很通用,不知道这个问题有没有通用的解决方案。

0 投票
1 回答
582 浏览

java - OpenGL骨骼动画逻辑

我正在尝试在 Android 的 OpenGL ES2 中实现骨骼动画,我有一个使用 io_three 从 Blender 导出的 JSON 模型,我可以从这个文件中读取 Bones 数组,每个数组的位置为 3 个浮点数组,四元数旋转为 4 个浮点数组并缩放和一个整数,它是父级,我也有动画,它有层次列表,据我所知,它每帧处理每个骨骼矩阵,每个层次都有一个父级和键列表,每个键都具有与骨骼相同的组件,所以我阅读了很多教程并制作了多次尝试但不幸的是我没有成功,我需要简单解释一下逻辑。所以我有一个骨骼类,每个类都有向量,我可以得到每个骨骼的相对矩阵,然后将它与父绝对矩阵相乘,得到骨骼的绝对矩阵,然后对其求逆得到逆矩阵,我可以对每个键进行相同的计算,但我不能将它们绑定在一起,我需要了解骨骼和每一帧之间的关系。我的问题不在于代码,而在于逻辑。

0 投票
1 回答
20 浏览

nodes - 层次结构中存在的节点是否可以包含其自己的特定转换

假设我有一个节点层次结构,每个节点都有自己的局部变换,最终会传递给它的子节点。

有没有一种数学方法可以将一些变换应用于层次结构中的特定节点,而不应用于该节点的任何子节点?

0 投票
1 回答
2842 浏览

blender - Blender collada 导出多个动画

我想将具有多个动作的模型导出到 Collada 文件以在 openGL ES2 中使用它,collada 导出器仅导出选定或活动的动作,经过多次研究,我没有找到解决方案,但得到了在同一动画中进行动作的想法在不同的框架中并通过代码将它们分开,所以我向对象添加了自定义属性以定义每个动作的开始和结束帧,但是导出器也不会导出这些属性,我找到了一个补丁,它可以让导出器添加自定义属性,但我可以不是从源代码构建的,因为我没有 Visual C++ 和 python 方面的经验,所以我很欣赏任何实现在一个 dae 文件中导出多个动画的解决方案。

0 投票
1 回答
104 浏览

3d - 以少数变量描述的特定姿势渲染装配好的人体 3D 模型的脚本

我有一个 .fbx 或 .zbrush 格式的操纵人体 3D 模型。我想编写一个程序来读取模型并以某个姿势显示它(写入图像文件)。

我想通过指定几个变量(不超过数百个)来定义姿势,例如骨骼之间的角度。因此,程序获取模型和描述姿势的变量列表并返回图像。

有哪些工具(语言和库)可以做到这一点?

我知道 Unity 可以加载 .fbx,但我想知道它是否是解决我问题的首选工具。我不需要动态地为模型设置动画:只需一次调用程序 - 一个姿势。我所需要的只是高质量的图像,我的意思是高分辨率和自然的肢体弯曲,以及简单的脚本。

0 投票
1 回答
47 浏览

c++ - 在 3D 骨骼系统 DirectX 之间转换

我正在尝试在两种不同的骨架格式之间进行转换。我有一个分层的骨架。

现在在一种格式中,给定节点的矩阵由 (DirectX) 计算(递归地,从底部节点到顶部,其中 matScale/matRotate/matTranslationFromParent 是特定节点 SRT):

appliedMatrices = appliedMatrices * matScale * matRotate * matTranslationFromParent;

但是我需要将它转换为使用的格式(递归地,从底部节点到顶部,其中translationIn 是(ParentPos - EndPartPos)的矢量减法,而translation out 是(EndPartPos - ParentPos),而matScale / matRotate / matTranslationFromParent 就是那个特定的节点 SRT):

appliedMatrices = appliedMatrices * matScale * matTranslationOut * matRotate * matTranslationIn * matTranslationFromParent;

如何从第一种格式转换为第二种骨架格式(并返回)?

0 投票
0 回答
119 浏览

python - 骨骼动画传输 - 方向

我正在尝试在 Maya 中制作一个 pymel 脚本,我想将动画从一个装备转移到另一个装备。现在脚本正在将关键帧从原始装备转移到另一个,但它忽略了关节方向。我有数学公式,但我不确定如何在 Pymel 中使用它们,因为它不是我的主要语言。

公式:“s”代表装备源,“t”代表目标装备。

到目前为止,我有孤立的旋转,但我不确定如何获得 worldSpaceRotation 和 translateRotation。

如果有人可以帮助或给我一些指示,将不胜感激!如果需要,我可以发送我当前的代码。

0 投票
1 回答
282 浏览

quaternions - 双四元数和任意比例

我有使用矩阵运行许多骨骼动画的代码,我想将其转换为对偶四元数,以获得更好的性能。

我只有一个问题 - 我找不到关于如何处理任意比例的好资源。

我不太明白骨骼层次结构中的尺度是如何携带的。

假设对于骨架中的每个节点,我都有它的局部对偶四元数(旋转 + 平移)和一个 3D 比例矢量,我该如何处理它们来合并比例?

0 投票
1 回答
788 浏览

animation - 双三次关键帧插值

我正在尝试实现这个非常有趣的关于动画的技术会议中提出的内容 http://www.gdcvault.com/play/1020583/Animation-Bootcamp-An-Indie-Approach

作为一个快速的总结,它是关于制作一个基于姿势的动画系统。我们不是播放动画,而是播放固定姿势并在不同姿势之间插值以创建运动。

我通过 lerping 模型空间平移和 slerping 两个姿势之间的模型空间旋转成功地在不同姿势之间进行线性插值。

然而,在 7:30,建议使用双三次插值进行插值,以确保位置和速度的连续性。

我花了一些时间思考和研究它,但我不确定它的含义。

谁能就这个问题给我一些指导

0 投票
1 回答
188 浏览

opencv - 类似 kinect 分层旋转的实现

我会得到一些关于人类 20 个骨骼的 3d 位置(在固定世界坐标系中)的数据流。

我想使用骨骼数据来驱动具有固定骨骼的人体模型,例如演示视频

在 Kinect SDK v1.8 中,我可以通过NUI_SKELETON_BONE_ORIENTATION.hierarchicalRotation.

我想实现一些这样的功能。但是 Kinect 的 SDK 不是开源的。

我发现该函数xnGetSkeletonJointOrientation可以像在OpenNI中那样获得骨架的旋转。但是我还没有找到关于那个的实现函数。我不知道我错在哪里。

任何想法表示赞赏。谢谢!

编辑

我发现了一个类似的问题

这是他最终使用的代码。

但我对此仍有一些疑问。

变量quatOrigin.toChangeoriginalRelativePointMap代表什么?

而且在我看来,Point3d point函数的参数Controller::calRelativeToParent应该是一个欧拉角的向量。这样,Controller::calRelativeToParent在主程序中如何调用API。因为我们只知道根的旋转。