我想繪製從一個網格對象到另一個網格對象的箭頭。但是,如果我直接使用自己的位置並在箭頭助手中作爲參數發送,則箭頭將進入對象內部,因爲對象的位置意味着它的中心。Isuue繪製從一個網格對象到另一個網格對象的表面的箭頭
所以我創建了對象,我正在使用raycaster。
var ray = new THREE.Raycaster(sourcePos, direction.clone().normalize());
所以這裏的原點是源對象的位置和方向是源到目標方向。 然後我正在碰撞結果時,我相交與目標即
var collisionResults = ray.intersectObject(target);
然後我計算在該射線相交的第一次目標的距離:
var length=collisionResults[0].distance;
然後,創建使用以下參數中的箭頭:
var arrow = new THREE.ArrowHelper(direction.clone().normalize(), sourcePos, length, 0xaa0000);
scene.add(arrow);
箭頭越來越創建爲預期:
helper_methods.draw_arrow(mesh1,mesh2);
helper_methods.draw_arrow(mesh1,mesh2);
但是:
helper_methods.draw_arrow(mesh2,mesh3);
它說: 「collisionResults [0]」 爲空。我無法弄清楚原因。任何幫助表示讚賞。 以下是Iam使用的代碼片段。我剛纔也提到了輔助方法:
var mesh1 = helper_methods.create_mesh();
mesh1.position.set(100,0,0);
scene.add(mesh1);
var mesh2 = helper_methods.create_mesh();
mesh2.position.set(300,0,0);
scene.add(mesh2);
var mesh3 = helper_methods.create_mesh();
mesh3.position.set(100,200,0);
scene.add(mesh3);
helper_methods.draw_arrow(mesh1,mesh2);
helper_methods.draw_arrow(mesh1,mesh2);
helper_methods.draw_arrow(mesh2,mesh3);
和輔助方法我使用:
create_mesh: function(){
var darkMaterial = new THREE.MeshBasicMaterial({ color: 0xffffcc });
var geometry=new THREE.CylinderGeometry(30, 30, 50,100,1);
var mesh = new THREE.Mesh(geometry, darkMaterial);
return mesh;
},
draw_arrow: function(source,target){
var sourcePos = new THREE.Vector3(source.position.x, source.position.y, source.position.z);
var targetPos = new THREE.Vector3(target.position.x, target.position.y, target.position.z);
var direction = new THREE.Vector3().subVectors(targetPos, sourcePos);
var ray = new THREE.Raycaster(sourcePos, direction.clone().normalize());
var collisionResults = ray.intersectObject(target);
var length=collisionResults[0].distance;
var arrow = new THREE.ArrowHelper(direction.clone().normalize(), sourcePos, length, 0xaa0000);
scene.add(arrow);
return arrow;
我已經使用了邊界框,並計算了它的最近頂點。它的工作原理!謝謝:) –
我正在使用object1和object2之間的箭頭助手繪製一個箭頭。我添加了聽衆,這樣當物體移動時,箭頭的長度也會根據物體之間的距離和位置的變化而變化。但是這裏的問題是箭頭中的錐體也隨着箭頭的長度而增加。是否有辦法獲得固定的錐體大小而不考慮箭頭的大小? –
@RevanthAlampally您應該將其作爲一個新問題發佈。評論不是一個很好的答案。 – GraphicsMuncher