2013-10-11 76 views
0

我已经使用colladaloader加载了Biped角色网格。如何在three.js colladaloader对象中定位骨骼(骨骼动画)

我可以通过改变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/

(改变每次有人这样做具有运行URL没有点这里列出..一个运行>运行的应用程序)

回答

0

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

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

也提到: COLLADA: Inverse bind pose in the wrong space?

0

在你的动画功能,你需要调用render之前添加此(): requestAnimationFrame(动画) ; 目前,即使在对骨骼进行更改之前,您仍然重新运行该功能的动画。所以显然没有任何动作。 这是关于代码的顺序。

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

+0

多数民众赞成不是和可悲的没有控制台错误。 – PeanutPower

+0

做了一些阅读,它并不总是必须是儿童[0]。如果你在console.log中打印你的模型(dae),也许你可以找出解决的办法。你会从那里得到很多信息 – MariusJP

0

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