2016-03-22 6 views
0

こんにちは、私は、頂点から頂点への光線を作成し、それらが平面ジオメトリを傍受するかどうかを見ています。彼らがそうするなら、私は傍受のポイントをとり、それを頂点の配列にプッシュします。しかし、このコードスニペットが私が意図したことをしていないので、レイキャスターを正しく実装しているかどうかはわかりません。どんな助けでも大歓迎です!THREEjs Raycaster interceptObject issues

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日後:私が書いたものは間違っています。 iとkは必ずしも同じではありません。この投稿へのコメントを見る

+0

こんにちは、私のjsfiddle関数が動作していないように見ても。この関数を呼び出すと、黒い画面しか返されません。私は自分のコードで何が間違っているのか分かりません。あなたは見てみましょうか? http://jsfiddle.net/9LnryfLL/ –

+0

こんにちは、私が書いたものは、半分のリジッドです。私はあなたのコードを変更しました。 http://jsfiddle.net/9LnryfLL/7/まずオブジェクトに資料を追加しました。黒い画面は、コードエラーがあることを示します。あなたは、javascriptが好きでないものを見るためにコンソールを見る必要があります。あなたは多くの顔に道を開いています。そして、実際にどの光線をテストする必要があるか再考する必要があります。 – Benedikt