Saya perhatikan bahwa ketika saya menambahkan lebih banyak vertex ke baris Renderer Line, garis itu berputar dan berhenti menjadi garis yang halus.
.GIF Di Sini: http://i.imgur.com/hRAhCXM.gif
Semua garis berada pada level z yang sama, bahkan jika saya menghapus materi, garis-garis itu masih tampak melintir.
Saya tidak tahu mengapa ini melakukan ini, atau bagaimana cara mengatasinya, ada saran? C #
Jawaban:
Masalahnya pada dasarnya adalah ini:
LineRenderer sedang mencoba untuk menghubungkan posisi titik merah. Ini menciptakan simpul hijau untuk membuat mesh. Jadi segmen garis atas tampak hebat. Tapi kemudian LineRenderer mencoba menjadi ekonomis, ia menggunakan kembali simpul dari ujung segmen satu baris di akhir segmen baris kedua. Ketika ada sudut yang tajam, Anda mendapatkan masalah yang Anda lihat. Segmen baris kedua terjepit di persimpangan karena 'tutup ujung' tidak tegak lurus dengan 'tutup ujung' lainnya.
Solusinya adalah membuat pembuat baris sendiri, dan tidak membuatnya jadi ekonomis. Anda dapat melakukan ini dengan menghasilkan mesh dinamis . Mesh akan terdiri dari serangkaian paha depan tipis. Untuk setiap segmen garis, Anda dapat menghitung empat sudut quad dengan menghitung normal garis dan lebar garis yang ditentukan:
Di sini,
a
,b
,c
dand
membuat empat sudut dari segmen garis tunggal, seperti titik-titik hijau pada gambar di atas. Verteks ini akan ditambahkan ke jala, dan Anda juga akan menambahkan indeks untuk membuat empat simpul menjadi dua segitiga (jadi, enam indeks akan ditambahkan, abc dan bdc).Ini jelas bisa menjadi agak rumit. Saya percaya alasan lain Unity menerapkan LineRenderer mereka dengan cara yang mereka lakukan adalah karena melakukannya dengan cara itu menghindari masalah lain, sudut. Saat Anda mulai menggambar setiap segmen garis, Anda akan mulai melihat di mana kedua segmen garis itu menyatu dan membentuk sambungan yang jelek. Ada beberapa cara untuk mengatasinya dengan menghitung normal bersama di antara kedua garis dan memperbarui simpulnya ke normal bersama, tetapi ini hanya menyelesaikan sebagian masalah, karena Anda masih dapat dengan mudah berakhir dengan garis terjepit. Solusi paling kuat adalah dengan menghasilkan simpul tambahan pada sambungan untuk bertindak sebagai sudut.
sumber
Saya memiliki masalah yang sama dan saya menyelesaikannya dengan menambahkan lebih banyak poin untuk memperhalus tepi itu bukan solusi yang elegan tetapi sederhana dan berfungsi. Setidaknya untuk saya. Saya menulis fungsi untuk melakukan ini:
sumber
Salah satu cara untuk mengatasi ini untuk garis buram adalah dengan membuat lingkaran di setiap sambungan. Lingkaran harus memiliki diameter yang sama dengan lebar garis. Ini membutuhkan beberapa simpul tambahan untuk ditampilkan, tetapi terlihat sangat bagus. Anda juga dapat menyingkirkan normals bersama antara sendi.
Ini masih mengharuskan Anda menulis kode rendering sendiri alih-alih menggunakan Unity Line Renderer.
Saya membuat aset yang melakukan ini di http://u3d.as/nFE
sumber
Cara saya menghindari ini adalah bahwa saya selalu mengatur posisi z ke 0 dalam metode LineRenderer.SetPosition (). Jadi alih-alih menulis
LineRenderer.SetPosition(i, myVector3);
saya menulis
LineRenderer.SetPosition(i, new Vector3(myVector3.x, myVector3.y, 0));
Tapi itu bukan solusi terbaik karena Anda masih akan mendapatkan garis aneh itu. Solusi terbaik yang dapat saya pikirkan adalah membuat garis terpisah. Itu bekerja dengan baik untuk saya. Semoga ini bisa membantu Anda.
sumber