Three.js: Memilih area

Dibuat pada 27 Apr 2012  ·  5Komentar  ·  Sumber: mrdoob/three.js

Hai, pertama-tama saya benar-benar minta maaf jika ini bukan tempat saya seharusnya mengajukan pertanyaan umum?

Apakah ada contoh beberapa objek 3D "area memilih"? Itu menyeret bingkai dengan mouse dan memilih semua objek di dalamnya?

Saya telah bermain-main dengan objek THREE.Ray dan metode intersect (s) tetapi pendek dari perulangan melalui dan menelusuri setiap coord XY untuk menemukan semua perpotongan Saya agak tersesat.

Saya telah melihat seluruh web dan melalui github dan stack overflow tetapi tidak ada bantuan yang saya temukan.
Setiap bantuan sangat dihargai.

Terima kasih sebelumnya
Julz

Question

Komentar yang paling membantu

Saya mengadaptasi contoh pengambilan three.js ke pemilihan area menggunakan subfrustum yang dibuat berdasarkan persegi panjang layar. Klik dan seret untuk memilih. Rasanya tidak seakurat memproyeksikan semua objek 3D ke ruang layar 2D dan kemudian berpotongan dengan persegi panjang layar , tetapi berfungsi dengan baik dan menurut saya ini lebih cepat.

Pertanyaan relevan di stack overflow:
THREE.js Bagaimana mendeteksi perpotongan bujur sangkar 2d dan objek 3d
THREE.js Bagaimana memilih semua objek di suatu area

Semua 5 komentar

Akan lebih baik bagi Anda untuk melacak objek Anda di tempat kejadian kemudian mengulang melalui setiap koordinat XY. Dalam hal ini Anda tidak akan dapat menggunakan THREE.Ray dan harus menerapkan logika khusus untuk mengetahui apakah suatu objek ada di dalam bingkai. Saya yakin pendekatan ini akan mempercepat kode Anda secara drastis.

Hmmm, ini masalah yang menarik.

Saya pikir persegi panjang di layar harus sesuai dengan beberapa subfrustum kamera. Jika Anda dapat membuat matriks untuk frustum ini maka Anda dapat mencoba melakukan pemeriksaan yang sama seperti yang kami lakukan untuk pemusnahan frustum.

Ya, itu masuk akal.
Saya tidak menyukai koordinat 3D atau matriks kompleks,
Jika saya mendefinisikan TIGA.Matrix4 dengan meneruskan simpul persegi panjang (seret mouse) dan titik jauh dekat ke metode Matrix4.makeFrustum.
Bisakah saya kemudian membuat TIGA.Frustum dengan melewatkan Matrix4 ke dalam metode Frustum.setFromMatrix?
Kemudian gunakan metode Frustum.contains untuk mendeteksi apakah ada objek di dalamnya?

Apakah itu terdengar seperti punya harapan untuk bekerja?

Apakah koordinat mouse berhubungan dengan koordinat dunia 3D? seperti apakah posisi mouse relatif terhadap kamera di dekat pesawat atau semacamnya?

Maaf jika saya hanya menjadi n00b saya hanya benar-benar membutuhkan jawaban untuk ini.

Anda perlu memproyeksikan koordinat mouse ke dunia 3D. Lihat contoh ini:
http://mrdoob.github.com/three.js/examples/webgl_interactive_cubes.html

Saya mengadaptasi contoh pengambilan three.js ke pemilihan area menggunakan subfrustum yang dibuat berdasarkan persegi panjang layar. Klik dan seret untuk memilih. Rasanya tidak seakurat memproyeksikan semua objek 3D ke ruang layar 2D dan kemudian berpotongan dengan persegi panjang layar , tetapi berfungsi dengan baik dan menurut saya ini lebih cepat.

Pertanyaan relevan di stack overflow:
THREE.js Bagaimana mendeteksi perpotongan bujur sangkar 2d dan objek 3d
THREE.js Bagaimana memilih semua objek di suatu area

Apakah halaman ini membantu?
0 / 5 - 0 peringkat