Selamat siang Nama saya Daria, saya seniman 3d di studio produksi RainStyle. Kami saat ini sedang mengembangkan game horor Sci-fi yang disebut
"On Air" .

Permainan ini bercerita tentang peristiwa misterius yang terjadi dengan tokoh utama, yang secara tidak sengaja menginap di hotel American Algol. Kejadian ini benar-benar akan mengubah hidupnya dan membuatnya menghadapi hal yang tidak diketahui.
Ini adalah proyek game pertama kami dan di dalamnya kami mencoba untuk mencapai realisme maksimum karakter, menyampaikan emosi dan karakter mereka. Oleh karena itu, untuk membuatnya, diputuskan untuk menggunakan teknologi pemindaian wajah. Sebagai bagian dari tujuan proyek, kita membutuhkan dua derajat detail untuk karakter: untuk rendering - untuk sinematik dan poli rendah - untuk digunakan dalam game itu sendiri.
Game On Air sedang dikembangkan di Unreal Engine 4. Kami berencana untuk menulis beberapa artikel di mana kami akan menjelaskan secara rinci tahapan persiapan karakter.
Saat ini, kami sedang membuat versi demo permainan, yang akan segera muncul di Steam. Pada artikel ini saya akan berbicara tentang tahap awal menciptakan wajah karakter utama permainan kami.

Bagian 1
Gambar di bawah ini menunjukkan beberapa emosi yang kami terima setelah memproses pindaian.

Pada dasarnya mereka dilebih-lebihkan dan sepertinya tidak realistis. Ini dilakukan dengan sengaja. Faktanya adalah bahwa dasar dari metode menciptakan wajah ini adalah prinsip pencampuran bentuk-bentuk "Bentuk campuran". Artinya, masing-masing emosi ini akan diterapkan bukan dalam bentuk "murni", tetapi dalam kombinasi dengan yang lain. Saya akan berbicara lebih banyak tentang ini di akhir artikel. Pertama, Anda perlu mencari tahu apa yang harus dilakukan dengan kepala yang dipindai dan bagaimana kami dapat menggunakannya. Jelas, topologi pemindaian tidak memungkinkan menggunakannya sebagai model, tetapi dengan memanggang peta normal kita mendapatkan fitur utama wajah, keriput, pori-pori, benjolan atau bekas luka. Juga dari pemindaian kita dapat mengekstraksi tekstur warna dasar.

Program Wrap 3.3 akan membantu kami dalam hal ini. Ini banyak digunakan untuk memproses model yang dipindai. Dengan bantuannya, kami akan memproyeksikan model kepala masa depan kami ke pindaian.
Bagian 2
Pertama, Anda perlu membuat apa yang disebut mesh dasar. Artinya, ekspresi wajah netral yang akan mendasari semua emosi. Pemindaian emosi netral kami terlihat seperti ini:

Program Wrap 3.3 memiliki sistem simpul, yaitu, semua fungsi disajikan dalam bentuk simpul (simpul) yang dihubungkan bersama oleh sebuah rantai.
Pemilihan node dilakukan menggunakan tombol Tab. Menggunakan node LoadGeom dan LoadImage, pemindaian dengan emosi netral dan tekstur yang sesuai dimuat. Untuk melakukan ini, tentukan path di jendela Nama File. Dalam pengaturan simpul "LoadGeom", Anda dapat memilih berbagai mode untuk menampilkan geometri (fungsi rangka gambar dinonaktifkan pada gambar di bawah). Di sini Anda juga dapat mengubah warna geometri (tidak berfungsi jika teksturnya terhubung), koordinat dan skala.

Selanjutnya, Anda perlu memuat jala dasar, yang akan diproyeksikan ke pemindaian ini. Anda dapat menemukannya di tab "Galeri". Di sini ada banyak emosi siap pakai. Dalam hal ini, saya memilih Basemesh.

Basemesh harus dicocokkan dengan pemindaian. Untuk melakukan ini, Anda dapat menggunakan sumbu koordinat.
Untuk memproyeksikan mesh dasar ke pemindaian, saya menggunakan simpul Pembungkus. Saat Anda mengarahkan mouse di atas simpul, petunjuk ditampilkan: simpul pertama, Geometri mengambang - untuk geometri yang diproyeksikan, simpul kedua, geometri Fixet - untuk objek tetap yang diproyeksikan geometri (dalam kasus kami, ini adalah pemindaian dengan emosi netral).

Untuk memulai perhitungan, perlu menandai poin pada kedua model yang akan saling berhubungan. Untuk ini, Pilih titik node digunakan, yang terhubung ke node yang sesuai dari model. Setelah memilih simpul ini, pergi ke tab Editor Visual. Fungsi Sync views yang disertakan memungkinkan Anda untuk menyinkronkan kamera untuk jendela kiri dan kanan.

Jika model yang diproyeksikan berisi poligon yang harus tetap ada, Anda harus memilihnya menggunakan fungsi Select Polygons. Jika tidak, artefak dapat muncul terkait dengan detail internal mesh.

Untuk menggunakan simpul Pilih Poligon, gunakan tab Editor Visual. Di sini Anda dapat memilih poligon yang Model dari galeri dibagi menjadi polygroup, ini menyederhanakan tugas: mereka dapat dipilih atau tidak dipilih pada panel atas.
Saya menyoroti bagian internal tenggorokan, lubang hidung, kelopak mata yang ekstrem dan leher bagian bawah.


Setelah itu, model akan diproyeksikan dengan benar.

Juga, untuk rincian lebih lanjut, Anda bisa menggunakan simpul Subdivide. Terhubung ke basis mesh dan semua node di bawah terhubung ke simpul yang lebih rendah (Output).

Selanjutnya, panggang tekstur dari pemindaian ke jala dasar. Untuk ini, simpul Transfer Texture digunakan. Node geometri sumber terhubung ke model yang akan dipanggang teksturnya. Dalam kasus kami, ini adalah pemindaian. Node geometri Target terhubung ke basis mesh, tetapi tidak ke node LoadGeom, tetapi ke node Wrapping, karena kita akan menggunakan geometri yang sudah dimodifikasi dan diproyeksikan.

Dalam pengaturan simpul ini, Anda dapat memilih kualitas tekstur yang dipanggang. Setelah itu, ada baiknya menambahkan simpul Extrapolate Image untuk mengisi tempat transparan, dan menyimpan tekstur yang dihasilkan menggunakan simpul Save Image dan menekan tombol Compute current frame. Geometri disimpan dengan cara yang sama menggunakan simpul Simpan Geom.

Bagian 3
Setelah kami mendapatkan emosi dan tekstur netral untuk itu, kami dapat beralih ke mendapatkan geometri untuk emosi lain. Untuk melakukan ini, muat model pemindaian dan Basemesh dengan tekstur.

Selanjutnya, Anda perlu menyelaraskan Basemesh sesuai dengan pemindaian. Sebagai permulaan, Anda dapat membandingkan model yang kira-kira menggunakan sumbu koordinat.

Sebuah simpul yang memungkinkan Anda untuk menyelaraskan model relatif lebih akurat satu sama lain - Penyelarasan Kaku. Node geometri Terapung menghubungkan geometri yang perlu disejajarkan. Dalam simpul geometri tetap, masing-masing, akan ada geometri statis (dalam kasus kami, ini adalah pemindaian).

Saat menggunakan simpul Penyelarasan Kaku, Anda harus menggunakan simpul Poin Pilih:

Model saya memiliki penanda kontrol yang menyederhanakan tugas memilih poin. Untuk menyelaraskan model dengan saling menghormati, poin harus ditempatkan pada bagian-bagian wajah yang sedikit berubah ketika menggambarkan emosi tertentu. Dalam hal emosi ini, ini adalah dahi, bagian atas hidung, leher, dll. Juga, disarankan untuk menempatkan titik di semua sisi model (yaitu, misalnya, tidak hanya di wajah, tetapi juga di belakang kepala dan telinga).

Akibatnya, kami mendapatkan model yang selaras satu sama lain:

Dalam pengaturan node Alignment Kaku, ada fungsi "Match skale". Ini digunakan jika model perlu diskalakan juga.
Setelah itu, Anda dapat mulai memproyeksikan mesh dasar ke pemindaian. Untuk ini, kita akan menggunakan simpul Pembungkus Aliran Optik. Ini memungkinkan Anda untuk menyelaraskan geometri sesuai dengan tekstur pemindaian. Pada saat yang sama, tekstur emosi yang dihasilkan sepenuhnya akan bertepatan dengan tekstur dasar mesh, dengan pengecualian kerutan, kerutan, dan perubahan lainnya. Semua penyimpangan kulit dan pori-pori saat menggunakan metode ini tetap ada.

Sebelum menggunakan aliran optik, seperti pada kasus pertama, simpul Select Polygons digunakan:

Dengan demikian, bagian kepala yang tetap akan tetap di tempatnya.
Anda juga dapat menggunakan simpul Select Points. Inilah poin-poin pada bagian-bagian wajah yang bergerak:

Selanjutnya, buka pengaturan aliran optik. Kamera yang dapat disesuaikan muncul di jendela Editor Visual di sekitar model.

Di bagian atas ada menu drop-down yang dapat digunakan untuk melihat dari kamera. Ada 13 secara default. Anda perlu mengaturnya agar wajah benar-benar pas ke dalam bingkai.

Atas rekomendasi pengembang, saya meninggalkan hampir semua pengaturan secara default dengan pengecualian parameter final Resolution dan Optical smoothness flow:

Setelah itu, Anda dapat mengklik Hitung dan lihat hasilnya:

Setelah jaring diproyeksikan ke pemindaian, Anda perlu memanggang tekstur. ini dilakukan sesuai dengan prinsip yang sama seperti pada bagian pertama artikel:

Akibatnya, jika Anda menggabungkan tekstur yang dihasilkan dengan tekstur jala dasar, beberapa detail akan ditambahkan, tetapi pada saat yang sama, titik kontrol akan bertepatan:

Setelah itu, tekstur dan geometri yang dihasilkan dapat disimpan.

Hasilnya, kami mendapat jalinan emosi baru dengan tekstur.
Bagian 4
Metode Blend bentuk memungkinkan Anda untuk "mencampur emosi". Untuk melakukan ini, muat jerat yang sudah diterima di simpul bentuk Blend.

Saya memasukkan emosi netral ke simpul pertama. Memindahkan slider dalam pengaturan node, Anda dapat memilih seberapa kuat emosi ini atau itu akan diekspresikan. Agar metode ini berfungsi, model harus memiliki topologi yang sama.


Hasil
Proses di atas hanya sebagian kecil dari pekerjaan yang sangat produktif. Setelah menerima model kepala LowPoly, perlu untuk membuat peta normal, kekasaran, bawah permukaan, dll., Serta mengonfigurasi shader (dalam kasus kami, kami mengonfigurasi shader untuk render dan untuk engine). Mata, pakaian, dan rambut juga dibuat secara terpisah. Perlu juga dicatat bahwa hanya tiga orang yang melakukan tugas ini. Ini adalah pengalaman pertama kami dalam menciptakan karakter yang sangat detail. Kami puas dengan hasilnya, tetapi kami akan berusaha lebih keras.
