问题标签 [skeletal-mesh]

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 投票
2 回答
2002 浏览

graphics - 导出骨骼搅拌机

我有一个用 Blender 创建的简单骨架网格物体,我正在尝试导出它以便在 OpenGL 中渲染它。

我的问题是:为了分析网格(尤其是骨架/骨骼)并在 C/C++ 程序中渲染它,最简单的导出格式是什么?

我设法(没有太多问题)在网格中渲染对象,所以这不是问题。我搜索了很多,我尝试了不同的格式,但实际上我都面临着困难。使用起来会很棒,.obj但根据我的研究,它不支持骨骼。

因此,我应该使用什么格式(轻松)解析骨骼?

0 投票
0 回答
649 浏览

c++ - DirectX - 骨骼动画方法不正确

我正在尝试在 DirectX 9 中编写骨骼动画程序,我使用 LoadMeshFromHierarchy 函数加载动画网格......现在我想绕过 animController 以便我可以通过读取动画网格中的关键帧来决定动画文件(例如 tiny.x)并随意循环遍历这些键。

这是我到目前为止所拥有的......此时我已经成功解析了 .x 文件并存储了每个动画,以及类(动画)中唯一动画集的动画键。当我运行这个更新函数时,动画网格被毁容,我不知道为什么......我认为这是我为每一帧更新变换矩阵的过程......这是我的代码:

我的方法正确吗?我为每一帧做的第一件事是将变换矩阵重置为单位,然后我为每个键(平移、缩放、旋转和矩阵)计算一个插值并将其应用于变换矩阵......然后我更新帧矩阵,然后是蒙皮网格。

有任何想法吗?

0 投票
1 回答
1817 浏览

c++ - 骨骼动画

我是骨骼动画术语的新手,我已经读过,要使用骨骼动画网格,我必须使用骨骼层次结构,我在场景图中制作每个骨骼节点,然后使网格变形我必须在插值之前获得骨骼的逆绝对矩阵(我相信这就是他们所说的姿势)乘以骨骼的插值绝对矩阵以获得过渡矩阵和变形网格我必须将顶点乘以过渡矩阵乘以权重,并将所有这些结果与使同一顶点变形的任何其他骨骼相加。

为了更具体地获得每块骨头的绝对值,我这样做了

现在我得到了这个 absMatrix 矩阵的逆矩阵,在任何只改变 relativeMatrix 一次的插值之前,做顶点变形就是这个函数

现在这对我不起作用,因为每个顶点都围绕网格轴的中心旋转,而不是围绕使顶点变形的骨骼的父骨骼,考虑到 transition = InverAbs *absoulteMatrix 会让我得到数量,我认为这是合乎逻辑的旋转骨骼由于插值而获得增益,因此假设它旋转 20 度,顶点将从顶点原点旋转 20 度,所以我想我缺少一些东西来使顶点围绕正在变形它们的骨骼的父级旋转,请帮我。

所以这就是我做插值的方式,不是对绝对矩阵而是对relativeMatrix,我更新绝对值的代码就是上面的那个。

是的,我这样做了,并将骨骼乘以它的逆绝对值,然后乘以绝对矩阵,它工作得很好,但是很多乘法正在发生,比如。

0 投票
0 回答
292 浏览

animation - 如何将 bvh 动画应用于 Cal3D 模型?

我想在Cal3D模型上使用bvh ̉ 动画。乍一看似乎应该很简单:bvh 文件指定了每个关节层次结构的旋转,而 Ca3D 模型包含关节层次结构的旋转。问题是我想使用由其他程序创建的 bvh 文件,而不仅仅是我创建的那些,并且在 bvh 文件的 HIERARCHY 部分中使用的中性姿势没有标准。有时它或多或少是一个标准的 T 姿势,但有时它完全不像一个真正的人类可以采取的姿势。

我可以计算 bvh 数据所暗示的关节位置,并找到将模型的关节移动到相对于彼此的位置的最简单的旋转。但是似乎我会丢弃数据,因为没有唯一的旋转可以将矢量移动到给定方向。

0 投票
3 回答
5408 浏览

animation - Maya to three.js 与动画

我在 Maya 中有一个装配好的(骨架和软绑定)模型。该模型是一个无缝的低多边形,具有单个 jpeg 纹理映射。骨骼有简单的动画。(联合旋转)。我需要让它与 ThreeJs (webGL) 一起工作。

我是否尝试以某种方式导出带有 Morph Targets 的 OBJ?我可以做 OBJ,但我如何获得变形目标?我正在使用的开发人员可以在 webGL 中读取 Maya 的烘焙动画文件(.MC 或 .XML)吗?我要导出 Collada DAE 吗?

任何可以引导我们朝着正确方向前进的帮助将不胜感激。

谢谢

0 投票
2 回答
5574 浏览

opengl - 为什么上传到着色器时需要将四元数转换为 4x4 矩阵?

我已经阅读了几篇关于 OpenGL 中骨骼动画的教程,它们似乎都一心一意地使用四元数进行旋转,使用 3d 矢量进行平移,而不是矩阵。

但是当他们进入顶点蒙皮过程时,他们将所有四元数和 3d 向量组合成一个 4x4 矩阵,然后上传矩阵以在着色器中进行其余的计算。4x4 矩阵有 16 个元素,而四元数 + 3d 向量只有 7 个。那么为什么我们要在上传之前将它们转换为 4x4 矩阵呢?

0 投票
2 回答
10620 浏览

opengl - OpenGL:骨骼动画,为什么在使用 GPU 时需要反向绑定姿势?

我实现了一个带有软件皮肤的 MD5 Loader。md5 中的绑定姿势是最终的、绝对位置和旋转,您只需要计算与关节相关的权重。

我试图实现 GPU 蒙皮,但我被困在了一个点上。由于这些坐标是最终的,为什么我不能将我的 3d 向量和四元数转换为矩阵并将其上传到着色器?正如我在这里读到的:http: //3dgep.com/ ?p=1356 ,我需要将我的骨架与绑定姿势的倒数相乘。但我不明白这部分,因为我一直认为我唯一需要做的就是将最终矩阵上传到 GPU 并在那里计算其余的(权重总和等)

你能解释一下反向绑定姿势的行为吗?

0 投票
1 回答
605 浏览

r - 在 R 中寻找骨架或多边形偏移算法

我在这个 SO question An algorithm for inflating/deflating (offset, buffering) polygons中找到了一些有用的链接。抱歉 - 没有网络访问所以sos不起作用,那么有人在 R 中实现了骨架算法吗?

编辑:我想在 StackOverflow 链接(上图)中生成缩小的多边形;或见http://en.wikipedia.org/wiki/Straight_skeleton

0 投票
0 回答
2453 浏览

animation - WebGL / GPU 蒙皮 / 骨骼动画

我非常接近在 WebGL 中工作的骨骼动画。

背景

我有一个免费获得的带有僵尸行走动画的模型。我将整个内容下载到一个 Collada 文件中。我编写了一个解析器来获取所有顶点、法线、关节影响指数/权重和关节矩阵。我可以通过这样做来渲染角色的绑定姿势

其中关节的世界矩阵是关节的 bind_pose_matrix 乘以其父级的世界矩阵。我通过执行以下操作得到了 inverse_bind_pose_matrix:

所以真的,以绑定姿势渲染角色只是将身份矩阵传递给着色器,所以也许我根本没有做这部分。但是,我计算的反向绑定姿势矩阵与 Collada 文件提供的几乎相同,所以我很确定这些是好的。

这是我的模型处于绑定姿势:

绑定姿势

问题

一旦我继续尝试使用动画的单帧计算蒙皮矩阵(我随机选择了第 10 帧),它仍然像一个人,但肯定有问题。

我使用的是我最初计算的相同的 inverse_bind_pose_matrix。我正在使用一个新的世界矩阵,而是通过将每个关节的关键帧/动画矩阵乘以其父级的新世界矩阵来计算。

我没有在我的整个代码库的任何地方进行任何转置,尽管我认为我已经尝试过转置几乎任何矩阵组合都无济于事。

这是我的模型在他的动画第 10 帧姿势中:

动画姿势

一些相关代码

顶点着色器:

你可以在GitHub 上完整地看到我的解析器(如果你真的想......) ,你可以在这里看到模型。

0 投票
1 回答
1534 浏览

opengl - 骨骼动画,变换乘法

我已经实现了一个骨骼动画系统,我似乎遗漏了最后一个细节以使其正常工作。

我制作了一个动画,其中只有一部分角色有骨骼。在这张图片中,火柴人有一只挥动的手臂,但与火柴人的其余部分相比,手臂挥动的位置错误。(你几乎看不到他的腿之间)

动画火柴人

我将尝试概述我的矩阵计算的基础知识,看看我是否做错了什么。

计算骨骼特定的绝对和相对动画矩阵(基于我的关键帧矩阵数据):

我发送到 GPU 的 skinningMatrix。这将打印以下内容:

调试输出

其中 offsetMatrix 是在绑定姿势中从网格空间变换到骨骼空间的变换。

然后在我的着色器中:

关于我的计算可能有什么问题的任何提示?