Saya pikir kita dapat memecahkannya jika kita hanya memikirkannya.
Anda tentu ingin membuat wajah (segitiga) tempat kedua geometri berpotongan. Kemudian Anda pergi dengan tiga jerat: persimpangan Anda baru saja diisolasi, geometri 1, dan geometri 2.
Kemudian, hapus saja apa yang tidak Anda butuhkan!
- BooleanDifference: hapus bagian yang terisolasi dan geometri 2.
- BooleanIntersection: hapus geometri 1 dan 2, biarkan bagian yang terisolasi
- BooleanUnion: gabungkan geometri 1 dan 2 dan hapus bagian yang terisolasi (pastikan untuk menyatukan geometri 1 dan 2 menjadi geometri yang solid)
- BooleanSplit: Pisahkan geometri 1, geometri 2, dan duplikat bagian yang terisolasi (pasang satu ke geometri 1 dan yang lain ke geometri 2)
Saya pikir itu menutupinya, eh? Bagian yang sulit jelas akan membuat wajah persimpangan. Untuk itu, ulangi setiap wajah satu dan periksa apakah wajah itu adalah bagian dari yang lain; jika benar-benar di dalam, salin wajah sebagai bagian dari persimpangan persimpangan. Jika sebagian berada di dalam, maka Anda perlu membagi segitiga di sepanjang garis persimpangan; Saya pikir DirectX dan OpenGL keduanya akan memiliki fungsi pembantu untuk ini, atau itu hanya beberapa bidang matematika 3D (vektor). Saya belajar hal semacam itu dalam Kalkulus 3 (atau apakah itu 2?) Tetapi jika Anda tidak memiliki petunjuk, mungkin bertanya di math.stackexchange.com . Dan tentu saja jika wajahnya ada di luar, jangan lakukan apa-apa. Setelah Anda mengulangi semua wajah dari kedua jerat Anda akan ditinggalkan dengan persimpangan mesh.