Skip to content

Memberikan rambut yang dapat bergerak pada karakter hasil generasi ​

Oleh Oleg Sidorkin, CTO dan Salah Satu Pendiri Cinevva

Karakter hasil generasi dapat memiliki gaya rambut yang meyakinkan, tetapi tetap tidak mempunyai rambut yang dapat bergerak secara independen. Hasilnya mungkin berupa satu permukaan, kumpulan kartu tipis, atau bagian-bagian yang terpisah. Tidak satu pun representasi tersebut memberi tahu simulator di mana suatu helai dimulai, ke arah mana helai itu tumbuh, atau bagaimana helai tersebut seharusnya menekuk.

Eksperimen rambut kami sebelumnya dimulai dengan avatar yang telah diberi rig oleh seniman dan sebuah kuncir kuda pilihan. Kali ini kami memulai dengan mesh rambut yang dapat digunakan kembali dan karakter katak kami. Pertanyaannya lebih mendasar: dapatkah kami menyesuaikan gaya rambut, menelusuri kurva panduan yang berguna melaluinya, dan menjaga akarnya tetap melekat selama animasi?

Pada 46 gaya rambut, prototipe saat ini mengekstraksi 10.467 kandidat panduan dan menemukan koneksi kulit kepala untuk 10.346 di antaranya—98,84%. Itu adalah hasil keterikatan. Angka tersebut bukan tingkat keberhasilan 98,84% untuk gerakan rambut yang alami.

Coba mesh dan panduannya ​

Demo langsung dimuat. Pilih Gaya rambut, lalu gunakan Pemeriksaan rambut untuk beralih antara mesh asli, mesh beserta panduan, dan panduan saja. Seret pratinjau untuk mengorbit; periksa bagian belakang maupun depan. Pilih Animasi untuk melihat apakah keterikatan mengikuti karakter yang bergerak.

Kurva sian memiliki koneksi ke kulit kepala. Kurva oranye ditolak. “Tampilkan akar yang disarankan” memperlihatkan titik keterikatan yang diusulkan. Long01 merupakan contoh padat yang berguna; variasi kepang Prancis memperlihatkan tantangan dalam menggabungkan fragmen-fragmen terpisah. Unduh kurva panduan untuk memeriksa titik-titik dan metadata keterikatannya.

Open this demo in a full window ↗

Gaya rambut terurai yang memenuhi syarat kini menggunakan adaptor eksperimental ke pemecah rambut bersama dari artikel kami sebelumnya. Adaptor tersebut memilih hingga 24 rantai panduan, membuat joint, serta memberikan bobot skinning yang sama kepada mesh yang terlihat dan overlay panduan. Tudung rambut tetap disematkan; wilayah yang tidak didukung tetap terikat pada kepala. Gaya pendek tanpa panduan rambut terurai yang memenuhi syarat mempertahankan keterikatan kaku. Dua contoh kepang Prancis mempertahankan perlakuan rantai joint eksperimentalnya yang terpisah. Beralih tampilan pemeriksaan tidak menghentikan pemutaran.

Sesuaikan terlebih dahulu, lalu tetapkan keterikatan ​

Kami mengumpulkan 46 pilihan gaya rambut CC0 dari koleksi MakeHuman, variasi rambut gimbal, dan aset Quaternius. Setiap pilihan memiliki tautan sumber di demo; katalog aset dan inventaris lisensi mempertahankan informasi asal-usulnya. Ini adalah aset mesh yang dapat digunakan kembali, bukan pustaka helai dengan rig yang seragam.

Penempatan pertama jelas gagal: rambut berada di belakang kepala katak. Penskalaan berdasarkan bounding box telah menyelaraskan objek tanpa mengidentifikasi kulit kepala yang dimaksud. Proses penyesuaian kami kini memperkirakan bagian puncak sumber, menyelaraskannya dengan permukaan kepala target, dan menggeser rambut bagian atas yang bertumpang tindih ke arah luar mengikuti perkiraan selubung kepala.

Hal ini serupa dengan pemisahan yang kami gunakan dalam artikel pakaian: menempatkan aset, menyesuaikan bentuknya, mengikatnya ke rig, dan memberinya gerakan sekunder merupakan tugas yang berbeda. Akar rambut harus tetap berada di kulit kepala, sedangkan bagian panjangnya harus mempertahankan gaya rambut alih-alih jatuh menempel pada tubuh.

Katak ini sengaja dibuat menyulitkan: kepalanya lebar, matanya menonjol, dan proporsinya tidak menyerupai manusia. Masker kulit kepala bagian atas/belakang saat ini disimpulkan secara khusus untuk karakter ini. Ini bukan pendeteksi kulit kepala otomatis untuk model hasil generasi apa pun. Beberapa gaya masih menutupi wajah atau memiliki proporsi yang tidak sesuai.

Telusuri jalur melalui permukaan yang ada ​

Kami membangun graf konektivitas dari setiap mesh rambut. Vertex yang berimpit tetapi terpisah oleh seam UV disatukan untuk analisis ini; mesh sumber yang dirender tetap dipertahankan. Di dalam setiap komponen terhubung, kami mencari jalur permukaan dari kandidat akar awal menuju endpoint yang terpisah, kemudian menghaluskan dan mengambil sampel ulang jalur tersebut menjadi kurva.

Untuk vertex bersebelahan i dan j, biaya edge graf adalah jarak geometrisnya:

wij=‖xj−xi‖,P∗=arg⁡minP∑(i,j)∈Pwij.

Konstruksi jalur terpendek ini mengikuti permukaan mesh. Konstruksi tersebut tidak menemukan arah pertumbuhan biologis. Akar awal pada titik tinggi hanyalah usulan; kedekatan dengan kulit kepala nantinya dapat membalik arah kurva. Kartu datar sering kali menyediakan jalur yang berguna, sedangkan tudung tertutup atau ikal yang terpisah jauh lebih ambigu.

Ini adalah kandidat kurva panduan, bukan helai rambut individual yang direkonstruksi. Satu kartu dapat mewakili banyak rambut yang terlihat, dan suatu jalur permukaan dapat memotong arah aliran yang dimaksud. Cakupan sian yang padat dapat terlihat mengesankan sembari menyembunyikan arah yang keliru. Pemeriksaan visual tetap menjadi bagian dari pengujian.

Buat akar mengikuti kulit kepala yang sebenarnya ​

Endpoint panduan dicocokkan dengan segitiga kulit kepala yang memenuhi syarat. Jika jaraknya terlalu jauh, kami menolak koneksi tersebut alih-alih meregangkannya secara sembarang ke kepala. Akar yang diterima menyimpan indeks vertex segitiga dan bobot barisentrisnya.

Untuk vertex segitiga a(t), b(t), dan c(t) pada tubuh yang dianimasikan, akar yang terikat adalah

r(t)=λaa(t)+λbb(t)+λcc(t),λa+λb+λc=1,λi≥0.

Bobotnya tetap konstan ketika vertex segitiga bergerak bersama skin. Mengikat seluruh tampilan hanya ke kepala sebelumnya menyisakan penyimpangan akar hingga 0,657 mm dalam pemeriksaan sampel Walk kami. Mengikuti keterikatan segitiga yang tersimpan mengurangi galat tersebut hingga presisi numerik: kurang dari 10−12 meter untuk 74 sampel akar Long01 pada empat waktu animasi.

Ini adalah pemeriksaan konsistensi numerik berdasarkan konvensi meter pada scene. Pemeriksaan ini tidak membuktikan garis rambut yang tepat secara perseptual, jarak bebas permukaan di sepanjang kurva, ataupun kestabilan pada setiap animasi.

Gabungkan fragmen tanpa menyembunyikan ketidakpastian ​

Beberapa gaya rambut tersedia sebagai banyak bagian yang terpisah. Fragmen yang jauh dari kulit kepala mungkin merupakan kelanjutan dari seikat rambut yang sudah terikat. Kami menguji kedua orientasi dan menggabungkannya dengan panduan yang diterima hanya ketika endpoint berdekatan dan arahnya selaras.

Aturan penggabungan saat ini menggunakan batas jarak 25 mm dan dot product tangen di atas 0,5, berdasarkan skala scene ini. Hanya jalur yang telah terikat yang dapat menjadi induk, sehingga siklus dapat dihindari. Panjang kurva, jumlah titik, dan jumlah proses penggabungan dibatasi. Ambang batas ini adalah pilihan prototipe, bukan parameter rambut yang berlaku universal.

Penggabungan menambahkan 1.851 koneksi ke kumpulan yang diterima. Variasi kepang Prancis meningkat dari 136 panduan yang terikat langsung menjadi 509 yang seluruhnya terhubung; kepang berantakan mencapai 512 dari 519. Tujuh fragmen sisanya tetap berwarna oranye. Sebuah koneksi masih perlu ditinjau: geometri yang berdekatan bukanlah bukti bahwa dua bagian berasal dari helai yang sama.

Jelajahi cakupan yang diukur ​

Cari sebuah gaya atau tampilkan hanya gaya yang memiliki panduan yang ditolak. Tautannya membuka tampilan pemeriksaan langsung yang sesuai. Angka-angka ini berasal dari audit tersimpan atas 46 gaya, bukan skor fisika yang dihitung secara berkelanjutan.

46 of 46 styles · saved audit

Unduh hasil keterikatan lengkap.

Seluruh 46 gaya dimuat tanpa galat browser dalam audit tersebut. Proses ekstraksi mengabaikan 90 vertex pada tiga mesh Elvs. Empat pengujian terfokus memeriksa konektivitas, pelaporan bagian yang diabaikan, keterikatan kulit kepala yang dapat direkonstruksi, penggabungan fragmen, dan penolakan fragmen yang jauh. Tampilan desktop dan seluler selebar 390 piksel diperiksa; halaman seluler tidak mengalami overflow horizontal.

Hasil ini mengukur pustaka tersebut setelah disesuaikan dengan katak ini. Hasil tersebut tidak mencakup geometri hasil generasi yang sebarang, semua pose, self-collision, ataupun ekspor ke engine lain.

Apa yang harus dilakukan sebelum ini menjadi fisika rambut? ​

Panduan saat ini menyediakan akar dan kandidat jalur. Adaptor awal kini menggunakan kembali pemecah fixed-step spring, bentuk istirahat, dan kontak yang sudah kami miliki. Pada Long01, adaptor tersebut mengikat 18.204 dari 39.804 vertex mesh ke 24 rantai; satu titik sampel rambut terurai bergerak 13,6 mm relatif terhadap kepala dalam pengujian terkontrol. Ini memverifikasi deformasi sekunder, bukan gerakan alami atau animasi bebas tabrakan. Mesh dan overlay menggunakan bidang skinning yang sama. Arah yang andal, bobot yang koheren pada setiap kelompok rambut, dan pemeriksaan gerakan yang luas masih diperlukan.

Tahap berikutnya adalah meninjau akar dan penggabungan fragmen yang ambigu, meningkatkan pemilihan panduan dan bobot tanpa menyebabkan sobekan di antara kelompok rambut yang terpisah, serta memvalidasi kontak tubuh selama gerakan. Self-contact masih memerlukan pekerjaan tambahan. Proses ekspor dan pemuatan ulang juga harus mempertahankan ikatan tersebut.

Untuk karakter hasil generasi, mengganti permukaan rambut yang terpisah merupakan titik awal yang praktis. Mesh kepala dan rambut yang menyatu menambahkan prasyarat lain: mengidentifikasi wilayah rambut dan membentuk kulit kepala yang dapat digunakan di bawahnya. Eksperimen katak kami tidak menyelesaikan masalah segmentasi tersebut.

Kini kami memiliki hasil antara yang dapat diperiksa: mesh yang telah disesuaikan, kandidat jalur yang eksplisit, keterikatan permukaan yang bergerak, dan penolakan yang terlihat. Peningkatan berikutnya harus membuat jalur-jalur tersebut berperilaku meyakinkan—bukan sekadar menambah jumlah bagian berwarna sian.