Saya ingin benda-benda bergerak di antara dua simulasi fisika melalui "jendela" dan bertabrakan dengan yang dari kedua simulasi seandainya mereka memotong bidang jendela.
Sistem koordinat simulasi tidak memiliki asal yang sama dan mungkin memiliki orientasi yang berbeda. Membungkus simulasi untuk dirinya sendiri tidak perlu, tetapi akan menjadi nilai tambah.
Bagaimana cara menghubungkan sistem secara efisien tanpa mengkloning objek individual?
Edit:
Perhitungan harus seakurat mungkin, sehingga objek tidak macet jika mereka melintasi jendela secara bersamaan dari sisi yang berlawanan.
physics
collision-detection
Tamschi
sumber
sumber
Jawaban:
Ada proyek keren ini bernama Pseudoform, yang sebelumnya dikenal sebagai 'Portalized', yang menangani simulasi fisika menggunakan portal dengan cara groove:
Pseudoform
Coba lihat!
Terutama video - itu sangat keren.
Ini open source, jadi Anda bisa melihat bagaimana mereka melakukannya.
Saya yakin itulah yang Anda inginkan. :)
sumber
Oke - Saya tidak tahu apakah ini akan berhasil.
Berdasarkan info di atas saya akan meletakkan pemicu di 'windows' sehingga saya bisa mendeteksi ketika suatu objek keluar dari dunia. Raih vektor kecepatan saat ini pada saat tabrakan. Hitung timestep kiri berdasarkan di mana ia mengenai pelatuk dan di mana akhirnya bingkai ini (di luar dunia, dunia Anda akan memerlukan perbatasan virtual untuk memungkinkan ini). Pada titik ini Anda tahu kecepatan dan waktu yang tersisa, sehingga Anda dapat memposisikannya di perbatasan dunia yang akan dimasuki, dan memproyeksikan ulang kecepatannya. Namun ini akan membutuhkan dua pembaruan fisika dalam satu bingkai, dan akan ada batasan dari satu objek pergi dari a ke b sementara yang lain pergi dari b ke posisi yang sama - tidak akan ada tabrakan terdeteksi sama sekali.
Agak samar,
sumber
Saya membaca beberapa info tentang simulasi fisika dan menemukan solusi yang memungkinkan. Ia bekerja dengan memecah setiap fisika-langkah menjadi tiga fase:
1. Pra-Langkah:
Setiap langkah fisika, sebuah jendela menciptakan empat transformasi, dua untuk setiap sisi koneksi:
(Jendela statis hanya perlu melakukan ini sekali.)
Selain itu, objek dalam setiap sistem koordinat dibagi menjadi tiga kelompok:
Pengelompokan Fisika http://content.wuala.com/contents/Tamschi/Stack%20Exchange/WindowGrouping.png
Objek di depan jendela (hijau).
Suatu objek juga dihitung terhadap grup ini jika ia memotong bidang jendela atau kemungkinan melintasinya dari belakang jendela (tidak ditampilkan).
Objek yang memotong jendela atau mungkin memotongnya dalam langkah fisika ini (oranye).
Objek di belakang jendela (biru). Jika suatu benda terbang ke arah sisi belakang jendela, itu masih ditandai sebagai anggota kelompok tiga.
Pengelompokan dapat disederhanakan jika jendela berada di perbatasan simulasi.
2. Langkah Utama:
Fisika sebagian besar dihitung seperti biasa, dengan beberapa pengecualian:
Objek dari kelompok kedua tidak pernah bertabrakan dengan yang dari kelompok ketiga dan sebaliknya.
Transformasi input jendela digunakan pada objek dari kelompok kedua dan hasilnya dievaluasi terhadap objek depan dan berpotongan dari sistem tujuan. Gaya yang dihasilkan ditransformasikan menggunakan transformasi keluaran dan diterapkan ke objek asli.
(Jika objek terkena selama perhitungan, itu harus dikelompokkan ulang!)
3. Pasca Langkah:
Jika suatu objek dari grup kedua telah melewati jendela, ia dipindahkan ke sistem tujuan menggunakan transformasi input.
Pikiran Tambahan:
Jika transformasi dipertahankan setelah menghitung fisika, mereka dapat digunakan untuk mempercepat rendering dan untuk perhitungan AI lebih mudah. Pengelompokan dapat digunakan untuk menghapus clip-pesawat dari proses rendering.
Kelemahan dari solusi ini adalah bahwa windows harus ditambahkan langsung ke mesin fisika.
sumber