Mam niektóre obiekty dodane do Object3D (do grupowania elementów) i próbuję wykryć kliknięcia na nim. Moja scena ma rozmiar 600x400
, mój aparat jest w trzech obiektów i mój kod obsługi zdarzeń wygląda następująco:Skrzyżowanie w Object3D
function onDocumentMouseDown(event) {
event.preventDefault();
var mouse = {};
mouse.x = (event.clientX/600) * 2 - 1;
mouse.y = - (event.clientY/400) * 2 + 1;
var vector = new THREE.Vector3(mouse.x, mouse.y, 1);
projector.unprojectVector(vector, three.camera);
var ray = new THREE.Ray(three.camera.position, vector.subSelf(three.camera.position).normalize());
var intersects = ray.intersectObjects(group.children);
alert(intersects.length);
[...]
}
Właściwie jestem ostrzeganie rachubę przecinają obiektów. Ale pozostaje zero. Nie mógł znaleźć żadnych przecinanych obiektów. Zagrałem już trochę z wartościami x, y i z mojego wektora projekcyjnego - bez powodzenia.
Dodałem próbkę z pominięciem, aby zademonstrować ten problem na stronie jsfiddle. Może ktoś ma dla mnie krótką wskazówkę, co jest z tym nie tak?
Ah dobrze - dziękuję bardzo! Ale teraz wykrywa wszystkie 3 kostki jako jeden obiekt. Próbowałem również użyć niestandardowej tablicy obiektów i dodałem kostki - ale wynik jest taki sam. Czy istnieje sposób na wykrycie każdej pojedynczej kostki? –
Czy możesz utworzyć nowy post i objaśnić bardziej szczegółowo nowy numer? – WestLangley
Znalazłem rozwiązanie: Wszystkie obiekty MultiMaterialObject miały tę samą instancję materiału, więc zmiana koloru materiału wpłynęła na wszystkie obiekty. Teraz jest jasne. Dziękuję Ci bardzo! –