2013-12-12 88 views
1

我在嘗試更新arrowHelper。我嘗試過操縱箭頭對象的行中的頂點,設置所有的dynamic = true等等,但我似乎可以做到的唯一方法是刪除舊線並繪製一個新線。有沒有辦法更新arrowHelper?Three.js - 我如何更新arrowHelper?

+0

是'ArrowHelper.js'沒有幫助?同時檢查開發分支64dev的更新版本。 – WestLangley

+0

不是特別的,我不知道如何找到這個開發分支 - 我假設你在討論three.js github回購,但我沒有在分支列表中看到。 – meetar

+0

https://github.com/mrdoob/three.js/tree/dev/src/extras/helpers – WestLangley

回答

3

所以你不能以通常的方式更新一個arrowHelper本身,通過改變你創建對象的值來更新某些東西。

但是:您可以移動箭頭的位置,這會移動其明顯的起點,並且您可以給它一個新的方向和長度,從而移動其明顯的終點。

這裏是如何做到這一點:

// new arrowHelper 
var sourcePos = new THREE.Vector3(0, 0, 0); 
var targetPos = new THREE.Vector3(0, 50, 0); 
var direction = new THREE.Vector3().sub(targetPos, sourcePos); 
var arrow = new THREE.ArrowHelper(direction.clone().normalize(), sourcePos, direction.length(), 0x00ff00); 
scene.add(arrow); 

// update the arrow 
var newSourcePos = new THREE.Vector3(10, 10, 10); 
var newTargetPos = new THREE.Vector3(60, 10, 10); 
arrow.position.set(newSourcePos); 
direction = new THREE.Vector3().sub(newTargetPos, newSourcePos); 
arrow.setDirection(direction.normalize()); 
arrow.setLength(direction.length()); 
+0

看來,ThreeJs API改變了,它必須是'arrow.position.copy(newSourcePos);'現在代替'arrow.position.set(...)'' –