【发布时间】:2012-08-02 04:47:32
【问题描述】:
我的业余爱好是做一些极客动画,主要是在 Javascript(基于 DOM 和画布)方面,以及在 C# 和其他技术方面做过一些工作。然而,其中大部分都是基于精灵、边界框、简单的像素移动等——现在我对使用矢量图形和实现一个由物理力驱动的具有逼真的移动关节的角色感兴趣。我想在画布元素或 SVG 中添加一些东西。
这里有很多与逆运动学相关的问题,但大多数问题都比较低级,并且需要先了解矢量、力和工程术语。我真正欣赏的是一些关于如何使具有髋关节、膝关节、踝关节等基本火柴人的基本原理背后的基本原则的一些指示。
我经常使用 Knockout.js,并且一直想知道是否可以通过 Knockout 的计算函数来实现每个关节的定位,例如膝关节的位置是根据髋关节和踝关节的位置和力来计算的对它们进行操作。但我很难找到一个起点:我一直在我的房子周围慢动作走,就像一个疯子试图隔离人体的哪些部位实际上首先移动,以及每个部位如何对身体的运动做出反应其他。是否有一种通用的方法来说明人形图形在游戏和动画中的运动方式?
考虑到我习惯于使用像素坐标而不是矢量和力,我是否天真地试图孤立地解决这个问题?我会发现我还需要立即了解重心、动量和所有其他知识吗?
感谢任何帮助,包括新手教程的链接!
【问题讨论】:
-
如果您想深入了解逆运动学算法,我建议您从 FABRIK 开始——它是实现和直观理解的最直观、最简单的 IK 形式。然后你可以按照自己的方式升级到 CCD 等等。
-
从您的问题来看,听起来您最好从对正向运动学的基本了解开始。它所涉及的只是一个基本的养育方式——比如如果父母移动 X 10 个单位,那么孩子应该跟着它移动。如果它旋转 90 度,孩子也应该沿着父母的枢轴旋转 90 度。它归结为级联变换,这就是矩阵和线性代数甚至四元数发挥作用的地方,但你可以不使用它们,特别是如果你只是在没有万向节锁定等问题的 2D 环境中工作。
标签: javascript math animation game-physics inverse-kinematics