2013-02-17 52 views
4

我基本上提出了同樣的問題 - https://github.com/mrdoob/three.js/issues/1883 - 使用三個j我可以導入基本關鍵幀動畫的collada場景,並且很容易地回放這些動畫,但是想從一個場景複製動畫數據反對另一個。三js - 你可以克隆從collada文件加載的動畫嗎?

這可能嗎?

在運行時,我注意到collada.animations對象包含一個--collada.animations [n] .node - 它似乎是一個THREEJS.Mesh對象,我一直試圖在運行時替換(to徒勞無功)。我也注意到,collada.animations [N] .hierarchy [n]的對象,也包含了像這樣節點屬性:

cameras: Array[0] 
channels: Array[9] 
controllers: Array[0] 
endTime: 2.5 
geometries: Array[1] 
id: "name_of_exported_object" 
keys: Array[2] 
matrix: THREE.Matrix4 
name: "name_of_exported_object" 
nodes: Array[0] 
sid: null 
sids: Array[9] 
startTime: 0 
transforms: Array[5] 
type: "NODE" 

這個對象出現,通過。名稱和.ID,被捆綁到我用3D軟件包(Blender)創建的「name_of_exported_object」...我不太清楚這個節點對象是用於什麼的。如何充分地改變collada.animation [n]對象以在動態創建的場景對象上使用相同的動畫?

+0

您是否找到了解決辦法?我面臨同樣的問題 – ThisIsSparta 2013-12-12 10:03:08

+0

不,不是我想要的。我有一個非常簡單的用例,我可以通過使用Tween JS(https://github.com/sole/tween.js/)來解決這個問題。不太清楚你的想法,但如果我想嘗試複製一個複雜的動畫,我首先看看這個例子 - http://threejs.org/examples/#webgl_shadowmap – Charlie 2013-12-13 12:52:38

+0

好吧,謝謝你的鏈接I將嘗試使其適應collada模型並查看它是否有效。 – ThisIsSparta 2013-12-13 13:37:21

回答

0

因爲這個問題是幾年前寫的,所以three.js動畫系統已經被重寫了。您不再需要「克隆」動畫,只需使用不同的混合器將它們應用於其他對象即可。例如:

var clip; // some THREE.AnimationClip instance. 

var mixer1 = new THREE.AnimationMixer(object1); 
var mixer2 = new THREE.AnimationMixer(object2); 

var action1 = mixer1.clipAction(clip); 
var action2 = mixer2.clipAction(clip); 

action1.play(); 
action2.play(); 

這是不是唯一的COLLADA,它適用於FBX,glTF,那three.js所支持動畫任何其他格式。