我正在Three.js中加载一个机构(例如机器人手臂)的模型。遗憾的是,我使用的模型没有骨架,但我有关节的位置、轴等。为了使用像3-IK这样的逆运动求解器,我想从这些参数创建一个骨架。由于我想使用许多不同的模型,所以我希望不是手工创建骨架,而是在代码中创建骨架。
我已经尝试了一个多星期,以创造一个有效的骨骼结构,从这些价值,反映模型,但没有成功。例如,如果我用关节的位置创建一个骨骼链,我就会得到一个非常长的骨骼,与我使用的位置完全不匹配。
let boneParent;
let bonepos = [];
let bones = [];
model.traverse(child => {
我想做以下几件事:
只有x,y,z的旋转(没有变换)。
每个旋转轴以上分别有一个最小的和最大的旋转角度与一个当前的角度。
这将是对每一个骨骼的上述人物的骨架,注意重量将适用与往常一样,当做动画,但将没有动画数据。
骨骼到旋转信息,应用变化,信息回到骨骼,应用变化,信息回到骨骼……
Q: SetBones和GetBones,我如何获得和设置骨数据?
//imports...
public class BoneControllerClass : MonoBehaviour {
//used to modify the bone data struct for each bone (edi
如果我想要获得骨骼头部的世界位置,它将是: let worldpos_head_x = skinnedMesh.skeleton.bones[111].matrixWorld.elements[12]
let worldpos_head_y = skinnedMesh.skeleton.bones[111].matrixWorld.elements[13]
let worldpos_head_z = skinnedMesh.skeleton.bones[111].matrixWorld.elements[14] 为了得到这块骨头的尾端,我只需要得到孩子的头部位置。但是我怎么才能得到没有任何子
我得到了骨骼的层次结构。每个骨骼可能有父元素和子元素。每个骨骼都有自己的局部模型矩阵和世界模型矩阵。我想将骨骼转换到鼠标所在的位置。我正在使用glm库。 我是这样做的: // boneWorldOrigin is the position of the bone in the world
// boneOrigin is the position of the bone relative to it's parent
glm::vec2 diff = (m_MousePosition - boneWorldOrigin) + boneOrigin;
glm::mat4 transla