Я пытаюсь отобразить имя зависшего объекта в сцене WebGL на базе three.js. Я использую raycasting с классом Raycaster
, и это работает хорошо, мой объект меняет цвет, и я знаю его положение, но когда я пытаюсь получить доступ к userData
объекта, он отображает undefined
.
Является ли объект, возвращаемый функцией intersectObject()
, не копией исходного объекта? Мне интересно, если где-то в будущем он потеряет свои свойства.
function onMouseMove(e) {
var intersectedOne = false;
for (var i = 0, len = group.children.length; i < len; i++) {
setMaterial(group, material);
}
mouseVector.x = 2 * (e.clientX / window.innerWidth) - 1;
mouseVector.y = 1 - 2 * (e.clientY / window.innerHeight);
raycaster.setFromCamera(mouseVector, camera);
var intersects = raycaster.intersectObjects(group.children, true);
for (var i = 0; i < intersects.length; i++) {
var intersection = intersects[i];
var obj = intersection.object;
if (intersection != 0 && intersectedOne == false) {
intersectedOne = true;
obj.material = selectedMaterial;
text2.innerHTML = obj.userData.CADEIRA;
}
}
}
text2.innerHTML
показывает undefined
каждый раз, когда я навожу курсор на объект, в то время как он должен показывать имя объекта.
intersectObject
иintersectObjects
, являются ссылками — это один и тот же объект — так что вы, должно быть, делаете что-то не так, хотя не сразу понятно, что именно. Иintersection != 0
не имеет смысла, хотя это не должно вызывать проблемы. Можете ли вы предоставить jsfiddle, пожалуйста? - person Leeft   schedule 29.10.2015