我需要使用我自己的gemetry,因爲默認的多維數據集看起來不像應該以線框模式(現在它由三角形而不是正方形組成)。Three.js自定義幾何raycaster捕獲錯誤的對象
所以我做了我自己的幾何圖形,它看起來沒問題,但raycaster對於我自己的對象不如使用內置立方體那樣好。
var cube = new THREE.Line(getCube(5,5, 5), new THREE.LineDashedMaterial({ color: 0x000000,dashSize: 1, gapSize: 0.1, linewidth: 2 }),THREE.LinePieces);
其中getCube()返回
var geometry = new THREE.Geometry()
見例如:在頂部 http://jsfiddle.net/QHjSM/12/
6色填充框是defalt THREE.CubeGeometry盒,並與raycaster選擇他們的作品完美,6線框是我的自定義幾何。
發佈: 如果您嘗試單擊框外,但非常靠近它,它會捕獲框,如果您在框中單擊(在它的中間)它也不會捕獲它。
但最令人討厭的是,如果你在一個盒子裏麪點擊,但是接近另一個盒子,有時候它卻沒有發現錯誤。
我不確定能不能做得更好,嘗試了所有的geometry.compute ...方法,但仍然沒有效果。
更多的是解決辦法,而不是解決真正的問題,但它的工作原理,所以如果我找不到一些直接的解決方案,我會使用你的。謝謝 –
事實上,這是一種解決方法。 CanvasRenderer自己讓我有點吃驚。我假設你在材質中使用了'wireframe:true',但令我驚訝的是不是這種情況 –
啊我發現了,這裏是從r59到r60的移除線程,其中四邊形被移除。你會發現這個解決方案建議是我們在這裏偶然發現的:https://github.com/mrdoob/three.js/issues/3788 –