2013-10-11 153 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)將爲每個工作區創建一個完全克隆的工作區點擊它的人。如果您向我們發送文件或共享您的帳戶,我們可以創建可添加到原始問題的工廠,以便所有查看者都能看到完整功能的克隆。