Di Blender, saya telah membuat bola dengan tekstur panorama di bagian dalam. Saya juga secara manual membuat jaring bidang (melengkung agar sesuai dengan ukuran bola) yang berada di dinding bagian dalam di mana saya dapat menggambar tekstur yang berbeda.
Ini bagus, tapi saya benar-benar ingin mengurangi tenaga manual, dan melakukan beberapa pekerjaan ini dalam sebuah skrip - seperti memiliki variabel untuk gambar panorama, dan koordinat area dalam foto yang ingin saya ganti dengan yang baru jala.
Bagian tersulit dari melakukan ini adalah menciptakan mesh melengkung dalam kode yang dapat duduk di dinding bagian dalam bola.
Adakah yang bisa mengarahkan saya ke arah yang benar?
unity
mesh
dynamic-mesh
user5025
sumber
sumber
Jawaban:
Apa yang ingin Anda capai tampaknya sangat terkait dengan ini:
Analogi koordinat bola dalam dimensi-n
dalam kasus Anda dalam 2 dimensi maka Anda hanya menggunakan rumus ini untuk memetakan simpul persegi panjang yang Anda miliki (mari kita berharap itu dibagi) di bola Anda (jangan lupa untuk mengalikan dengan setengahDiameter di suatu tempat. Hanya matematikawan yang hidup di unit bola semua lainnya orang baik menggunakan diameter ...)
EDIT: Karena semua ini agak kabur saya memberikan beberapa wawasan lagi Apa yang Anda butuhkan dari rumus ini untuk digunakan:
θ dan φ menjadi koordinat bola yang Anda cari (Latitude dan Longitude) untuk mendapatkannya, Anda mengambil koordinat x / y dari titik-titik pada bagian gambar panorama seperti itu:
maka Anda akan mendapatkan quad Anda dipetakan pada sebuah bola berdasarkan dari posisi xy-nya pada sistem koordinat 2D yang diterjemahkan ke posisi 3D pada ruang tersebut sesuai dengan pemetaan bola.
EDIT: Baru saja mendapat ide, untuk melangkah lebih jauh Anda bisa merangkum koordinat pesawat di bola menggunakan nilai UV seperti:
Di sana Anda dapat mengatur posisi quad pada perangkat lunak 3D favorit Anda (atau bahkan dengan kode melalui kesatuan) hanya dengan menetapkan nilai UV (jika dari 0 hingga 1 pada kedua sumbu maka quad akan dililitkan di sekitar bola)
PERINGATAN: Menggunakan UV akan mengharuskan Anda melakukan konversi Radian ke Derajat. (karena UV adalah 0 hingga 1)
sumber
Jawaban Géry Arduino di atas menunjuk saya ke arah yang benar, tetapi saya ingin menambahkan beberapa hal di sini.
1) Mengikuti tidak akan bekerja dalam kesatuan karena perbedaan sistem koordinat
ubah ini menjadi
2) Saya tidak jelas pada kisaran input nilai panjang dan lat yang ditentukan dalam tanda tangan metode
Nilai Bujur dan Lintang harus dalam radian. Kisaran mereka adalah sebagai berikut
sumber