Anda dapat men导入 meshes khusus untuk membuat semuanya dari NPC ke kain beranimasi dari perahu layar.Kami menggunakan pengaturan khusus dari Impor 3D untuk membawa lebih banyak karakter khusus, seperti makhluk lubang hitam misterius dan droid layanan ramah, jika tidak menyadari, yang ramah.
Bagian berikut membahas tentang bagaimana kami menggunakan pengait dan kulit , PBR (penampilan permukaan) , dan VFX untuk membangun salah satu karakter paling rumit kami yang kami beri nama "Makhluk." Kami ingin agar bersinar, mengeluarkan cahaya, memiliki jejak asap partikel, dan gerakan cairan yang melibatkan pengait peralatan dengan cukup sendi untuk menciptakan gelombang yang meyakinkan dari tentakelnya.

Peralatan
Ketika kami merigit Makhluk, kami menemukan bahwa terbaik untuk memodelkan karakter dalam posisi netral, karena posisi itu paling cocok untuk melengkung dalam beberapa arah.Jika kita memodelkan Makhluk dengan tentakelnya sudah tersulit, itu akan menyebabkan peregangan jika kita menganimasikan tentakel untuk melengkung ke arah yang berlawanan.Screenshot berikut menunjukkan Makhluk dalam keadaan alaminya:


Dari posisi netral, kami menambahkan sendi secara ekonomis, berfokus pada area yang paling membutuhkan gerakan.Semakin sedikit persambungan yang lebih baik, karena Anda harus mengelolanya saat menguliti karakter Anda, dan Anda akan memiliki lebih sedikit yang dapat dikontrol saat Anda menganimasikannya.Dalam tangkapan layar sebelumnya, Makhluk tampak seperti memiliki banyak persambungan di tengah, tetapi tubuh utama hanya memiliki satu persambungan.
Sebagian besar joint lainnya menuju ke tentakel dan mandibula.Dengan tentakel, kami menginginkan banyak gerakan sekunder, atau gerakan yang bertumpuk, untuk menciptakan efek yang meyakinkan bahwa mereka semua bergerak memiliki.Namun, massa pusat tentakel begitu dekat bersama-sama sehingga terasa sia-sia untuk membuat persambungan untuk semuanya, baik pada kinerja dan upaya untuk menganimasikan.Jadi sebagai gantinya, kami memperlakukan massa pusat sebagai satu tendil besar dengan "ekor" yang lebih kecil di mana ujung meninggalkan massa pusat.

Kami menemukan panduan berikut berguna, sehingga karakter mesh diimpor dengan benar ke Studio:
- Sendi dan tulang individu harus memiliki nama unik.
- Meshes tidak boleh memiliki nama yang sama dengan sendi dan tulang.
- Meshes seharusnya tidak memiliki transformasi sebelum skinning/bind; dengan kata lain, transformasi harus 0 dan skala harus 1.
- Normal mesh harus menghadap ke luar (model seharusnya tidak terlihat di dalam).
- Tengkorak seharusnya tidak memiliki faktor skala; semua sendi harus [1, 1, 1].
Kulit
Ketika kami menyelesaikan kerangka Makhluk, langkah berikutnya adalah melapisi mesh.Pengupasan bisa menjadi tugas yang melelahkan, jadi untuk memudahkan masalah, yang terbaik adalah akrab dengan berbagai pengaturan pengupasan awal dari aplikasi DCC Anda untuk menemukan yang Anda suka.Karena ini adalah karakter organik, kami melapiskannya dengan banyak penurunan pada setiap persatuan dan overlap di antara mereka.Dengan cara ini, penekukan terasa halus dan tidak tajam.Screenshot berikut menunjukkan skinning buruk dan skinning mulus masing-masing:


Kami menemukan panduan berikut yang menghasilkan hasil terbaik untuk pengulit:
- Pengaruh kulit (berarti mereka mempengaruhi bagian model saat dipindahkan) harus maksimal 4 pengaruh per vertex.
- Nama bersama dan mesh harus unik, baik di dalam satu sama lain maupun di antara satu sama lain.
- Setiap joint yang ingin Anda impor ke Studio harus memiliki beberapa pengaruh pada skinning model, jika tidak mesin tidak akan mengimpornya.Setiap kali mungkin, kulit model Anda dalam posisi aslinya atau "bind"-nya.
Impor mesh ke Studio
Mengimpor karakter khusus Anda ke Studio adalah salah satu bagian paling menarik dari proses ini, karena Anda bisa melihat kreasi Anda dalam pengalaman yang Anda membangun kota!
Untuk menge导入网络 ke Studio:
Ekspor karakter dari aplikasi DCC dan pastikan hal mengikuti:
- Semua normal, skala, dan nama benar.
- Karakter memiliki semua hierarki bersama dan tulang dan semua meshes.
- Mesh semuanya di bawah 10.000 segi untuk setiap bagian dari mesh.
- Ukuran total mesh tidak melebihi 2000 unit di setiap sumbu.
- Lihat Persyaratan Mesh untuk daftar lengkap spesifikasi model.
Di dalam Importer 3D, impor file khusus .fbx atau .obj .
Membuat makhluk bersinar
Setelah model Makhluk stabil dan tidak memerlukan lebih banyak impor langsung ke Studio, kami mulai mengumpulkan objek SurfaceAppearance, lampu, dan efek visual.Kami melakukan ini untuk memastikan bahwa kualitas model sudah cukup baik sebelum melanjutkan untuk menempatkan dan mengedit satu aspeknya.

Kami tahu kami ingin Makhluk menjadi gelap, dan titik fokus menjadi mata dan tentakel "grabby"-nya.Titik kontras tinggi cenderung menarik perhatian, jadi memiliki beberapa yang kuat memastikan pemirsa tahu apa yang harus difokuskan.Studio mendukung bahan neon yang bisa menyala sendiri, jadi pada awalnya kami memisahkan mata sehingga mereka bisa menjadi bahan sendiri dari sisa karakter.Kami melakukan sesuatu yang serupa untuk tentakel, sehingga mereka akan bersinar hanya di ujungnya.

Material neon tidak memancarkan cahaya aktual, jadi setelah beberapa pengujian, kami menambahkan bagian terpisah untuk mengontrol penempatan dan arah emisi cahaya.Ini memastikan pencahayaan diparahkan dengan cara untuk meningkatkan kilauan mata dan juga proyek sumber cahaya sendiri.

Perhatikan bahwa SpotLights menambahkan kilatan visual kepada Makhluk yang dekat dengan permukaan lain atau pemain.

Selain itu, kami ingin tentakel Makhluk memancarkan beberapa partikel, sehingga akan meninggalkan jejak asap saat bergerak.Karena tentakel sangat panjang, menambahkan ParticleEmitter ke seluruh tentakel akan membuat partikel dipancarkan dari seluruh tentakel bukan dari ujung.Untuk mengatasi ini, kami menggunakan bagian kecil yang berada dekat akhir tentakel, sehingga kami dapat mengontrol ukuran emisi, penempatan, dan arah partikel.

Buat VFX mengikuti karakter
Posisi mesh karakter berpakaian tidak diperbarui saat Makhluk dianimasi, jadi kami membutuhkan metode untuk memastikan VFX, SFX, dan lampu semuanya mengikuti Makhluk dengan benar.Untuk mencapai ini, kami membuat skrip kontrol VFX dan menggunakan CollectionService untuk memberi tahu bagian-bagian yang berisi VFX di mana tulang makhluk berada dan untuk mengikutinya.
Kami menempatkan berikut ini LocalScript di StarterPlayer → StarterPlayerScripts . Ini pada dasarnya menjalankan fungsi pembaruan VFX.
Skrip Lokal-- Tambahkan potongan ini ke skrip lokal yang ada yang membuat PreSimulation-- hubunganlocal RunService = game:GetService("RunService")local vfx = require(workspace.VfxUpdateModule)RunService.PreSimulation:Connect(vfx.updateVfx)Skrip Modul-- Modul ini menempelkan bagian ke animasi sehingga mereka diperbarui sebagai-- pertunjukan animasi. Ini adalah solusi sementara untuk batasan saat ini-- dengan Sendi dan Tulang dan tidak akan selalu diperlukan.---- Prasyarat:-- Untuk dimasukkan, model membutuhkan tag "AnimatedVfxModel" dan sebuah folder-- dari semua bagian yang ingin Anda sinkronkan dengan animasi. Setiap bagian membutuhkan-- suatu atribut bernama "AttachedBoneName" yang merujuk pada nama dari-- tulang yang ingin Anda pasangkan. Bagian juga harus sudah ada di dalamnya-- posisi yang benar relatif terhadap tulang yang diinginkan.--— Untuk digunakan:-- Skrip Lokal harus memerlukan modul ini, lalu terhubung-- VfxUpdateModule.updateVfx ke acara RunService.PreSimulation.local VfxUpdateModule = {}local CollectionService = game:GetService("CollectionService")-- SETUP - ini harus dijalankan sekali di setiap klien.-- Kumpulkan semua model dengan taglocal vfxModels = CollectionService:GetTagged("AnimatedVfxModel")local vfxTable = {} -- di mana kita akan menyimpan semua bagian dan offset-- Ambilkan tabel untuk setiap model yang akan menampung semua bagian vfx dan offsetfor _, model in vfxModels dovfxTable[model] = {}local vfxParts = model:FindFirstChild("VFX"):GetChildren() -- Temukan folder theVFX-- Temukan tulang melalui atribut dan hitung offset untuk setiap bagian.for _,part in vfxParts dolocal name = part:GetAttribute("AttachedBoneName")local bone = model:FindFirstChild(name, true)if bone thenlocal offset = (bone.TransformedWorldCFrame:inverse() * part.CFrame)vfxTable[model][part] = {bone, offset}elsewarn("Vfx part refers to bone that could not be found.")endendendprint(vfxTable)-- UPDATE - Ini harus terhubung ke RunService.PreSimulation setiap klien-- Pergi melalui semua model, lalu perbarui semua bagian pada model untuk cocok dengan bonecframe.function VfxUpdateModule.updateVfx()for model, vfxParts in vfxTable dofor part, bone in vfxParts dopart.CFrame = bone[1].TransformedWorldCFrame * bone[2]endendendreturn VfxUpdateModuleKami membuat VFXUpdateModule ModuleScript untuk memberi tahu objek yang ditag dengan tepat dengan AnimatedVfxModel untuk diperbarui pada acara bermain.
Kami menandai kelompok model yang diperlukan dengan AnimatedVfxModel menggunakan Editor Tag , yang dapat diakses dari tab Lihat.Menggunakan tag memungkinkan VFXUpdateModule untuk mengetahui objek mana yang harus dicari sebagai anak VFX pertama dan untuk menerapkan update.
Akhirnya, kami menambahkan atribut khusus Nama Tulang Terpasang ke bagian yang ingin kami animasikan dan menambahkan nama tepat dari persatuan yang ingin kami ikuti.
Memperkaya tekstur kreatur
Selanjutnya, kami menyiapkan peta tekstur PBR (Physically Based Rendered).Bitmap kuat ini memberi makhluk variasi kilau dan variasi permukaan untuk membuatnya terlihat seperti memiliki banyak gesekan kecil dan ketidaksempurnaan.Efek visual ini membantu menjual penampilan Makhluk saat lebih dekat dengan pemain.

Inilah cara kami membuat peta tekstur penampilan permukaan:
Peta tekstur untuk karakter ini semuanya ada di satu "lembar" per peta.Ini membuat makhluk lebih efisien dan berarti kita harus berurusan dengan lebih sedikit peta tekstur atau SurfaceAppearance objek.
Untuk area yang perlu bersinar atau dapat diterangi sendiri, seperti "grabby tentakel," kami juga menggunakan transparansi pada SurfaceAppearance untuk bercampur dengan bagian tersebut.
Kami menemukan berguna untuk mengikuti panduan ini saat membuat peta tekstur penampilan permukaan:
- Pastikan peta Anda tidak lebih besar dari 1024×1024.
- Saluran hijau Anda mungkin perlu diputar tergantung pada aplikasi yang Anda kerjakan.
Animasikan makhluk
Animasi sangat subjektif dan memiliki gaya pribadi.Opsi termasuk penangkapan ambil, animasi "key frame" tangan di aplikasi DCC Anda, atau menggunakan Editor Animasi Kuat Studio.
Seperti yang kami sebutkan sebelumnya, kami ingin memastikan kami memiliki cukup banyak persyaratan untuk gerakan cairan serta cukup banyak anggota tubuh, sehingga animasi makhluk terasa alami dan "berlapis." Layering, juga dikenal sebagai gerakan sekunder, adalah sesuatu yang Anda lihat dalam kehidupan sehari-hari - ketika Anda melemparkan lengan Anda, setiap sendi bereaksi terhadap dorongan awal dari lengan atas Anda, dan setiap sendi di tubuh Anda tidak bergerak atau beristirahat pada saat yang sama.
Kami menggunakan teknik ini untuk menganimasikan Makhluk untuk merasa seperti anggota tubuhnya bereaksi terhadap gerakan yang dipengaruhi tubuhnya seperti yang ditunjukkan di sini:

Jika menggunakan aplikasi DCC eksternal untuk animasi, kami menemukan panduan berikut bekerja paling baik:
- Tetapkan tingkat frame ke setidaknya 30 FPS.
- Buat animasi Anda dengan karakter yang sama yang Anda terapkan kepadanya.
- Ekspor data animasi Anda sebagai file terpisah .fbx .
Karena kami menganimasikan karakter di luar Studio, kami perlu menggunakan Editor Animasi untuk mengimpor file animasi .fbx.Editor memungkinkan Anda memilih avatar mana pun dengan sendi atau motor dan mengemudikannya melalui titik-titik di timeline.
Untuk menge导入 animasi:
Di tab Avatar di bilah alat, buka Editor Animasi .
Pilih karakter berkerang yang ingin Anda animasikan di Roblox. Karakter harus sama dengan yang Anda keringkan di aplikasi DCC eksternal Anda.
Klik tombol ⋯ di bagian atas kiri jendela editor, pilih Impor dari Animasi FBX , dan temukan file animasi .fbx yang diekspor.
Ketika Anda puas dengan animasi Anda, Anda dapat mengekspornya untuk menemukan ID animasi, yang kemudian dapat Anda gunakan dalam skrip Roblox untuk menjalankannya.Sebagai contoh, Anda dapat menambahkan Script ke kelompok model karakter yang diimpor dan menggunakan kode berikut untuk menjalankan animasi:
local animationId = "YOUR_ANIMATION_ID"local char = script.Parentlocal animController = char:FindFirstChildWhichIsA("Humanoid") or char:FindFirstChildOfClass("AnimationController")local animation = Instance.new("Animation")animation.AnimationId = "rbxassetid://" .. tostring(animationId)local animTrack = animController:LoadAnimation(animation)animTrack:Play(0, 1, 1)
Hasil akhir
Setelah beberapa penyesuaian akhir untuk warna, kecerahan cahaya, dan beberapa efek partikel lagi untuk memberikan efek halo yang lebih kuat di depan jendela, inilah hasil akhir di stasiun ruang angkasa!
