0
我有一個管道系統。更精確地,我從這個代碼three.js - 獲取區域中的所有對象(網格)(3d立方體)
tube_color創建一個管 - 顯然,管的色彩,
spline_points - THREE.Vector3對象數量龐大,
段,radiusSegments只是數字
var material = new THREE.MeshLambertMaterial({ color: tube_color, shading: THREE.SmoothShading });
var spline = new THREE.SplineCurve3(spline_points);
var tube = new THREE.TubeGeometry(spline, segments, 10, radiusSegments, false, false);
var tubeMesh = new THREE.Mesh(tube, material);
scene.add(tubeMesh);
此代碼在空間中創建一個特定的網格對象。對於每個網格,我可以使用 myMesh .geometry.vertices來創建一個Vector3數組。
問題是:我有點在三維空間。圍繞這一點,我創建了Cube,其中確實與相交。例如,該多維數據集可以這樣
var cube = new THREE.CubeGeometry(xSize,ySize,zSize, 5, 5, 5);
var material = new THREE.MeshBasicMaterial({
color: 0xff0000,
opacity: 1,
wireframe: true,
transparent: false
});
var selectionMesh = new THREE.Mesh(cube, material);
scene.add(selectionMesh);
創建是否有可能至少發現由立方區域具有與交叉點的對象(網格)?我知道在場景對象我有所有的網格,我可以遍歷它們,得到頂點,如果至少有一個點在立方面積,用條件迭代它們。
但我相信
...我希望有一個方法/算法
/魔術
更簡單,然後這...
如果您有很多要點,八叉樹可能會有所幫助:http://threejs.org/examples/webgl_octree.html。 – WestLangley
好的,謝謝你的想法,我會在即將到來的一週檢查這個。 –
@WestLangley,非常感謝!它的工作幾乎完美!對不起,延遲 - 我正在嘗試不同的方法來解決這個問題。你能幫我用八叉樹: 'meshesSearch = octree.search(rayCaster.ray.origin,radiusSphere,true,rayCaster.ray.direction);' 並且它向我展示了例如2個對象(網格) 但'intersectionCode = rayCaster.intersectOctreeObjects(meshesSearch);' 有時(我猜是隨機的)顯示1個交點,有時爲0.但是至少應該有1個交點...
我正在使用從頂點添加節點 –