Jestem nowy w THREE.js.Uzyskaj współrzędną 3D klikniętego punktu myszy trzema .js
Próbuję uzyskać współrzędne 3D punktu kliknięcia myszką na obiekcie (nie proste obiekty: Pole, Kula, ...) w obszarze Canvas.
W szczegółach pracuję z przeglądarką obiektów 3D - mam kamerę (THREE.PerspectiveCamera), sterowanie myszką (obracanie, powiększanie, przesuwanie), dodawanie/usuwanie obiektów (mój własny obiekt, ładowany za pomocą programów ładujących dla TRZECHU. js) w scenie, ... I chcę dodać funkcję, która pobiera współrzędne 3D dla klikniętego punktu w 3D.
Dokładnie, chcę współrzędne punktu końcowego ray - Początki z kliknięciem myszy na camera_near_window a kończąc na punkcie obiektu, mam kliknął ..
Próbowałem wiele sposobów aby to zrobić:
Getting coordinates of point on z=0 plane - to działa dobrze, ale to jest na płaszczyźnie z = 0 i to nie jest to, że muszę, bo mam OrbitControls ..
THREE.js example - clickable objects - Używa CanvasRenderer (nie WebGLRenderer) i działa dla niewielkich obiektów (ale działa dla mojego projektu): przeglądarka zawiesza się, gdy ładuję wiele obiektów (CanvasRenderer potrzebuje 5x więcej pamięci niż WebGLRenderer).
"How to get object in WebGL 3d space from a mouse click coordinate" - Próbowałem ten jeden też, ale nic nie znalazłem
raycaster.intersectObjects
,intersects
była pusta tablica (może to działa tylko dla prostych obiektów, takich jak pole, kula, ..).
Czy ktoś może pokazać mi kod demonstracyjny, który otrzymuje współrzędne punktu 3D dla klikniętego punktu kliknięcia obiektu w 3D, proszę ..?
patrz [to Answer] (http://stackoverflow.com/a/18553739/1461008), jak używać 'Raycaster'. W twoim przypadku prawdopodobnie chcesz ustawić "rekursywnyFlag" na true: 'raycaster.intersectObjects (objects, true);' – WestLangley
O, tego właśnie szukałem. 'raycaster.intersectObjects (objects, true)' dostałem mi tablicę i pierwszy rekord miał parametr punktowy, który potrzebowałem, dzięki .. – GuRAm
Użyj wzorca w odpowiedzi, z którą łączyłem. Nie klikaj nowych raycaster za każdym kliknięciem. – WestLangley