Опитвам се да покажа името на задържан обект в 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