2013-05-28 29 views
1

爲什麼下面ArrowHelper的尖端不直接撞擊目標球體?它只是錯過了一點。以下方向計算不夠精確?爲什麼ArrowHelper沒有達到目標?

var geometry = new THREE.SphereGeometry(1, 16, 16); 
var material = new THREE.MeshNormalMaterial(); 
var mesh = new THREE.Mesh(geometry, material); 
mesh.type = "node"; 
mesh.position.set(30, -87, -11); 
scene.add(mesh); 

geometry = new THREE.SphereGeometry(1, 16, 16); 
material = new THREE.MeshNormalMaterial(); 
mesh = new THREE.Mesh(geometry, material); 
mesh.type = "node"; 
mesh.position.set(28, 44, -14); 
scene.add(mesh); 

var sourcePos = new THREE.Vector3(30, -87, -11); 
var targetPos = new THREE.Vector3(28, 44, -14); 
var direction = new THREE.Vector3().subVectors(targetPos, sourcePos); 
var arrow = new THREE.ArrowHelper(direction.clone().normalize(), sourcePos, direction.length(), 0xff0000); 
scene.add(arrow); 

這是該question直接跟進的問題(我把它打開,因爲有可能更好的算法,而ArrowHelper,但似乎不準確也由這裏所描述的ArrowHelper問題引起的)。

回答

1

這是three.js r.58中處理箭頭指向大致「直線向上」或「直下」的情況下的精確問題。

我想你會發現它在其他情況下工作正常。

three.js r.58

+0

感謝您的提示。即將推出的版本會有解決方案嗎?這已經在HEAD中解決了嗎?我有一個公開的問題要跟進嗎?舊版本如何? – Zardoz

+0

作爲解決方法,您可以在'ArrowHelper.js'中將更多的9添加到0.999常數中。我們將在下一個版本中修復它。 – WestLangley

+0

非常感謝。你的解決方法工作:-)感謝所有的辛勤工作! – Zardoz

相關問題