В настоящее время я пытаюсь транслировать специально созданную сетку в three.js. Хотя для некоторых импортированных сеток лучевое вещание работает как прелесть, с моей пользовательской сеткой оно, похоже, совсем не работает.
После длительного изучения я обнаружил некоторые типичные проблемы для пользовательской вещательной сети и попытался ее исправить. их (updateMatrixWorld, двухсторонний материал, ... - см. код ниже).
Я использую следующую функцию для своей радиопередачи:
mouse.x = ((e.clientX - container.offsetLeft) / container.clientWidth) * 2 - 1;
mouse.y = -((e.clientY - container.offsetTop) / container.clientHeight) * 2 + 1;
rayCaster.setFromCamera(mouse, camera);
var intersect = rayCaster.intersectObjects(scene.getObjectByName('loaded_object').children, true); // working
mesh_1.geometry.computeFaceNormals();
mesh_1.updateMatrixWorld();
var intersect_custom = rayCaster.intersectObjects([mesh_1], true); // not working
Пока первое пересечение работает какОжидается, что мое собственное пересечение как-то не работает вообще - оно всегда возвращает пустой массив.
Правильно ли я полагаю, что проблема заключается в моей пользовательской сетке?
Итак, вот как я создал свой собственный меш:
material_k1.side = THREE.DoubleSide;
var singleGeometry_1 = new THREE.Geometry();
var mesh_1 = new THREE.Mesh(singleGeometry_1, material_k1);
meshes[i].updateMatrix();
singleGeometry_1.merge(meshes[i].geometry, meshes[i].matrix);
mesh_1.updateMatrix();
singleGeometry_1.verticesNeedUpdate = true;
singleGeometry_1.elementsNeedUpdate = true;
mesh_1 = new THREE.Mesh(singleGeometry_1, material_k1);
В чем еще может быть проблема? Мне действительно интересно, особенно потому, что кажется, что он не работает с моей собственной сеткой.