Ho alcuni oggetti aggiunti a Object3D (per il raggruppamento di elementi) e sto cercando di rilevare i clic su di esso. La mia scena ha una dimensione di 600x400
, la mia macchina fotografica è all'interno di una tre-oggetto e il mio codice di gestore di eventi si presenta come di seguito:Intersezione all'interno di 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);
[...]
}
In realtà io sto avvisando il conteggio degli oggetti intersecate. Ma rimane zero. Non è stato possibile trovare oggetti intersecati. Ho già giocato un po 'con i valori x, yez del mio vettore di proiezione - senza successo.
Ho aggiunto un esempio ridotto per dimostrare questo problema su jsfiddle. Forse qualcuno ha un suggerimento per me che cosa non va?
Ah bene - vi ringrazio molto! Ma ora rileva tutti e 3 i cubi come un unico oggetto. Ho anche provato ad usare una matrice di oggetti personalizzata e ho aggiunto i cubi - Ma il risultato è lo stesso. C'è un modo per rilevare ogni singolo cubo? –
Puoi fare un nuovo post e spiegarti il nuovo numero in maggiore dettaglio? – WestLangley
Ho trovato la soluzione: Tutti i MultiMaterialObjects avevano la stessa istanza di materiale, quindi una modifica del colore del materiale ha interessato tutti gli oggetti. Quindi ora è chiaro. Grazie mille! –