0
我有一個THREE.Line
對象,用於編排自定義網格。現在我遇到的問題是當用戶鼠標移過這個網格時使用光線播送到intersectObjects
,intercept
只有當用戶鼠標直接「穿過任何網格線」時纔會成功。IntersectObjects - THREE.Line - Three.js
所以最終什麼,我正在試圖做到的是,如何能在字裏行間的空間填充具有「隱形」的臉,甚至形狀,這樣當用戶鼠標移過這個網格,我可以觸發一個動作。這裏是目前我在做什麼:
var response = this.buildGridGeometry(modelStep,modelSize,gridtype);
var geometry = response['geometry'];
geometry.computeBoundingBox();
// # Setup the material
var material = new THREE.LineBasicMaterial({ color: 0x000000, opacity: 0.2 });
// # Draw each individual line
var line = new THREE.Line(geometry, material, THREE.LinePieces);
有什麼建議嗎?
兩個建議。如何將raycasters屬性linePrecision設置爲更高的值。該文檔將此屬性定義爲_ raycaster在相交Line對象時的精度因子._。也許它可以填充線條之間的區域。第二個建議是將PlaneGeometry與網格進行縮放並對齊(給它一個相同的變換矩陣),然後使它成爲'.visible = false;'。當飛機相交時,你知道線條也是如此。 – micnil
Micnil我喜歡改變平面幾何的想法。在你看來,最好的選擇是什麼? –
如果你的網格線是矩形的,我想平面幾何體會更好,但它看起來更「L」形。這意味着你可能需要兩架飛機,使其成爲一個「哈克」解決方案。首先嚐試設置更高的linePrecision,看看是否適合您的需求。高線條精度的一個後果可能是網格會在邊緣外相交。網格也會相交,就好像它有一點高度一樣。希望你明白我的意思,否則,試試吧。 – micnil