0

我已经使用 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/

(每次有人执行“运行”>“运行”应用程序时都会发生变化,因此此处列出的运行 url 毫无意义..)

4

3 回答 3

0

在您的函数 animate 中,您需要在调用 render() 之前添加它: requestAnimationFrame(animate); 目前,即使在对骨骼进行更改之前,您也正在重新运行函数 animate。所以很明显,什么都没有动。这都是关于代码的顺序。

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

于 2013-10-11T12:43:13.430 回答
0

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

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

也可以参考: COLLADA: Inverse bindpose in the wrong space?

于 2013-10-14T00:16:53.780 回答
0

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

于 2014-02-05T02:50:15.440 回答