2016-03-22 68 views
0

嗨,我創建從vertice到vertice的光線,看看他們是否截取平面幾何。如果他們這樣做,我會採取攔截點並將其推送到頂點數組。但是,我不確定是否正確地實施了raycaster,因爲此代碼片段沒有按照我的意圖執行。任何幫助將不勝感激!THREEjs Raycaster攔截對象問題

var vertlen = geometry.vertices.length; 
    var vertarray = geometry.vertices; 
    var planey = plane.vertices[0].y; 
    var final = new THREE.Geometry(); 
    var intersects; 
    var intersectpoint; 

    var raycaster = new THREE.Raycaster(); 
    for (var i = 0; i < vertlen; i++){ 
    for (var k = 0; k < vertlen; k++){ 
     raycaster.set(vertarray[i], vertarray[k]); 
     intersects = raycaster.intersectObject(plane); 
     inpoint = intersects.point; 
     final.vertices.push(inpoint); 
    } 
    } 

回答

0

「i」和「k」總是相同。所以你正在測試一個點是否與飛機相交。嘗試這樣的:

var k; 
for (var i = 0; i < vertlen; i++){ 
    k = i + 1; 
    if (k === vertlen) 
    { 
     k = 0; 
    } 
    raycaster.set(vertarray[i], vertarray[k]); 
    intersects = raycaster.intersectObject(plane); 
    inpoint = intersects.point; 
    final.vertices.push(inpoint);  
    } 

... 2天后:我寫的是錯的。我和k並不總是一樣的。查看此帖的評論。

+0

嗨,甚至試圖我的jsfiddle函數似乎不工作。一旦我調用這個函數,它只會返回給我一個黑屏。我不確定我的代碼中有什麼問題。你介意看一下嗎? http://jsfiddle.net/9LyryfLL/ –

+0

嗨,我寫的只有一半。我改變了你的代碼。 http://jsfiddle.net/9LryryLL/7/首先,我將材料添加到您的對象。黑屏表示存在代碼錯誤。您需要在控制檯中查看JavaScript不喜歡的內容。你正在創造出許多面孔。你必須重新考慮你真正需要測試的射線。 – Benedikt