如何在3.js colladaloader对象中定位骨骼(骨骼动画)

时间:2013-10-11 05:06:07

标签: three.js collada

我使用colladaloader加载了一个Biped角色网格。

我可以通过改变dae对象的位置和旋转来移动网格。

dae.rotation.y+=0.01;
dae.updateMatrix();

正常运作

但我似乎无法移动个别骨骼....任何想法如何去做?

dae.children[0].rotation.z += 0.1;
dae.children[0].quaternion._x += 0.1;
dae.children[0].position.x += 0.1;
dae.children[0].matrixAutoUpdate = true;
dae.children[0].matrixWorldNeedsUpdate = true;
dae.children[0].updateMatrix();

不起作用

整个项目:

https://codenvy.com/ide/tmp-9q4s6enl9imzzs

运行链接:(可能会随着人们更新/重新运行项目而改变)

http://app-slm37q4a3tzdf3c7.apprun4.codenvycorp.com/

(每当有人执行Run> Run应用程序时都会更改,所以没有必要在此处列出运行网址。)

3 个答案:

答案 0 :(得分:0)

在你的函数动画中,你需要在调用render()之前添加它: requestAnimationFrame(动画); 目前,即使在对骨骼进行更改之前,您还要重新运行该功能。显然没有什么是动人的。 这都是关于代码的顺序。

如果那不起作用,你可以告诉我你的控制台是否有错误吗?

答案 1 :(得分:0)

这并不像我希望的那么简单。存在由加载器创建的对象层次结构,但是移动它们不会影响几何体的顶点。

必须实现的过程称为“蒙皮方程”,以使用加权骨骼方向以及其他矩阵来转换顶点几何体。

还可以参考: COLLADA: Inverse bind pose in the wrong space?

答案 2 :(得分:0)

我想让这个答案对原始问题发表评论,因为它建议消除Codenvy应用程序每次点击更改网址的问题。粘贴到响应中的URL是临时工作空间URL。因此,一旦项目闲置10分钟,工作空间将被销毁。如果发布此项目的用户可以将他们的项目复制到他们的帐户工作区,那么有一个名为“Share-> Factory”的选项,它将生成一个a)永久性的URL,以及b)将创建一个完全克隆的工作区每个点击它的人。如果您向我们发送文件或共享您的帐户,我们可以创建可以添加到原始问题的工厂,以便所有观看者都可以看到功能齐全的克隆。