0
我是Three.js的新手。 Raycaster工作找到導入的對象,但是當我創建一個自定義網格如下它不工作:Three.js Raycaster不與我的自定義網格相交
var geom = new THREE.Geometry();
var v1 = new THREE.Vector3(0,0,0);
var v2 = new THREE.Vector3(0,500,0);
var v3 = new THREE.Vector3(-400,-500,50);
geom.vertices.push(v1);
geom.vertices.push(v2);
geom.vertices.push(v3);
geom.faces.push(new THREE.Face3(0, 1, 2));
geom.computeFaceNormals();
meshFrame = new THREE.Mesh(geom, new THREE.MeshNormalMaterial());
meshFrame.position.z = 20;
meshFrame.rotation.y = 0;
meshFrame.verticesNeedUpdate = true;
scene.add(meshFrame);
什麼是你認爲問題可能是什麼?光線在三角形中傳遞,但仍然交叉物體返回空。在這裏,我的光線投射代碼:
var ever = bver.clone();
ever.setComponent(2,ever.z+150);
var geometryF = new THREE.Geometry();
geometryF.vertices.push(
bver,
ever
);
var bray = new THREE.Ray(bver, new THREE.Vector3(0 ,0, 0));
bray.lookAt(ever);
var raycaster = new THREE.Raycaster();
raycaster.set(bray.origin, bray.direction);
var intersects = raycaster.intersectObjects([meshFrame]);
var x = [scene.getObjectByName("meshFrame")];
print(meshFrame.geometry.vertices);
console.log(intersects);
var lineF = new THREE.Line(geometryF, materialF);
scene.add(lineF);
非常感謝您的幫助。
在附註上,您應該更新**網格幾何體的頂點**,如下所示:'meshFrame.geometry.verticesNeedUpdate = true',甚至是'geom.verticesNeedUpdate = true'。 最好在完成後推新頂點/修改它們。 – Hesha
你能提供任何jsfiddle例子嗎? – prisoner849