2016-11-17 2 views
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); 

Большое спасибо за помощь.

+0

На стороне примечания вы должны обновить вершины ** геометрии ** сетки **, например: 'meshFrame.geometry.verticesNeedUpdate = true' или даже' geom.verticesNeedUpdate = true'. Предпочтительно сразу после того, как вы закончите толкать новые вершины/модифицировать их. – Hesha

+0

Вы могли бы предоставить любой пример jsfiddle? – prisoner849

ответ

0

Хорошо, я решил проблему. Видимо, ориентация лица была проблемой. Когда я его отменил, он начал работать.

Смежные вопросы