2017-08-21 42 views
2

我試圖將所有加載了obj文件的網格物體移離彼此,以便用戶可以看到所有網格物體。將網格從中心點分離或移動

我試圖模仿下面的例子

Demo

轉到上的UI托盤圖標爆炸和移動滑塊的鏈接點擊。

我做了這麼遠 我訪問模型 的所有網格這樣我就可以將它們應用的任何功能。 到目前爲止,我已經穿過他們,並給他們隨機位置矢量。

它工作正常,整個模型爆炸使每個網格單獨可見。

的問題

通過給他們顯然移動到任意地方任意位置矢量。我想要像共享鏈接一樣移動它們。任何幫助,將不勝感激。 我是新來的這個真棒threejs,我真的很想了解更多。 由於提前

編輯 示例代碼

function getRandomArbitrary(min, max) { 
    return Math.random() * (max - min) + min; 
} 
for(var i = 0; i < mainStand.children.length; i++) 
{ 
    pos1 = getRandomArbitrary(1 , 2); 
    pos2 = getRandomArbitrary(1 , 2); 
    pos3 = getRandomArbitrary(1 , 2); 
    mainStand.children[i].position.set(pos1 , pos2 , pos3); 
} 

哪裏mainStand是加載OBJ型號

+0

你能告訴我們一些代碼嗎? –

+0

@NathanP。編輯了這個問題。這工作正常。該模型爆炸但不像演示中那麼酷。我不想動畫或任何東西,但每個網格都應該移動它所面對的方向。就是這樣 –

+0

我不明白問題在哪裏?你需要數學表達式嗎?你有沒有嘗試用'1'逐步增加'x','y','z'來看看會發生什麼? –

回答

1

你想要做的是將每個網格從中心位置。這是通過計算網格位置和中心之間的向量來完成的,然後沿着這個方向移動網格:

var center = new THREE.Vector3(0, 0, 0); 
var distanceToMove = 0.1; 

for (var i = 0; i < mainStand.children.length; i++) { 
    var meshPosition = mainStand.children[i].position; 

    var direction = meshPosition.clone().sub(center).normalize(); 

    var moveThisFar = direction.clone().multiplyScalar(distanceToMove); 

    mainStand.children[i].position.add(moveThisFar); 
} 
+0

區別是不確定的!你能重新檢查你的代碼嗎? explosionDirection也未定義 –

+0

我現在修復了代碼。這應該工作@UzumakiNaruto –

+0

沒有它什麼都不做。返回矢量(0,0,0)。 你能否再次檢查你的代碼請 –

相關問題