2016-04-18 20 views
0

我已經將模型導入到Three.js場景中。我能夠移動和旋轉骨骼,但模型的幾何圖形不隨骨骼移動。導入的JSON幾何不隨骨骼移動

下面是我用導入JSON文件,並將其添加到場景中的代碼,

/*load JSON file*/ 
// instantiate a loader 
var loader = new THREE.JSONLoader(); 
loader.load('https://cdn.rawgit.com/wpdildine/wpdildine.github.com/master/models/cylinder.json', addModel); 

var helpset; 
var scaleVal = 3; 

function addModel(geometry, materials){ 

    materials.skinning = true; 

    var cs = scaleVal * Math.random(); 

    mesh = new THREE.SkinnedMesh(geometry, new THREE.MeshFaceMaterial(materials)); 

    scene.add(mesh); 
    helpset = new THREE.SkeletonHelper(mesh); 
    scene.add(helpset);  

} 

,我已經導入的JSON文件包含的權重,所以我不認爲我有將它們添加自己。這與將骨架綁定到網格有什麼關係?

這裏是我的代碼的鏈接 - https://jsfiddle.net/joeob61k/1/(使用腳本新鏈接,謝謝@Mr Polywhirl。)

正如你所看到的,「Bone_2」在GUI控件移動的骨頭之一,但不是目。

編輯:我試圖在render()函數中訪問網格的骨骼。我已經用下面的代碼行這樣做,

mesh.skeleton.bones[2].rotation = 0.1; 

我得到以下錯誤:「不能讀取屬性‘中未定義是網格變量’未定義(...)的」骨架。有沒有新的方式來訪問我需要使用的SkinnedMesh的骨骼?

+1

我添加缺少的腳本[您的jsfiddle(https://開頭的jsfiddle。淨/ joeob61k/1 /)如果有人想解決它。 –

+0

@ Mr.Polywhirl你會對如何解決這個問題有任何想法嗎?感謝您添加腳本! – skelto

回答

0

的問題是用線,

materials.skinning = true; 

它需要以下工作,

materials[0].skinning = true;